From e7023ebec3f8967df471cd9b27ce56dc0f3dff53 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Fri, 19 Dec 2025 02:38:10 -0800 Subject: [PATCH 01/41] [Automation] Generate SDK based on TypeSpec 0.37.4 (#47582) --- eng/emitter-package-lock.json | 130 +++++++++++++++++----------------- eng/emitter-package.json | 4 +- 2 files changed, 67 insertions(+), 67 deletions(-) diff --git a/eng/emitter-package-lock.json b/eng/emitter-package-lock.json index 947829669c3d..ce90e9a7c675 100644 --- a/eng/emitter-package-lock.json +++ b/eng/emitter-package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "dependencies": { - "@azure-tools/typespec-java": "0.37.3" + "@azure-tools/typespec-java": "0.37.4" }, "devDependencies": { "@azure-tools/typespec-autorest": "0.63.0", @@ -14,7 +14,7 @@ "@azure-tools/typespec-azure-rulesets": "0.63.0", "@azure-tools/typespec-client-generator-core": "0.63.0", "@azure-tools/typespec-liftr-base": "0.11.0", - "@typespec/compiler": "1.7.0", + "@typespec/compiler": "1.7.1", "@typespec/http": "1.7.0", "@typespec/openapi": "1.7.0", "@typespec/rest": "0.77.0", @@ -173,9 +173,9 @@ } }, "node_modules/@azure-tools/typespec-java": { - "version": "0.37.3", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-java/-/typespec-java-0.37.3.tgz", - "integrity": "sha512-YWnf3kQL0qm+5ajGp2fXyv1mG26l63A8QQfm25wklgyRnLACbCdNqSyneOUsbcvIAh7D5/l1Q/Vg6kABZDTBiQ==", + "version": "0.37.4", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-java/-/typespec-java-0.37.4.tgz", + "integrity": "sha512-aK3FSeJ/Ik5p9KZePNgybuuPLc8kIPVZ8iHJAVJn7c+ra0Uv85SpA1A8B2nWu8LlCMMJxb8rel5X3sdVWQWC/g==", "license": "MIT", "dependencies": { "@autorest/codemodel": "~4.20.1", @@ -192,7 +192,7 @@ "@azure-tools/typespec-azure-rulesets": ">=0.63.0 <1.0.0", "@azure-tools/typespec-client-generator-core": ">=0.63.0 <1.0.0", "@azure-tools/typespec-liftr-base": ">=0.11.0 <1.0.0", - "@typespec/compiler": "^1.7.0", + "@typespec/compiler": "^1.7.1", "@typespec/http": "^1.7.0", "@typespec/openapi": "^1.7.0", "@typespec/rest": ">=0.77.0 <1.0.0", @@ -238,13 +238,13 @@ } }, "node_modules/@inquirer/checkbox": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.0.2.tgz", - "integrity": "sha512-iTPV4tMMct7iOpwer5qmTP7gjnk1VQJjsNfAaC2b8Q3qiuHM3K2yjjDr5u1MKfkrvp2JD4Flf8sIPpF21pmZmw==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.0.3.tgz", + "integrity": "sha512-xtQP2eXMFlOcAhZ4ReKP2KZvDIBb1AnCfZ81wWXG3DXLVH0f0g4obE0XDPH+ukAEMRcZT0kdX2AS1jrWGXbpxw==", "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.2", - "@inquirer/core": "^11.0.2", + "@inquirer/core": "^11.1.0", "@inquirer/figures": "^2.0.2", "@inquirer/type": "^4.0.2" }, @@ -261,12 +261,12 @@ } }, "node_modules/@inquirer/confirm": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.2.tgz", - "integrity": "sha512-A0/13Wyi+8iFeNDX6D4zZYKPoBLIEbE4K/219qHcnpXMer2weWvaTo63+2c7mQPPA206DEMSYVOPnEw3meOlCw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.3.tgz", + "integrity": "sha512-lyEvibDFL+NA5R4xl8FUmNhmu81B+LDL9L/MpKkZlQDJZXzG8InxiqYxiAlQYa9cqLLhYqKLQwZqXmSTqCLjyw==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.0.2", + "@inquirer/core": "^11.1.0", "@inquirer/type": "^4.0.2" }, "engines": { @@ -282,9 +282,9 @@ } }, "node_modules/@inquirer/core": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.0.2.tgz", - "integrity": "sha512-lgMRx/n02ciiNELBvFLHtmcjbV5tf5D/I0UYfCg2YbTZWmBZ10/niLd3IjWBxz8LtM27xP+4oLEa06Slmb7p7A==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.0.tgz", + "integrity": "sha512-+jD/34T1pK8M5QmZD/ENhOfXdl9Zr+BrQAUc5h2anWgi7gggRq15ZbiBeLoObj0TLbdgW7TAIQRU2boMc9uOKQ==", "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.2", @@ -308,12 +308,12 @@ } }, "node_modules/@inquirer/editor": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.0.2.tgz", - "integrity": "sha512-pXQ4Nf0qmFcJuYB6NlcIIxH6l6zKOwNg1Jh/ZRdKd2dTqBB4OXKUFbFwR2K4LVXVtq15ZFFatBVT+rerYR8hWQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.0.3.tgz", + "integrity": "sha512-wYyQo96TsAqIciP/r5D3cFeV8h4WqKQ/YOvTg5yOfP2sqEbVVpbxPpfV3LM5D0EP4zUI3EZVHyIUIllnoIa8OQ==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.0.2", + "@inquirer/core": "^11.1.0", "@inquirer/external-editor": "^2.0.2", "@inquirer/type": "^4.0.2" }, @@ -330,12 +330,12 @@ } }, "node_modules/@inquirer/expand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.2.tgz", - "integrity": "sha512-siFG1swxfjFIOxIcehtZkh+KUNB/YCpyfHNEGu+nC/SBXIbgUWibvThLn/WesSxLRGOeSKdNKoTm+GQCKFm6Ww==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.3.tgz", + "integrity": "sha512-2oINvuL27ujjxd95f6K2K909uZOU2x1WiAl7Wb1X/xOtL8CgQ1kSxzykIr7u4xTkXkXOAkCuF45T588/YKee7w==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.0.2", + "@inquirer/core": "^11.1.0", "@inquirer/type": "^4.0.2" }, "engines": { @@ -381,12 +381,12 @@ } }, "node_modules/@inquirer/input": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.2.tgz", - "integrity": "sha512-hN2YRo1QiEc9lD3mK+CPnTS4TK2RhCMmMmP4nCWwTkmQL2vx9jPJWYk+rbUZpwR1D583ZJk1FI3i9JZXIpi/qg==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.3.tgz", + "integrity": "sha512-4R0TdWl53dtp79Vs6Df2OHAtA2FVNqya1hND1f5wjHWxZJxwDMSNB1X5ADZJSsQKYAJ5JHCTO+GpJZ42mK0Otw==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.0.2", + "@inquirer/core": "^11.1.0", "@inquirer/type": "^4.0.2" }, "engines": { @@ -402,12 +402,12 @@ } }, "node_modules/@inquirer/number": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.2.tgz", - "integrity": "sha512-4McnjTSYrlthNW1ojkkmP75WLRYhQs7GXm6pDDoIrHqJuV5uUYwfdbB0geHdaKMarAqJQgoOVjzIT0jdWCsKew==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.3.tgz", + "integrity": "sha512-TjQLe93GGo5snRlu83JxE38ZPqj5ZVggL+QqqAF2oBA5JOJoxx25GG3EGH/XN/Os5WOmKfO8iLVdCXQxXRZIMQ==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.0.2", + "@inquirer/core": "^11.1.0", "@inquirer/type": "^4.0.2" }, "engines": { @@ -423,13 +423,13 @@ } }, "node_modules/@inquirer/password": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.2.tgz", - "integrity": "sha512-oSDziMKiw4G2e4zS+0JRfxuPFFGh6N/9yUaluMgEHp2/Yyj2JGwfDO7XbwtOrxVrz+XsP/iaGyWXdQb9d8A0+g==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.3.tgz", + "integrity": "sha512-rCozGbUMAHedTeYWEN8sgZH4lRCdgG/WinFkit6ZPsp8JaNg2T0g3QslPBS5XbpORyKP/I+xyBO81kFEvhBmjA==", "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.2", - "@inquirer/core": "^11.0.2", + "@inquirer/core": "^11.1.0", "@inquirer/type": "^4.0.2" }, "engines": { @@ -445,21 +445,21 @@ } }, "node_modules/@inquirer/prompts": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.0.2.tgz", - "integrity": "sha512-2zK5zY48fZcl6+gG4eqOC/UzZsJckHCRvjXoLuW4D8LKOCVGdcJiSKkLnumSZjR/6PXPINDGOrGHqNxb+sxJDg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.1.0.tgz", + "integrity": "sha512-LsZMdKcmRNF5LyTRuZE5nWeOjganzmN3zwbtNfcs6GPh3I2TsTtF1UYZlbxVfhxd+EuUqLGs/Lm3Xt4v6Az1wA==", "license": "MIT", "dependencies": { - "@inquirer/checkbox": "^5.0.2", - "@inquirer/confirm": "^6.0.2", - "@inquirer/editor": "^5.0.2", - "@inquirer/expand": "^5.0.2", - "@inquirer/input": "^5.0.2", - "@inquirer/number": "^4.0.2", - "@inquirer/password": "^5.0.2", - "@inquirer/rawlist": "^5.0.2", - "@inquirer/search": "^4.0.2", - "@inquirer/select": "^5.0.2" + "@inquirer/checkbox": "^5.0.3", + "@inquirer/confirm": "^6.0.3", + "@inquirer/editor": "^5.0.3", + "@inquirer/expand": "^5.0.3", + "@inquirer/input": "^5.0.3", + "@inquirer/number": "^4.0.3", + "@inquirer/password": "^5.0.3", + "@inquirer/rawlist": "^5.1.0", + "@inquirer/search": "^4.0.3", + "@inquirer/select": "^5.0.3" }, "engines": { "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" @@ -474,12 +474,12 @@ } }, "node_modules/@inquirer/rawlist": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.0.2.tgz", - "integrity": "sha512-AcNALEdQKUQDeJcpC1a3YC53m1MLv+sMUS+vRZ8Qigs1Yg3Dcdtmi82rscJplogKOY8CXkKW4wvVwHS2ZjCIBQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.1.0.tgz", + "integrity": "sha512-yUCuVh0jW026Gr2tZlG3kHignxcrLKDR3KBp+eUgNz+BAdSeZk0e18yt2gyBr+giYhj/WSIHCmPDOgp1mT2niQ==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.0.2", + "@inquirer/core": "^11.1.0", "@inquirer/type": "^4.0.2" }, "engines": { @@ -495,12 +495,12 @@ } }, "node_modules/@inquirer/search": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.0.2.tgz", - "integrity": "sha512-hg63w5toohdzE65S3LiGhdfIL0kT+yisbZARf7zw65PvyMUTutTN3eMAvD/B6y/25z88vTrB7kSB45Vz5CbrXg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.0.3.tgz", + "integrity": "sha512-lzqVw0YwuKYetk5VwJ81Ba+dyVlhseHPx9YnRKQgwXdFS0kEavCz2gngnNhnMIxg8+j1N/rUl1t5s1npwa7bqg==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.0.2", + "@inquirer/core": "^11.1.0", "@inquirer/figures": "^2.0.2", "@inquirer/type": "^4.0.2" }, @@ -517,13 +517,13 @@ } }, "node_modules/@inquirer/select": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.0.2.tgz", - "integrity": "sha512-JygTohvQxSNnvt7IKANVlg/eds+yN5sLRilYeGc4ri/9Aqi/2QPoXBMV5Cz/L1VtQv63SnTbPXJZeCK2pSwsOA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.0.3.tgz", + "integrity": "sha512-M+ynbwS0ecQFDYMFrQrybA0qL8DV0snpc4kKevCCNaTpfghsRowRY7SlQBeIYNzHqXtiiz4RG9vTOeb/udew7w==", "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.2", - "@inquirer/core": "^11.0.2", + "@inquirer/core": "^11.1.0", "@inquirer/figures": "^2.0.2", "@inquirer/type": "^4.0.2" }, @@ -616,9 +616,9 @@ } }, "node_modules/@typespec/compiler": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.7.0.tgz", - "integrity": "sha512-KE2t5I7u/33M/nsIxdng06FUPrqaGSbMsSEsv51eMwYnj3v1+Z3qTTX/dxHAXRXHcfadNlX/NtyAKju+pkMTFQ==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.7.1.tgz", + "integrity": "sha512-sb3MEsKjFlAx8ZG484exs5Ec+JwmYf2anJqLjMusrV3rRMUhv3fbEulk9MD+l4eOkBS46VMNGqRu0wTn8suVVA==", "license": "MIT", "dependencies": { "@babel/code-frame": "~7.27.1", diff --git a/eng/emitter-package.json b/eng/emitter-package.json index 5acfee2a87a1..5b9bf7f6157f 100644 --- a/eng/emitter-package.json +++ b/eng/emitter-package.json @@ -1,7 +1,7 @@ { "main": "dist/src/index.js", "dependencies": { - "@azure-tools/typespec-java": "0.37.3" + "@azure-tools/typespec-java": "0.37.4" }, "devDependencies": { "@azure-tools/typespec-autorest": "0.63.0", @@ -10,7 +10,7 @@ "@azure-tools/typespec-azure-rulesets": "0.63.0", "@azure-tools/typespec-client-generator-core": "0.63.0", "@azure-tools/typespec-liftr-base": "0.11.0", - "@typespec/compiler": "1.7.0", + "@typespec/compiler": "1.7.1", "@typespec/http": "1.7.0", "@typespec/openapi": "1.7.0", "@typespec/rest": "0.77.0", From 5cebfe00fdfec9df9aa50ad402b1de9b67d19a58 Mon Sep 17 00:00:00 2001 From: amber-yujueWang Date: Fri, 19 Dec 2025 13:53:55 -0800 Subject: [PATCH 02/41] llm-speech-transcription sdk (#47172) * checkout from speech-transcription folder * update after renaming * refactoring * Updated dependency versions * fix spell check * Add spell check dictionary entries and version configuration * test cusomization * renamed setmodels to clarify * map from int to duration * add ci and pom.xml and retest customization * fix enable field * fix enable field * move AudioFileDetails into TranscriptionOptions and add 2 constructor overloads * update test * change constructor to transcribe(TranscriptionOptions options) * update test * fix linting * add codeowner * add codeowner * add release date * update changelog * add response * update sample, readme, tests * update tsp files * update version_client * regenerate sdk from typespec * adding javadoc for customized function * update samples * fix cspell * fix cspell * fix codeownerlint * fix cspell * fix codeowner lint * update tests * update broken links * checkout cspell * update readme and modify enabled property for EnhancedModeOptions * modify enhanceed mode customization * modify enhanceed mode customization and update readme * created a new service directory to put all the transcription SDK's under * update tsp commit * fetch previous recording * redo recording test * undo changes to pom.xml in previous package service --- .github/CODEOWNERS | 7 + eng/versioning/version_client.txt | 1 + pom.xml | 1 + .../CHANGELOG.md | 7 + .../azure-ai-speech-transcription/README.md | 305 ++++++++++++ .../azure-ai-speech-transcription/assets.json | 1 + .../azure-ai-speech-transcription/cspell.json | 16 + .../customization/pom.xml | 48 ++ .../SpeechTranscriptionCustomization.java | 442 ++++++++++++++++++ .../azure-ai-speech-transcription/pom.xml | 71 +++ .../TranscriptionAsyncClient.java | 178 +++++++ .../transcription/TranscriptionClient.java | 174 +++++++ .../TranscriptionClientBuilder.java | 356 ++++++++++++++ .../TranscriptionServiceVersion.java | 40 ++ .../MultipartFormDataHelper.java | 209 +++++++++ .../TranscriptionClientImpl.java | 284 +++++++++++ .../implementation/package-info.java | 9 + .../models/AudioFileDetails.java | 119 +++++ .../models/ChannelCombinedPhrases.java | 104 +++++ .../models/EnhancedModeOptions.java | 163 +++++++ .../models/PhraseListOptions.java | 123 +++++ .../models/ProfanityFilterMode.java | 69 +++ .../models/TranscribedPhrase.java | 237 ++++++++++ .../transcription/models/TranscribedWord.java | 127 +++++ .../models/TranscriptionContent.java | 73 +++ .../TranscriptionDiarizationOptions.java | 115 +++++ .../models/TranscriptionOptions.java | 350 ++++++++++++++ .../models/TranscriptionResult.java | 130 ++++++ .../transcription/models/package-info.java | 9 + .../ai/speech/transcription/package-info.java | 9 + .../src/main/java/module-info.java | 12 + ...eech-transcription_apiview_properties.json | 23 + ...zure-ai-speech-transcription_metadata.json | 1 + .../azure-ai-speech-transcription.properties | 2 + .../src/samples/assets/sample-audio.wav | Bin 0 -> 764562 bytes .../src/samples/assets/sample-profanity.wav | Bin 0 -> 135648 bytes .../transcription/EnhancedModeSample.java | 146 ++++++ .../azure/ai/speech/transcription/README.md | 260 +++++++++++ .../speech/transcription/ReadmeSamples.java | 423 +++++++++++++++++ .../TranscribeAudioFileSample.java | 59 +++ .../TranscribeFromUrlSample.java | 64 +++ .../TranscribeMultiLanguageSample.java | 108 +++++ .../TranscribeWithDiarizationSample.java | 86 ++++ .../TranscribeWithPhraseListSample.java | 97 ++++ .../TranscribeWithProfanityFilterSample.java | 80 ++++ ...riptionAsyncClientJavaDocCodeSnippets.java | 215 +++++++++ ...ranscriptionClientJavaDocCodeSnippets.java | 164 +++++++ .../azure/ai/speech/transcription/README.md | 214 +++++++++ .../TranscriptionAsyncClientTest.java | 273 +++++++++++ .../TranscriptionClientTest.java | 226 +++++++++ .../TranscriptionClientTestBase.java | 337 +++++++++++++ .../TranscriptionClientTestBase.java | 41 ++ .../azure/ai/speech/transcription/sample.wav | Bin 0 -> 764562 bytes .../org.mockito.plugins.MockMaker | 1 + .../tsp-location.yaml | 4 + sdk/transcription/ci.yml | 46 ++ sdk/transcription/pom.xml | 14 + 57 files changed, 6673 insertions(+) create mode 100644 sdk/transcription/azure-ai-speech-transcription/CHANGELOG.md create mode 100644 sdk/transcription/azure-ai-speech-transcription/README.md create mode 100644 sdk/transcription/azure-ai-speech-transcription/assets.json create mode 100644 sdk/transcription/azure-ai-speech-transcription/cspell.json create mode 100644 sdk/transcription/azure-ai-speech-transcription/customization/pom.xml create mode 100644 sdk/transcription/azure-ai-speech-transcription/customization/src/main/java/SpeechTranscriptionCustomization.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/pom.xml create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionAsyncClient.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionClient.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionClientBuilder.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionServiceVersion.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/MultipartFormDataHelper.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/TranscriptionClientImpl.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/package-info.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/AudioFileDetails.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/ChannelCombinedPhrases.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/EnhancedModeOptions.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/PhraseListOptions.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/ProfanityFilterMode.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscribedPhrase.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscribedWord.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionContent.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionDiarizationOptions.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionOptions.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionResult.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/package-info.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/package-info.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/java/module-info.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/resources/META-INF/azure-ai-speech-transcription_apiview_properties.json create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/resources/META-INF/azure-ai-speech-transcription_metadata.json create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/main/resources/azure-ai-speech-transcription.properties create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/samples/assets/sample-audio.wav create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/samples/assets/sample-profanity.wav create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/EnhancedModeSample.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/README.md create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/ReadmeSamples.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeAudioFileSample.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeFromUrlSample.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeMultiLanguageSample.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeWithDiarizationSample.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeWithPhraseListSample.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeWithProfanityFilterSample.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/javadoccodesnippets/TranscriptionAsyncClientJavaDocCodeSnippets.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/javadoccodesnippets/TranscriptionClientJavaDocCodeSnippets.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/README.md create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionAsyncClientTest.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTest.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTestBase.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/generated/TranscriptionClientTestBase.java create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/sample.wav create mode 100644 sdk/transcription/azure-ai-speech-transcription/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker create mode 100644 sdk/transcription/azure-ai-speech-transcription/tsp-location.yaml create mode 100644 sdk/transcription/ci.yml create mode 100644 sdk/transcription/pom.xml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2ffd505394f5..6bb9cdd4ab4f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -262,6 +262,13 @@ # ServiceLabel: %Cognitive - Speech # ServiceOwners: @rhurey +# PRLabel: %Speech Transcription +/sdk/transcription/azure-ai-speech-transcription/ @amber-yujueWang @rhurey @xitzhang @Azure/azure-java-sdk + +# ServiceLabel: %Speech Transcription +# AzureSdkOwners: @amber-yujueWang @rhurey @xitzhang +# ServiceOwners: @rhurey @xitzhang @amber-yujueWang + # PRLabel: %Cognitive - Text Analytics /sdk/textanalytics/ @samvaity @quentinRobinson @Azure/azure-java-sdk diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index 842251986c0d..37c62f75daba 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -53,6 +53,7 @@ com.azure:azure-ai-openai-realtime;1.0.0-beta.1;1.0.0-beta.1 com.azure:azure-ai-openai-stainless;1.0.0-beta.1;1.0.0-beta.1 com.azure:azure-ai-personalizer;1.0.0-beta.1;1.0.0-beta.2 com.azure:azure-ai-projects;1.0.0-beta.3;1.0.0-beta.4 +com.azure:azure-ai-speech-transcription;1.0.0-beta.1;1.0.0-beta.1 com.azure:azure-ai-textanalytics;5.5.11;5.6.0-beta.1 com.azure:azure-ai-textanalytics-perf;1.0.0-beta.1;1.0.0-beta.1 com.azure:azure-ai-translation-text;1.1.7;2.0.0-beta.1 diff --git a/pom.xml b/pom.xml index 8c702d55c621..020e7eae65cd 100644 --- a/pom.xml +++ b/pom.xml @@ -265,6 +265,7 @@ sdk/timeseriesinsights sdk/tools sdk/trafficmanager + sdk/transcription sdk/translation sdk/trustedsigning sdk/vision diff --git a/sdk/transcription/azure-ai-speech-transcription/CHANGELOG.md b/sdk/transcription/azure-ai-speech-transcription/CHANGELOG.md new file mode 100644 index 000000000000..e62d01580eee --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/CHANGELOG.md @@ -0,0 +1,7 @@ +# Release History + +## 1.0.0-beta.1 (2025-12-19) + +### Features Added + +- Initial release of Azure AI Speech Transcription client library for Java. diff --git a/sdk/transcription/azure-ai-speech-transcription/README.md b/sdk/transcription/azure-ai-speech-transcription/README.md new file mode 100644 index 000000000000..7180668de8d3 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/README.md @@ -0,0 +1,305 @@ +# Azure AI Speech Transcription client library for Java + +The Azure AI Speech Transcription client library provides a simple and efficient way to convert audio to text using Azure Cognitive Services. This library enables you to transcribe audio with features like speaker diarization, profanity filtering, and phrase hints for improved accuracy. + +## Documentation + +Various documentation is available to help you get started: + +- [API reference documentation][docs] +- [Product documentation][product_documentation] +- [Azure Speech Service documentation](https://learn.microsoft.com/azure/ai-services/speech-service/) + +## Getting started + +### Prerequisites + +- [Java Development Kit (JDK)][jdk] with version 8 or above +- [Azure Subscription][azure_subscription] +- An [Azure Speech resource](https://learn.microsoft.com/azure/ai-services/speech-service/overview#try-the-speech-service-for-free) or [Cognitive Services multi-service resource](https://learn.microsoft.com/azure/ai-services/multi-service-resource) + +### Adding the package to your product + +[//]: # ({x-version-update-start;com.azure:azure-ai-speech-transcription;current}) +```xml + + com.azure + azure-ai-speech-transcription + 1.0.0-beta.1 + +``` +[//]: # ({x-version-update-end}) + +#### Optional: For Entra ID Authentication + +If you plan to use Entra ID authentication (recommended for production), also add the `azure-identity` dependency: + +```xml + + com.azure + azure-identity + 1.18.1 + +``` + +### Authentication + +Azure Speech Transcription supports two authentication methods: + +#### Option 1: API Key Authentication (Subscription Key) + +You can find your Speech resource's API key in the [Azure Portal](https://portal.azure.com) or by using the Azure CLI: + +```bash +az cognitiveservices account keys list --name --resource-group +``` + +Once you have an API key, you can authenticate using `KeyCredential`: + +```java +import com.azure.core.credential.KeyCredential; + +TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); +``` + +#### Option 2: Entra ID OAuth2 Authentication (Recommended for Production) + +For production scenarios, it's recommended to use Entra ID authentication with managed identities or service principals. This provides better security and easier credential management. + +```java +import com.azure.identity.DefaultAzureCredential; +import com.azure.identity.DefaultAzureCredentialBuilder; + +// Use DefaultAzureCredential which works with managed identities, service principals, Azure CLI, etc. +DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build(); + +TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(credential) + .buildClient(); +``` + +**Note:** To use Entra ID authentication, you need to: +1. Add the `azure-identity` dependency to your project +2. Assign the appropriate role (e.g., "Cognitive Services User") to your managed identity or service principal +3. Ensure your Cognitive Services resource has Entra ID authentication enabled + +For more information on Entra ID authentication, see: +- [Authenticate with Azure Identity](https://learn.microsoft.com/azure/developer/java/sdk/identity) +- [Azure Cognitive Services authentication](https://learn.microsoft.com/azure/ai-services/authentication) + +## Key concepts + +### TranscriptionClient + +The `TranscriptionClient` is the primary interface for interacting with the Speech Transcription service. It provides methods to transcribe audio to text. + +### TranscriptionAsyncClient + +The `TranscriptionAsyncClient` provides asynchronous methods for transcribing audio, allowing non-blocking operations that return reactive types. + +### Audio Formats + +The service supports various audio formats including WAV, MP3, OGG, and more. Audio must be: + +- Shorter than 2 hours in duration +- Smaller than 250 MB in size + +### Transcription Options + +You can customize transcription with options like: + +- **Profanity filtering**: Control how profanity is handled in transcriptions +- **Speaker diarization**: Identify different speakers in multi-speaker audio +- **Phrase lists**: Provide domain-specific phrases to improve accuracy +- **Language detection**: Automatically detect the spoken language +- **Enhanced mode**: Improve transcription quality with custom prompts, translation, and task-specific configurations + +## Examples + +### Transcribe an audio file + +```java com.azure.ai.speech.transcription.readme +TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); + +try { + // Read audio file + byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + + // Create audio file details + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Create transcription options + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails); + + // Transcribe audio + TranscriptionResult result = client.transcribe(options); + + // Process results + System.out.println("Duration: " + result.getDuration() + " ms"); + result.getCombinedPhrases().forEach(phrase -> { + System.out.println("Channel " + phrase.getChannel() + ": " + phrase.getText()); + }); +} catch (Exception e) { + System.err.println("Error during transcription: " + e.getMessage()); +} +``` + +### Transcribe using audio URL + +You can transcribe audio directly from a URL without downloading the file first: + +```java readme-sample-transcribeWithAudioUrl +TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); + +// Create transcription options with audio URL +TranscriptionOptions options = new TranscriptionOptions("https://example.com/audio.wav"); + +// Transcribe audio +TranscriptionResult result = client.transcribe(options); + +// Process results +result.getCombinedPhrases().forEach(phrase -> { + System.out.println(phrase.getText()); +}); +``` + +### Transcribe with multi-language support + +The service can automatically detect and transcribe multiple languages within the same audio file. + +```java com.azure.ai.speech.transcription.transcriptionoptions.multilanguage +byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + +AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + +// Configure transcription WITHOUT specifying locales +// This allows the service to auto-detect and transcribe multiple languages +TranscriptionOptions options = new TranscriptionOptions(audioFileDetails); + +TranscriptionResult result = client.transcribe(options); + +result.getPhrases().forEach(phrase -> { + System.out.println("Language: " + phrase.getLocale()); + System.out.println("Text: " + phrase.getText()); +}); +``` + +### Transcribe with enhanced mode + +Enhanced mode provides advanced features to improve transcription accuracy with custom prompts. Enhanced mode is automatically enabled when you create an `EnhancedModeOptions` instance. + +```java com.azure.ai.speech.transcription.transcriptionoptions.enhancedmode +byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + +AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + +// Enhanced mode is automatically enabled +EnhancedModeOptions enhancedMode = new EnhancedModeOptions() + .setTask("transcribe") + .setPrompts(java.util.Arrays.asList("Output must be in lexical format.")); + +TranscriptionOptions options = new TranscriptionOptions(audioFileDetails) + .setEnhancedModeOptions(enhancedMode); + +TranscriptionResult result = client.transcribe(options); + +System.out.println("Transcription: " + result.getCombinedPhrases().get(0).getText()); +``` + +### Transcribe with phrase list + +You can use a phrase list to improve recognition accuracy for specific terms. + +```java com.azure.ai.speech.transcription.transcriptionoptions.phraselist +byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + +AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + +PhraseListOptions phraseListOptions = new PhraseListOptions() + .setPhrases(java.util.Arrays.asList("Azure", "Cognitive Services")) + .setBiasingWeight(5.0); + +TranscriptionOptions options = new TranscriptionOptions(audioFileDetails) + .setPhraseListOptions(phraseListOptions); + +TranscriptionResult result = client.transcribe(options); + +result.getCombinedPhrases().forEach(phrase -> { + System.out.println(phrase.getText()); +}); +``` + +### Service API versions + +The client library targets the latest service API version by default. +The service client builder accepts an optional service API version parameter to specify which API version to communicate. + +#### Select a service API version + +You have the flexibility to explicitly select a supported service API version when initializing a service client via the service client builder. +This ensures that the client can communicate with services using the specified API version. + +When selecting an API version, it is important to verify that there are no breaking changes compared to the latest API version. +If there are significant differences, API calls may fail due to incompatibility. + +Always ensure that the chosen API version is fully supported and operational for your specific use case and that it aligns with the service's versioning policy. + +## Troubleshooting + +### Enable client logging + +You can enable logging to debug issues with the client library. The Azure client libraries for Java use the SLF4J logging facade. You can configure logging by adding a logging dependency and configuration file. For more information, see the [logging documentation](https://learn.microsoft.com/azure/developer/java/sdk/logging-overview). + +### Common issues + +#### Authentication errors + +- Verify that your API key is correct +- Ensure your endpoint URL matches your Azure resource region + +#### Audio format errors + +- Verify your audio file is in a supported format +- Ensure the audio file size is under 250 MB and duration is under 2 hours + +### Getting help + +If you encounter issues: + +- Check the [troubleshooting guide](https://learn.microsoft.com/azure/ai-services/speech-service/troubleshooting) +- Search for existing issues or create a new one on [GitHub](https://github.com/Azure/azure-sdk-for-java/issues) +- Ask questions on [Stack Overflow](https://stackoverflow.com/questions/tagged/azure-java-sdk) with the `azure-java-sdk` tag + +## Next steps + +- Explore the [samples](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/transcription/azure-ai-speech-transcription/src/samples) for more examples +- Learn more about [Azure Speech Service](https://learn.microsoft.com/azure/ai-services/speech-service/) +- Review the [API reference documentation][docs] for detailed information about classes and methods + +## Contributing + + +For details on contributing to this repository, see the [contributing guide](https://github.com/Azure/azure-sdk-for-java/blob/main/CONTRIBUTING.md). + +1. Fork it +1. Create your feature branch (`git checkout -b my-new-feature`) +1. Commit your changes (`git commit -am 'Add some feature'`) +1. Push to the branch (`git push origin my-new-feature`) +1. Create new Pull Request + + +[product_documentation]: https://learn.microsoft.com/azure/ai-services/speech-service/ +[docs]: https://azure.github.io/azure-sdk-for-java/ +[jdk]: https://learn.microsoft.com/azure/developer/java/fundamentals/ +[azure_subscription]: https://azure.microsoft.com/free/ + diff --git a/sdk/transcription/azure-ai-speech-transcription/assets.json b/sdk/transcription/azure-ai-speech-transcription/assets.json new file mode 100644 index 000000000000..5c6f05bf06f2 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/assets.json @@ -0,0 +1 @@ +{"AssetsRepo":"Azure/azure-sdk-assets","AssetsRepoPrefixPath":"java","TagPrefix":"java/transcription/azure-ai-speech-transcription","Tag": "java/transcription/azure-ai-speech-transcription_c82ca4aec0"} diff --git a/sdk/transcription/azure-ai-speech-transcription/cspell.json b/sdk/transcription/azure-ai-speech-transcription/cspell.json new file mode 100644 index 000000000000..4c33070b4f8d --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/cspell.json @@ -0,0 +1,16 @@ +{ + "version": "0.2", + "language": "en", + "words": [ + "azuread", + "BYOD", + "BYOS", + "dexec", + "diarization", + "doméstica", + "empleada", + "habitación", + "misrecognized", + "Mundo" + ] +} diff --git a/sdk/transcription/azure-ai-speech-transcription/customization/pom.xml b/sdk/transcription/azure-ai-speech-transcription/customization/pom.xml new file mode 100644 index 000000000000..3c3058bef116 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/customization/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + + + com.azure + azure-code-customization-parent + 1.0.0-beta.1 + ../../../parents/azure-code-customization-parent + + + azure-ai-speech-transcription-customization + 1.0.0-beta.1 + jar + + + + ../../../.. + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + copy + none + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-artifacts + none + + + + + + diff --git a/sdk/transcription/azure-ai-speech-transcription/customization/src/main/java/SpeechTranscriptionCustomization.java b/sdk/transcription/azure-ai-speech-transcription/customization/src/main/java/SpeechTranscriptionCustomization.java new file mode 100644 index 000000000000..d0bdf355bdb0 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/customization/src/main/java/SpeechTranscriptionCustomization.java @@ -0,0 +1,442 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import com.azure.autorest.customization.Customization; +import com.azure.autorest.customization.LibraryCustomization; +import com.azure.autorest.customization.PackageCustomization; +import com.azure.autorest.customization.ClassCustomization; +import com.github.javaparser.ast.Modifier; +import com.github.javaparser.ast.NodeList; +import com.github.javaparser.ast.body.BodyDeclaration; +import com.github.javaparser.ast.body.ConstructorDeclaration; +import com.github.javaparser.ast.stmt.BlockStmt; +import com.github.javaparser.ast.stmt.Statement; +import com.github.javaparser.javadoc.Javadoc; +import com.github.javaparser.javadoc.JavadocBlockTag; +import com.github.javaparser.javadoc.description.JavadocDescription; +import org.slf4j.Logger; + +import java.time.Duration; + +import static com.github.javaparser.StaticJavaParser.parseBlock; +import static com.github.javaparser.StaticJavaParser.parseStatement; +import static com.github.javaparser.javadoc.description.JavadocDescription.parseText; + +/** + * Code customization after code generation for Speech Transcription SDK. + */ +public class SpeechTranscriptionCustomization extends Customization { + + /** + * Creates an instance of SpeechTranscriptionCustomization. + */ + public SpeechTranscriptionCustomization() { + } + + @Override + public void customize(LibraryCustomization customization, Logger logger) { + logger.info("Customizing Speech Transcription SDK"); + + // Check if models package exists before attempting customization + try { + PackageCustomization models = customization.getPackage("com.azure.ai.speech.transcription.models"); + + logger.info("Models package found - applying model customizations"); + + // Customize TranscriptionResult.getDuration() to return Duration instead of int + logger.info("Customizing TranscriptionResult.getDuration()"); + customizeDurationGetter(models, "TranscriptionResult"); + + // Customize TranscribedPhrase.getDuration() to return Duration instead of int + logger.info("Customizing TranscribedPhrase.getDuration()"); + customizeDurationGetter(models, "TranscribedPhrase"); + + // Customize TranscribedWord.getDuration() to return Duration instead of int + logger.info("Customizing TranscribedWord.getDuration()"); + customizeDurationGetter(models, "TranscribedWord"); + + // Customize TranscriptionDiarizationOptions to properly serialize enabled field + logger.info("Customizing TranscriptionDiarizationOptions.toJson()"); + customizeDiarizationOptionsToJson(models); + + // Customize EnhancedModeOptions constructor to auto-set enabled to true + logger.info("Customizing EnhancedModeOptions constructor to auto-set enabled to true"); + customizeEnhancedModeOptions(models); + + // Customize AudioFileDetails.getFilename() to auto-generate filename from contentType if not set + logger.info("Customizing AudioFileDetails.getFilename() to auto-generate filename"); + customizeAudioFileDetailsGetFilename(models); + + // Add AudioFileDetails field and constructors to TranscriptionOptions, make setAudioUrl private, remove no-arg constructor + logger + .info("Customizing TranscriptionOptions to add AudioFileDetails support and remove no-arg constructor"); + customizeTranscriptionOptions(models); + } catch (IllegalArgumentException e) { + logger.warn("Models package not found or empty - skipping model customizations: " + e.getMessage()); + } + + // Make transcribe(TranscriptionContent) package-private in clients + logger.info("Customizing TranscriptionClient to make transcribe(TranscriptionContent) package-private"); + customizeTranscriptionClient(customization.getPackage("com.azure.ai.speech.transcription")); + + logger.info("Customizing TranscriptionAsyncClient to make transcribe(TranscriptionContent) package-private"); + customizeTranscriptionAsyncClient(customization.getPackage("com.azure.ai.speech.transcription")); + } + + /** + * Customize the getDuration() method to return Duration type instead of int. + * The backing field remains as int (milliseconds), but the getter converts it to Duration. + * + * @param packageCustomization the package customization + * @param className the name of the class to customize + */ + private void customizeDurationGetter(PackageCustomization packageCustomization, String className) { + packageCustomization.getClass(className).customizeAst(ast -> { + ast.addImport("java.time.Duration"); + ast.getClassByName(className).ifPresent(clazz -> clazz.getMethodsByName("getDuration").forEach(method -> { + method.setType("Duration") + .setBody(parseBlock("{ return Duration.ofMillis(this.duration); }")) + .setJavadocComment( + new Javadoc(parseText("Get the duration property: The duration in milliseconds.")) + .addBlockTag("return", "the duration value as Duration.")); + })); + }); + } + + /** + * Customize the TranscriptionDiarizationOptions.toJson() method to properly serialize the enabled field. + * When maxSpeakers is set, enabled should be automatically set to true and serialized. + * + * @param packageCustomization the package customization + */ + private void customizeDiarizationOptionsToJson(PackageCustomization packageCustomization) { + packageCustomization.getClass("TranscriptionDiarizationOptions").customizeAst(ast -> { + ast.getClassByName("TranscriptionDiarizationOptions") + .ifPresent(clazz -> clazz.getMethodsByName("toJson").forEach(method -> { + method.setBody(parseBlock( + "{ jsonWriter.writeStartObject(); if (this.maxSpeakers != null) { jsonWriter.writeBooleanField(\"enabled\", true); jsonWriter.writeNumberField(\"maxSpeakers\", this.maxSpeakers); } return jsonWriter.writeEndObject(); }")); + })); + }); + } + + /** + * Customize EnhancedModeOptions to hide the enabled property from the public API. + * The enabled property is automatically set to true in the constructor. + * Both isEnabled() getter and setEnabled() setter are removed from the public API. + * + * @param packageCustomization the package customization + */ + private void customizeEnhancedModeOptions(PackageCustomization packageCustomization) { + packageCustomization.getClass("EnhancedModeOptions").customizeAst(ast -> { + ast.getClassByName("EnhancedModeOptions").ifPresent(clazz -> { + // Remove the @Generated no-arg constructor and replace with one that sets enabled = true + clazz.getConstructors() + .stream() + .filter(c -> c.getParameters().isEmpty()) + .findFirst() + .ifPresent(constructor -> { + // Remove @Generated annotation to prevent overwriting + constructor.getAnnotationByName("Generated").ifPresent(com.github.javaparser.ast.Node::remove); + // Set the constructor body to initialize enabled = true + constructor.setBody(parseBlock("{ this.enabled = true; }")); + // Add JavaDoc + constructor.setJavadocComment( + new Javadoc(parseText( + "Creates an instance of EnhancedModeOptions class with enhanced mode automatically enabled."))); + }); + + // Remove isEnabled() getter to hide enabled from public API + clazz.getMethodsByName("isEnabled").forEach(method -> method.remove()); + + // Remove ALL setEnabled() methods to hide enabled from public API + clazz.getMethodsByName("setEnabled").forEach(method -> method.remove()); + }); + }); + } + + /** + * Customize AudioFileDetails.getFilename() to auto-generate a filename from contentType if not explicitly set. + * This allows developers to omit setFilename() and have the SDK automatically provide a sensible default. + * + * @param packageCustomization the package customization + */ + private void customizeAudioFileDetailsGetFilename(PackageCustomization packageCustomization) { + packageCustomization.getClass("AudioFileDetails").customizeAst(ast -> { + ast.getClassByName("AudioFileDetails").ifPresent(clazz -> { + clazz.getMethodsByName("getFilename").forEach(method -> { + method.setBody(parseBlock( + "{ if (this.filename != null && !this.filename.isEmpty()) { return this.filename; } " + + "if (\"audio/wav\".equalsIgnoreCase(this.contentType)) { return \"audio.wav\"; } " + + "if (\"audio/mpeg\".equalsIgnoreCase(this.contentType) || \"audio/mp3\".equalsIgnoreCase(this.contentType)) { return \"audio.mp3\"; } " + + "if (\"audio/ogg\".equalsIgnoreCase(this.contentType)) { return \"audio.ogg\"; } " + + "if (\"audio/flac\".equalsIgnoreCase(this.contentType)) { return \"audio.flac\"; } " + + "if (\"audio/webm\".equalsIgnoreCase(this.contentType)) { return \"audio.webm\"; } " + + "if (\"audio/opus\".equalsIgnoreCase(this.contentType)) { return \"audio.opus\"; } " + + "return \"audio\"; }")); + method.setJavadocComment( + new Javadoc(parseText("Get the filename property: The filename of the file. " + + "If not explicitly set, a filename will be auto-generated from the contentType.")) + .addBlockTag("return", "the filename value, or an auto-generated filename if not set.")); + }); + }); + }); + } + + /** + * Customize TranscriptionOptions to: + * 1. Add AudioFileDetails field (final) + * 2. Remove default no-arg constructor + * 3. Add constructor with String audioUrl parameter + * 4. Add constructor with AudioFileDetails parameter + * 5. Add getFileDetails() method to access AudioFileDetails + * 6. Make setAudioUrl() private instead of public + * 7. Fix fromJson to use one of the parameterized constructors + * + * @param packageCustomization the package customization + */ + private void customizeTranscriptionOptions(PackageCustomization packageCustomization) { + packageCustomization.getClass("TranscriptionOptions").customizeAst(ast -> { + ast.getClassByName("TranscriptionOptions").ifPresent(clazz -> { + // Add the AudioFileDetails field as final + clazz.addFieldWithInitializer("AudioFileDetails", "audioFileDetails", null, + com.github.javaparser.ast.Modifier.Keyword.PRIVATE, + com.github.javaparser.ast.Modifier.Keyword.FINAL); + + // Remove default no-arg constructor + clazz.getConstructors() + .stream() + .filter(c -> c.getParameters().isEmpty()) + .findFirst() + .ifPresent(com.github.javaparser.ast.Node::remove); + + // Fix fromJson method to use parameterized constructor instead of no-arg + clazz.getMethodsByName("fromJson").forEach(method -> { + // Replace the entire method body to use the String constructor + method.setBody(parseBlock("{ return jsonReader.readObject(reader -> { " + + "TranscriptionOptions deserializedTranscriptionOptions = new TranscriptionOptions((String) null); " + + "while (reader.nextToken() != JsonToken.END_OBJECT) { " + + "String fieldName = reader.getFieldName(); " + "reader.nextToken(); " + + "if (\"audioUrl\".equals(fieldName)) { " + + "deserializedTranscriptionOptions.audioUrl = reader.getString(); " + + "} else if (\"locales\".equals(fieldName)) { " + + "List locales = reader.readArray(reader1 -> reader1.getString()); " + + "deserializedTranscriptionOptions.locales = locales; " + + "} else if (\"localeModelMapping\".equals(fieldName)) { " + + "Map localeModelMapping = reader.readMap(reader1 -> reader1.getString()); " + + "deserializedTranscriptionOptions.localeModelMapping = localeModelMapping; " + + "} else if (\"profanityFilterMode\".equals(fieldName)) { " + + "deserializedTranscriptionOptions.profanityFilterMode = ProfanityFilterMode.fromString(reader.getString()); " + + "} else if (\"diarization\".equals(fieldName)) { " + + "deserializedTranscriptionOptions.diarizationOptions = TranscriptionDiarizationOptions.fromJson(reader); " + + "} else if (\"channels\".equals(fieldName)) { " + + "List activeChannels = reader.readArray(reader1 -> reader1.getInt()); " + + "deserializedTranscriptionOptions.activeChannels = activeChannels; " + + "} else if (\"enhancedMode\".equals(fieldName)) { " + + "deserializedTranscriptionOptions.enhancedModeOptions = EnhancedModeOptions.fromJson(reader); " + + "} else if (\"phraseList\".equals(fieldName)) { " + + "deserializedTranscriptionOptions.phraseListOptions = PhraseListOptions.fromJson(reader); " + + "} else { " + "reader.skipChildren(); " + "} " + "} " + + "return deserializedTranscriptionOptions; " + "}); }")); + }); + + // Add constructor with String audioUrl parameter + ConstructorDeclaration audioUrlConstructor = clazz.addConstructor(Modifier.Keyword.PUBLIC); + audioUrlConstructor.addParameter("String", "audioUrl"); + audioUrlConstructor.setBody(parseBlock("{ this.audioUrl = audioUrl; this.audioFileDetails = null; }")); + audioUrlConstructor.setJavadocComment( + new Javadoc(parseText("Creates an instance of TranscriptionOptions class with audio URL.")) + .addBlockTag("param", "audioUrl the URL of the audio to be transcribed")); + + // Add constructor with AudioFileDetails parameter + ConstructorDeclaration fileDetailsConstructor = clazz.addConstructor(Modifier.Keyword.PUBLIC); + fileDetailsConstructor.addParameter("AudioFileDetails", "fileDetails"); + fileDetailsConstructor.setBody(parseBlock("{ this.audioFileDetails = fileDetails; }")); + fileDetailsConstructor.setJavadocComment( + new Javadoc(parseText("Creates an instance of TranscriptionOptions class with audio file details.")) + .addBlockTag("param", "fileDetails the audio file details")); + + // Add getFileDetails() method + com.github.javaparser.ast.body.MethodDeclaration getFileDetailsMethod + = clazz.addMethod("getFileDetails", Modifier.Keyword.PUBLIC); + getFileDetailsMethod.setType("AudioFileDetails"); + getFileDetailsMethod.setBody(parseBlock("{ return this.audioFileDetails; }")); + getFileDetailsMethod.setJavadocComment(new Javadoc( + parseText("Get the audioFileDetails property: The audio file details for transcription.")) + .addBlockTag("return", "the audioFileDetails value.")); + + // Make setAudioUrl() private + clazz.getMethodsByName("setAudioUrl").forEach(method -> { + method.getModifiers().clear(); + method.addModifier(Modifier.Keyword.PRIVATE); + }); + }); + }); + } + + /** + * Customize TranscriptionClient to add public transcribe(TranscriptionOptions) method + * that hides TranscriptionContent construction and add transcribeWithResponse method. + * + * @param packageCustomization the package customization + */ + private void customizeTranscriptionClient(PackageCustomization packageCustomization) { + ClassCustomization classCustomization = packageCustomization.getClass("TranscriptionClient"); + classCustomization.customizeAst(ast -> { + ast.getClassByName("TranscriptionClient").ifPresent(clazz -> { + // Make the generated transcribe(TranscriptionContent) package-private (internal) + // Only modify methods that have @Generated annotation to avoid affecting manual customizations + clazz.getMethodsByName("transcribe").forEach(method -> { + if (method.getParameters().size() == 1 + && "TranscriptionContent".equals(method.getParameter(0).getType().asString()) + && method.getAnnotationByName("Generated").isPresent()) { + // Remove all modifiers (including final), making it package-private + method.getModifiers().clear(); + // Remove @Generated annotation to prevent overwriting + method.getAnnotationByName("Generated").ifPresent(com.github.javaparser.ast.Node::remove); + } + }); + + // Add public transcribe method that returns TranscriptionResult + com.github.javaparser.ast.body.MethodDeclaration transcribeMethod + = clazz.addMethod("transcribe", Modifier.Keyword.PUBLIC) + .addParameter("TranscriptionOptions", "options") + .setType("TranscriptionResult"); + transcribeMethod.setJavadocComment("/**\n" + + " * Transcribes the provided audio stream with the specified options.\n" + " *\n" + + " * @param options the transcription options including audio file details or audio URL\n" + + " * @throws IllegalArgumentException thrown if parameters fail the validation.\n" + + " * @throws HttpResponseException thrown if the request is rejected by server.\n" + + " * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.\n" + + " * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.\n" + + " * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.\n" + + " * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.\n" + + " * @return the result of the transcribe operation.\n" + " */"); + com.github.javaparser.ast.expr.NormalAnnotationExpr transcribeServiceMethodAnnotation + = new com.github.javaparser.ast.expr.NormalAnnotationExpr(); + transcribeServiceMethodAnnotation.setName("ServiceMethod"); + transcribeServiceMethodAnnotation.addPair("returns", "ReturnType.SINGLE"); + transcribeMethod.addAnnotation(transcribeServiceMethodAnnotation); + transcribeMethod + .setBody(parseBlock("{ TranscriptionContent requestContent = new TranscriptionContent(options); " + + "if (options.getFileDetails() != null) { requestContent.setAudio(options.getFileDetails()); } " + + "return transcribe(requestContent); }")); + + // Add public transcribeWithResponse method that returns Response + com.github.javaparser.ast.body.MethodDeclaration transcribeWithResponseMethod + = clazz.addMethod("transcribeWithResponse", Modifier.Keyword.PUBLIC) + .addParameter("TranscriptionOptions", "options") + .setType("Response"); + transcribeWithResponseMethod.setJavadocComment("/**\n" + + " * Transcribes the provided audio stream with the specified options.\n" + " *\n" + + " * @param options the transcription options including audio file details or audio URL\n" + + " * @throws IllegalArgumentException thrown if parameters fail the validation.\n" + + " * @throws HttpResponseException thrown if the request is rejected by server.\n" + + " * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.\n" + + " * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.\n" + + " * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.\n" + + " * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.\n" + + " * @return the response containing the result of the transcribe operation.\n" + " */"); + com.github.javaparser.ast.expr.NormalAnnotationExpr serviceMethodAnnotation + = new com.github.javaparser.ast.expr.NormalAnnotationExpr(); + serviceMethodAnnotation.setName("ServiceMethod"); + serviceMethodAnnotation.addPair("returns", "ReturnType.SINGLE"); + transcribeWithResponseMethod.addAnnotation(serviceMethodAnnotation); + transcribeWithResponseMethod + .setBody(parseBlock("{ TranscriptionContent requestContent = new TranscriptionContent(options); " + + "if (options.getFileDetails() != null) { requestContent.setAudio(options.getFileDetails()); } " + + "RequestOptions requestOptions = new RequestOptions(); " + + "Response response = transcribeWithResponse(" + + "new MultipartFormDataHelper(requestOptions).serializeJsonField(\"definition\", requestContent.getOptions())" + + ".serializeFileField(\"audio\", requestContent.getAudio() == null ? null : requestContent.getAudio().getContent(), " + + "requestContent.getAudio() == null ? null : requestContent.getAudio().getContentType(), " + + "requestContent.getAudio() == null ? null : requestContent.getAudio().getFilename())" + + ".end().getRequestBody(), requestOptions); " + + "return new SimpleResponse<>(response, response.getValue().toObject(TranscriptionResult.class)); }")); + }); + }); + } + + /** + * Customize TranscriptionAsyncClient to make transcribe(TranscriptionContent) package-private (internal) + * and add transcribeWithResponse method. + * + * @param packageCustomization the package customization + */ + private void customizeTranscriptionAsyncClient(PackageCustomization packageCustomization) { + ClassCustomization classCustomization = packageCustomization.getClass("TranscriptionAsyncClient"); + classCustomization.customizeAst(ast -> { + ast.getClassByName("TranscriptionAsyncClient").ifPresent(clazz -> { + // Make the generated transcribe(TranscriptionContent) package-private (internal) + // Only modify methods that have @Generated annotation to avoid affecting manual customizations + clazz.getMethodsByName("transcribe").forEach(method -> { + if (method.getParameters().size() == 1 + && "TranscriptionContent".equals(method.getParameter(0).getType().asString()) + && method.getAnnotationByName("Generated").isPresent()) { + // Remove all modifiers (including final), making it package-private + method.getModifiers().clear(); + // Remove @Generated annotation to prevent overwriting + method.getAnnotationByName("Generated").ifPresent(com.github.javaparser.ast.Node::remove); + } + }); + + // Add public transcribe method that returns Mono + com.github.javaparser.ast.body.MethodDeclaration transcribeMethod + = clazz.addMethod("transcribe", Modifier.Keyword.PUBLIC) + .addParameter("TranscriptionOptions", "options") + .setType("Mono"); + transcribeMethod.setJavadocComment("/**\n" + + " * Transcribes the provided audio stream with the specified options.\n" + " *\n" + + " * @param options the transcription options including audio file details or audio URL\n" + + " * @throws IllegalArgumentException thrown if parameters fail the validation.\n" + + " * @throws HttpResponseException thrown if the request is rejected by server.\n" + + " * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.\n" + + " * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.\n" + + " * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.\n" + + " * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.\n" + + " * @return the result of the transcribe operation on successful completion of {@link Mono}.\n" + + " */"); + com.github.javaparser.ast.expr.NormalAnnotationExpr transcribeServiceMethodAnnotation + = new com.github.javaparser.ast.expr.NormalAnnotationExpr(); + transcribeServiceMethodAnnotation.setName("ServiceMethod"); + transcribeServiceMethodAnnotation.addPair("returns", "ReturnType.SINGLE"); + transcribeMethod.addAnnotation(transcribeServiceMethodAnnotation); + transcribeMethod + .setBody(parseBlock("{ TranscriptionContent requestContent = new TranscriptionContent(options); " + + "if (options.getFileDetails() != null) { requestContent.setAudio(options.getFileDetails()); } " + + "return transcribe(requestContent); }")); + + // Add public transcribeWithResponse method that returns Mono> + com.github.javaparser.ast.body.MethodDeclaration transcribeWithResponseMethod + = clazz.addMethod("transcribeWithResponse", Modifier.Keyword.PUBLIC) + .addParameter("TranscriptionOptions", "options") + .setType("Mono>"); + transcribeWithResponseMethod.setJavadocComment("/**\n" + + " * Transcribes the provided audio stream with the specified options.\n" + " *\n" + + " * @param options the transcription options including audio file details or audio URL\n" + + " * @throws IllegalArgumentException thrown if parameters fail the validation.\n" + + " * @throws HttpResponseException thrown if the request is rejected by server.\n" + + " * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.\n" + + " * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.\n" + + " * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.\n" + + " * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.\n" + + " * @return the response containing the result of the transcribe operation on successful completion of {@link Mono}.\n" + + " */"); + com.github.javaparser.ast.expr.NormalAnnotationExpr serviceMethodAnnotation + = new com.github.javaparser.ast.expr.NormalAnnotationExpr(); + serviceMethodAnnotation.setName("ServiceMethod"); + serviceMethodAnnotation.addPair("returns", "ReturnType.SINGLE"); + transcribeWithResponseMethod.addAnnotation(serviceMethodAnnotation); + transcribeWithResponseMethod + .setBody(parseBlock("{ TranscriptionContent requestContent = new TranscriptionContent(options); " + + "if (options.getFileDetails() != null) { requestContent.setAudio(options.getFileDetails()); } " + + "RequestOptions requestOptions = new RequestOptions(); " + "return transcribeWithResponse(" + + "new MultipartFormDataHelper(requestOptions).serializeJsonField(\"definition\", requestContent.getOptions())" + + ".serializeFileField(\"audio\", requestContent.getAudio() == null ? null : requestContent.getAudio().getContent(), " + + "requestContent.getAudio() == null ? null : requestContent.getAudio().getContentType(), " + + "requestContent.getAudio() == null ? null : requestContent.getAudio().getFilename())" + + ".end().getRequestBody(), requestOptions)" + + ".map(response -> new SimpleResponse<>(response, response.getValue().toObject(TranscriptionResult.class))); }")); + }); + }); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/pom.xml b/sdk/transcription/azure-ai-speech-transcription/pom.xml new file mode 100644 index 000000000000..53fad6f4ded0 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/pom.xml @@ -0,0 +1,71 @@ + + + 4.0.0 + + com.azure + azure-client-sdk-parent + 1.7.0 + ../../parents/azure-client-sdk-parent + + + com.azure + azure-ai-speech-transcription + 1.0.0-beta.1 + jar + + Microsoft Azure SDK for Transcription + This package contains Microsoft Azure Transcription client library. + https://github.com/Azure/azure-sdk-for-java + + + + The MIT License (MIT) + http://opensource.org/licenses/MIT + repo + + + + + https://github.com/Azure/azure-sdk-for-java + scm:git:git@github.com:Azure/azure-sdk-for-java.git + scm:git:git@github.com:Azure/azure-sdk-for-java.git + HEAD + + + + microsoft + Microsoft + + + + UTF-8 + + + + com.azure + azure-core + 1.57.0 + + + com.azure + azure-core-http-netty + 1.16.2 + + + com.azure + azure-core-test + 1.27.0-beta.13 + test + + + com.azure + azure-identity + 1.18.1 + test + + + diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionAsyncClient.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionAsyncClient.java new file mode 100644 index 000000000000..69294063fad5 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionAsyncClient.java @@ -0,0 +1,178 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.speech.transcription; + +import com.azure.ai.speech.transcription.implementation.MultipartFormDataHelper; +import com.azure.ai.speech.transcription.implementation.TranscriptionClientImpl; +import com.azure.ai.speech.transcription.models.TranscriptionContent; +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceClient; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.SimpleResponse; +import com.azure.core.util.BinaryData; +import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; +import reactor.core.publisher.Mono; + +/** + * Initializes a new instance of the asynchronous TranscriptionClient type. + */ +@ServiceClient(builder = TranscriptionClientBuilder.class, isAsync = true) +public final class TranscriptionAsyncClient { + + private static final ClientLogger LOGGER = new ClientLogger(TranscriptionAsyncClient.class); + + @Generated + private final TranscriptionClientImpl serviceClient; + + /** + * Initializes an instance of TranscriptionAsyncClient class. + * + * @param serviceClient the service client implementation. + */ + @Generated + TranscriptionAsyncClient(TranscriptionClientImpl serviceClient) { + this.serviceClient = serviceClient; + } + + /** + * Transcribes the provided audio stream. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     durationMilliseconds: int (Required)
+     *     combinedPhrases (Required): [
+     *          (Required){
+     *             channel: Integer (Optional)
+     *             text: String (Required)
+     *         }
+     *     ]
+     *     phrases (Required): [
+     *          (Required){
+     *             channel: Integer (Optional)
+     *             speaker: Integer (Optional)
+     *             offsetMilliseconds: int (Required)
+     *             durationMilliseconds: int (Required)
+     *             text: String (Required)
+     *             words (Optional): [
+     *                  (Optional){
+     *                     text: String (Required)
+     *                     offsetMilliseconds: int (Required)
+     *                     durationMilliseconds: int (Required)
+     *                 }
+     *             ]
+     *             locale: String (Optional)
+     *             confidence: double (Required)
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + * @param body The body of the multipart request. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the result of the transcribe operation along with {@link Response} on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + Mono> transcribeWithResponse(BinaryData body, RequestOptions requestOptions) { + // Operation 'transcribe' is of content-type 'multipart/form-data'. Protocol API is not usable and hence not + // generated. + return this.serviceClient.transcribeWithResponseAsync(body, requestOptions); + } + + /** + * Transcribes the provided audio stream. + * + * @param body The body of the multipart request. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the result of the transcribe operation on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Mono transcribe(TranscriptionContent body) { + // Generated convenience method for transcribeWithResponse + RequestOptions requestOptions = new RequestOptions(); + return transcribeWithResponse( + new MultipartFormDataHelper(requestOptions).serializeJsonField("definition", body.getOptions()) + .serializeFileField("audio", body.getAudio() == null ? null : body.getAudio().getContent(), + body.getAudio() == null ? null : body.getAudio().getContentType(), + body.getAudio() == null ? null : body.getAudio().getFilename()) + .end() + .getRequestBody(), + requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TranscriptionResult.class)); + } + + /** + * Transcribes the provided audio stream with the specified options. + * + * @param options the transcription options including audio file details or audio URL + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the result of the transcribe operation on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono transcribe(TranscriptionOptions options) { + TranscriptionContent requestContent = new TranscriptionContent(options); + if (options.getFileDetails() != null) { + requestContent.setAudio(options.getFileDetails()); + } + return transcribe(requestContent); + } + + /** + * Transcribes the provided audio stream with the specified options. + * + * @param options the transcription options including audio file details or audio URL + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response containing the result of the transcribe operation on successful completion of {@link Mono}. + */ + public Mono> transcribeWithResponse(TranscriptionOptions options) { + TranscriptionContent requestContent = new TranscriptionContent(options); + if (options.getFileDetails() != null) { + requestContent.setAudio(options.getFileDetails()); + } + RequestOptions requestOptions = new RequestOptions(); + return transcribeWithResponse( + new MultipartFormDataHelper(requestOptions).serializeJsonField("definition", requestContent.getOptions()) + .serializeFileField("audio", + requestContent.getAudio() == null ? null : requestContent.getAudio().getContent(), + requestContent.getAudio() == null ? null : requestContent.getAudio().getContentType(), + requestContent.getAudio() == null ? null : requestContent.getAudio().getFilename()) + .end() + .getRequestBody(), + requestOptions).map( + response -> new SimpleResponse<>(response, response.getValue().toObject(TranscriptionResult.class))); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionClient.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionClient.java new file mode 100644 index 000000000000..42a6fa24db7c --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionClient.java @@ -0,0 +1,174 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.speech.transcription; + +import com.azure.ai.speech.transcription.implementation.MultipartFormDataHelper; +import com.azure.ai.speech.transcription.implementation.TranscriptionClientImpl; +import com.azure.ai.speech.transcription.models.TranscriptionContent; +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceClient; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.SimpleResponse; +import com.azure.core.util.BinaryData; +import com.azure.core.util.logging.ClientLogger; + +/** + * Initializes a new instance of the synchronous TranscriptionClient type. + */ +@ServiceClient(builder = TranscriptionClientBuilder.class) +public final class TranscriptionClient { + + private static final ClientLogger LOGGER = new ClientLogger(TranscriptionClient.class); + + @Generated + private final TranscriptionClientImpl serviceClient; + + /** + * Initializes an instance of TranscriptionClient class. + * + * @param serviceClient the service client implementation. + */ + @Generated + TranscriptionClient(TranscriptionClientImpl serviceClient) { + this.serviceClient = serviceClient; + } + + /** + * Transcribes the provided audio stream. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     durationMilliseconds: int (Required)
+     *     combinedPhrases (Required): [
+     *          (Required){
+     *             channel: Integer (Optional)
+     *             text: String (Required)
+     *         }
+     *     ]
+     *     phrases (Required): [
+     *          (Required){
+     *             channel: Integer (Optional)
+     *             speaker: Integer (Optional)
+     *             offsetMilliseconds: int (Required)
+     *             durationMilliseconds: int (Required)
+     *             text: String (Required)
+     *             words (Optional): [
+     *                  (Optional){
+     *                     text: String (Required)
+     *                     offsetMilliseconds: int (Required)
+     *                     durationMilliseconds: int (Required)
+     *                 }
+     *             ]
+     *             locale: String (Optional)
+     *             confidence: double (Required)
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + * @param body The body of the multipart request. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the result of the transcribe operation along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + Response transcribeWithResponse(BinaryData body, RequestOptions requestOptions) { + // Operation 'transcribe' is of content-type 'multipart/form-data'. Protocol API is not usable and hence not + // generated. + return this.serviceClient.transcribeWithResponse(body, requestOptions); + } + + /** + * Transcribes the provided audio stream. + * + * @param body The body of the multipart request. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the result of the transcribe operation. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + TranscriptionResult transcribe(TranscriptionContent body) { + // Generated convenience method for transcribeWithResponse + RequestOptions requestOptions = new RequestOptions(); + return transcribeWithResponse( + new MultipartFormDataHelper(requestOptions).serializeJsonField("definition", body.getOptions()) + .serializeFileField("audio", body.getAudio() == null ? null : body.getAudio().getContent(), + body.getAudio() == null ? null : body.getAudio().getContentType(), + body.getAudio() == null ? null : body.getAudio().getFilename()) + .end() + .getRequestBody(), + requestOptions).getValue().toObject(TranscriptionResult.class); + } + + /** + * Transcribes the provided audio stream with the specified options. + * + * @param options the transcription options including audio file details or audio URL + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the result of the transcribe operation. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public TranscriptionResult transcribe(TranscriptionOptions options) { + TranscriptionContent requestContent = new TranscriptionContent(options); + if (options.getFileDetails() != null) { + requestContent.setAudio(options.getFileDetails()); + } + return transcribe(requestContent); + } + + /** + * Transcribes the provided audio stream with the specified options. + * + * @param options the transcription options including audio file details or audio URL + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response containing the result of the transcribe operation. + */ + public Response transcribeWithResponse(TranscriptionOptions options) { + TranscriptionContent requestContent = new TranscriptionContent(options); + if (options.getFileDetails() != null) { + requestContent.setAudio(options.getFileDetails()); + } + RequestOptions requestOptions = new RequestOptions(); + Response response = transcribeWithResponse( + new MultipartFormDataHelper(requestOptions).serializeJsonField("definition", requestContent.getOptions()) + .serializeFileField("audio", + requestContent.getAudio() == null ? null : requestContent.getAudio().getContent(), + requestContent.getAudio() == null ? null : requestContent.getAudio().getContentType(), + requestContent.getAudio() == null ? null : requestContent.getAudio().getFilename()) + .end() + .getRequestBody(), + requestOptions); + return new SimpleResponse<>(response, response.getValue().toObject(TranscriptionResult.class)); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionClientBuilder.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionClientBuilder.java new file mode 100644 index 000000000000..649d0f6ca0d8 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionClientBuilder.java @@ -0,0 +1,356 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.speech.transcription; + +import com.azure.ai.speech.transcription.implementation.TranscriptionClientImpl; +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.ServiceClientBuilder; +import com.azure.core.client.traits.ConfigurationTrait; +import com.azure.core.client.traits.EndpointTrait; +import com.azure.core.client.traits.HttpTrait; +import com.azure.core.client.traits.KeyCredentialTrait; +import com.azure.core.client.traits.TokenCredentialTrait; +import com.azure.core.credential.KeyCredential; +import com.azure.core.credential.TokenCredential; +import com.azure.core.http.HttpClient; +import com.azure.core.http.HttpHeaders; +import com.azure.core.http.HttpPipeline; +import com.azure.core.http.HttpPipelineBuilder; +import com.azure.core.http.HttpPipelinePosition; +import com.azure.core.http.policy.AddDatePolicy; +import com.azure.core.http.policy.AddHeadersFromContextPolicy; +import com.azure.core.http.policy.AddHeadersPolicy; +import com.azure.core.http.policy.BearerTokenAuthenticationPolicy; +import com.azure.core.http.policy.HttpLogOptions; +import com.azure.core.http.policy.HttpLoggingPolicy; +import com.azure.core.http.policy.HttpPipelinePolicy; +import com.azure.core.http.policy.HttpPolicyProviders; +import com.azure.core.http.policy.KeyCredentialPolicy; +import com.azure.core.http.policy.RequestIdPolicy; +import com.azure.core.http.policy.RetryOptions; +import com.azure.core.http.policy.RetryPolicy; +import com.azure.core.http.policy.UserAgentPolicy; +import com.azure.core.util.ClientOptions; +import com.azure.core.util.Configuration; +import com.azure.core.util.CoreUtils; +import com.azure.core.util.builder.ClientBuilderUtil; +import com.azure.core.util.logging.ClientLogger; +import com.azure.core.util.serializer.JacksonAdapter; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * A builder for creating a new instance of the TranscriptionClient type. + */ +@ServiceClientBuilder(serviceClients = { TranscriptionClient.class, TranscriptionAsyncClient.class }) +public final class TranscriptionClientBuilder implements HttpTrait, + ConfigurationTrait, TokenCredentialTrait, + KeyCredentialTrait, EndpointTrait { + + @Generated + private static final String SDK_NAME = "name"; + + @Generated + private static final String SDK_VERSION = "version"; + + @Generated + private static final Map PROPERTIES + = CoreUtils.getProperties("azure-ai-speech-transcription.properties"); + + @Generated + private final List pipelinePolicies; + + /** + * Create an instance of the TranscriptionClientBuilder. + */ + @Generated + public TranscriptionClientBuilder() { + this.pipelinePolicies = new ArrayList<>(); + } + + /* + * The HTTP client used to send the request. + */ + @Generated + private HttpClient httpClient; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public TranscriptionClientBuilder httpClient(HttpClient httpClient) { + this.httpClient = httpClient; + return this; + } + + /* + * The HTTP pipeline to send requests through. + */ + @Generated + private HttpPipeline pipeline; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public TranscriptionClientBuilder pipeline(HttpPipeline pipeline) { + if (this.pipeline != null && pipeline == null) { + LOGGER.atInfo().log("HttpPipeline is being set to 'null' when it was previously configured."); + } + this.pipeline = pipeline; + return this; + } + + /* + * The logging configuration for HTTP requests and responses. + */ + @Generated + private HttpLogOptions httpLogOptions; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public TranscriptionClientBuilder httpLogOptions(HttpLogOptions httpLogOptions) { + this.httpLogOptions = httpLogOptions; + return this; + } + + /* + * The client options such as application ID and custom headers to set on a request. + */ + @Generated + private ClientOptions clientOptions; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public TranscriptionClientBuilder clientOptions(ClientOptions clientOptions) { + this.clientOptions = clientOptions; + return this; + } + + /* + * The retry options to configure retry policy for failed requests. + */ + @Generated + private RetryOptions retryOptions; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public TranscriptionClientBuilder retryOptions(RetryOptions retryOptions) { + this.retryOptions = retryOptions; + return this; + } + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public TranscriptionClientBuilder addPolicy(HttpPipelinePolicy customPolicy) { + Objects.requireNonNull(customPolicy, "'customPolicy' cannot be null."); + pipelinePolicies.add(customPolicy); + return this; + } + + /* + * The configuration store that is used during construction of the service client. + */ + @Generated + private Configuration configuration; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public TranscriptionClientBuilder configuration(Configuration configuration) { + this.configuration = configuration; + return this; + } + + /* + * The KeyCredential used for authentication. + */ + @Generated + private KeyCredential keyCredential; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public TranscriptionClientBuilder credential(KeyCredential keyCredential) { + this.keyCredential = keyCredential; + return this; + } + + /* + * The service endpoint + */ + @Generated + private String endpoint; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public TranscriptionClientBuilder endpoint(String endpoint) { + this.endpoint = endpoint; + return this; + } + + /* + * Service version + */ + @Generated + private TranscriptionServiceVersion serviceVersion; + + /** + * Sets Service version. + * + * @param serviceVersion the serviceVersion value. + * @return the TranscriptionClientBuilder. + */ + @Generated + public TranscriptionClientBuilder serviceVersion(TranscriptionServiceVersion serviceVersion) { + this.serviceVersion = serviceVersion; + return this; + } + + /* + * The retry policy that will attempt to retry failed requests, if applicable. + */ + @Generated + private RetryPolicy retryPolicy; + + /** + * Sets The retry policy that will attempt to retry failed requests, if applicable. + * + * @param retryPolicy the retryPolicy value. + * @return the TranscriptionClientBuilder. + */ + @Generated + public TranscriptionClientBuilder retryPolicy(RetryPolicy retryPolicy) { + this.retryPolicy = retryPolicy; + return this; + } + + /** + * Builds an instance of TranscriptionClientImpl with the provided parameters. + * + * @return an instance of TranscriptionClientImpl. + */ + @Generated + private TranscriptionClientImpl buildInnerClient() { + this.validateClient(); + HttpPipeline localPipeline = (pipeline != null) ? pipeline : createHttpPipeline(); + TranscriptionServiceVersion localServiceVersion + = (serviceVersion != null) ? serviceVersion : TranscriptionServiceVersion.getLatest(); + TranscriptionClientImpl client = new TranscriptionClientImpl(localPipeline, + JacksonAdapter.createDefaultSerializerAdapter(), this.endpoint, localServiceVersion); + return client; + } + + @Generated + private void validateClient() { + // This method is invoked from 'buildInnerClient'/'buildClient' method. + // Developer can customize this method, to validate that the necessary conditions are met for the new client. + Objects.requireNonNull(endpoint, "'endpoint' cannot be null."); + } + + @Generated + private HttpPipeline createHttpPipeline() { + Configuration buildConfiguration + = (configuration == null) ? Configuration.getGlobalConfiguration() : configuration; + HttpLogOptions localHttpLogOptions = this.httpLogOptions == null ? new HttpLogOptions() : this.httpLogOptions; + ClientOptions localClientOptions = this.clientOptions == null ? new ClientOptions() : this.clientOptions; + List policies = new ArrayList<>(); + String clientName = PROPERTIES.getOrDefault(SDK_NAME, "UnknownName"); + String clientVersion = PROPERTIES.getOrDefault(SDK_VERSION, "UnknownVersion"); + String applicationId = CoreUtils.getApplicationId(localClientOptions, localHttpLogOptions); + policies.add(new UserAgentPolicy(applicationId, clientName, clientVersion, buildConfiguration)); + policies.add(new RequestIdPolicy()); + policies.add(new AddHeadersFromContextPolicy()); + HttpHeaders headers = CoreUtils.createHttpHeadersFromClientOptions(localClientOptions); + if (headers != null) { + policies.add(new AddHeadersPolicy(headers)); + } + this.pipelinePolicies.stream() + .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL) + .forEach(p -> policies.add(p)); + HttpPolicyProviders.addBeforeRetryPolicies(policies); + policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy())); + policies.add(new AddDatePolicy()); + if (keyCredential != null) { + policies.add(new KeyCredentialPolicy("Ocp-Apim-Subscription-Key", keyCredential)); + } + if (tokenCredential != null) { + policies.add(new BearerTokenAuthenticationPolicy(tokenCredential, DEFAULT_SCOPES)); + } + this.pipelinePolicies.stream() + .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY) + .forEach(p -> policies.add(p)); + HttpPolicyProviders.addAfterRetryPolicies(policies); + policies.add(new HttpLoggingPolicy(localHttpLogOptions)); + HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0])) + .httpClient(httpClient) + .clientOptions(localClientOptions) + .build(); + return httpPipeline; + } + + /** + * Builds an instance of TranscriptionAsyncClient class. + * + * @return an instance of TranscriptionAsyncClient. + */ + @Generated + public TranscriptionAsyncClient buildAsyncClient() { + return new TranscriptionAsyncClient(buildInnerClient()); + } + + /** + * Builds an instance of TranscriptionClient class. + * + * @return an instance of TranscriptionClient. + */ + @Generated + public TranscriptionClient buildClient() { + return new TranscriptionClient(buildInnerClient()); + } + + private static final ClientLogger LOGGER = new ClientLogger(TranscriptionClientBuilder.class); + + @Generated + private static final String[] DEFAULT_SCOPES = new String[] { "https://cognitiveservices.azure.com/.default" }; + + /* + * The TokenCredential used for authentication. + */ + @Generated + private TokenCredential tokenCredential; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public TranscriptionClientBuilder credential(TokenCredential tokenCredential) { + this.tokenCredential = tokenCredential; + return this; + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionServiceVersion.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionServiceVersion.java new file mode 100644 index 000000000000..07e1561ff2f4 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/TranscriptionServiceVersion.java @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.speech.transcription; + +import com.azure.core.util.ServiceVersion; + +/** + * Service version of TranscriptionClient. + */ +public enum TranscriptionServiceVersion implements ServiceVersion { + /** + * Enum value 2025-10-15. + */ + V2025_10_15("2025-10-15"); + + private final String version; + + TranscriptionServiceVersion(String version) { + this.version = version; + } + + /** + * {@inheritDoc} + */ + @Override + public String getVersion() { + return this.version; + } + + /** + * Gets the latest service version supported by this client library. + * + * @return The latest {@link TranscriptionServiceVersion}. + */ + public static TranscriptionServiceVersion getLatest() { + return V2025_10_15; + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/MultipartFormDataHelper.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/MultipartFormDataHelper.java new file mode 100644 index 000000000000..2a2962e1595d --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/MultipartFormDataHelper.java @@ -0,0 +1,209 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.speech.transcription.implementation; + +import com.azure.core.http.HttpHeaderName; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.util.BinaryData; +import com.azure.core.util.CoreUtils; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.io.SequenceInputStream; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.UUID; + +// DO NOT modify this helper class + +public final class MultipartFormDataHelper { + /** + * Line separator for the multipart HTTP request. + */ + private static final String CRLF = "\r\n"; + + private static final String APPLICATION_OCTET_STREAM = "application/octet-stream"; + + /** + * Value to be used as part of the divider for the multipart requests. + */ + private final String boundary; + + /** + * The actual part separator in the request. This is obtained by prepending "--" to the "boundary". + */ + private final String partSeparator; + + /** + * The marker for the ending of a multipart request. This is obtained by post-pending "--" to the "partSeparator". + */ + private final String endMarker; + + /** + * Charset used for encoding the multipart HTTP request. + */ + private final Charset encoderCharset = StandardCharsets.UTF_8; + + private InputStream requestDataStream = new ByteArrayInputStream(new byte[0]); + private long requestLength = 0; + + private RequestOptions requestOptions; + private BinaryData requestBody; + + /** + * Default constructor used in the code. The boundary is a random value. + * + * @param requestOptions the RequestOptions to update + */ + public MultipartFormDataHelper(RequestOptions requestOptions) { + this(requestOptions, UUID.randomUUID().toString().substring(0, 16)); + } + + private MultipartFormDataHelper(RequestOptions requestOptions, String boundary) { + this.requestOptions = requestOptions; + this.boundary = boundary; + this.partSeparator = "--" + boundary; + this.endMarker = this.partSeparator + "--"; + } + + /** + * Gets the multipart HTTP request body. + * + * @return the BinaryData of the multipart HTTP request body + */ + public BinaryData getRequestBody() { + return requestBody; + } + + // text/plain + /** + * Formats a text/plain field for a multipart HTTP request. + * + * @param fieldName the field name + * @param value the value of the text/plain field + * @return the MultipartFormDataHelper instance + */ + public MultipartFormDataHelper serializeTextField(String fieldName, String value) { + if (value != null) { + String serialized = partSeparator + CRLF + "Content-Disposition: form-data; name=\"" + escapeName(fieldName) + + "\"" + CRLF + CRLF + value + CRLF; + byte[] data = serialized.getBytes(encoderCharset); + appendBytes(data); + } + return this; + } + + // application/json + /** + * Formats a application/json field for a multipart HTTP request. + * + * @param fieldName the field name + * @param jsonObject the object of the application/json field + * @return the MultipartFormDataHelper instance + */ + public MultipartFormDataHelper serializeJsonField(String fieldName, Object jsonObject) { + if (jsonObject != null) { + String serialized + = partSeparator + CRLF + "Content-Disposition: form-data; name=\"" + escapeName(fieldName) + "\"" + CRLF + + "Content-Type: application/json" + CRLF + CRLF + BinaryData.fromObject(jsonObject) + CRLF; + byte[] data = serialized.getBytes(encoderCharset); + appendBytes(data); + } + return this; + } + + /** + * Formats a file field for a multipart HTTP request. + * + * @param fieldName the field name + * @param file the BinaryData of the file + * @param contentType the content-type of the file + * @param filename the filename + * @return the MultipartFormDataHelper instance + */ + public MultipartFormDataHelper serializeFileField(String fieldName, BinaryData file, String contentType, + String filename) { + if (file != null) { + if (CoreUtils.isNullOrEmpty(contentType)) { + contentType = APPLICATION_OCTET_STREAM; + } + writeFileField(fieldName, file, contentType, filename); + } + return this; + } + + /** + * Formats a file field (potentially multiple files) for a multipart HTTP request. + * + * @param fieldName the field name + * @param files the List of BinaryData of the files + * @param contentTypes the List of content-type of the files + * @param filenames the List of filenames + * @return the MultipartFormDataHelper instance + */ + public MultipartFormDataHelper serializeFileFields(String fieldName, List files, + List contentTypes, List filenames) { + if (files != null) { + for (int i = 0; i < files.size(); ++i) { + BinaryData file = files.get(i); + String contentType = contentTypes.get(i); + if (CoreUtils.isNullOrEmpty(contentType)) { + contentType = APPLICATION_OCTET_STREAM; + } + String filename = filenames.get(i); + writeFileField(fieldName, file, contentType, filename); + } + } + return this; + } + + /** + * Ends the serialization of the multipart HTTP request. + * + * @return the MultipartFormDataHelper instance + */ + public MultipartFormDataHelper end() { + byte[] data = endMarker.getBytes(encoderCharset); + appendBytes(data); + + requestBody = BinaryData.fromStream(requestDataStream, requestLength); + + requestOptions.setHeader(HttpHeaderName.CONTENT_TYPE, "multipart/form-data; boundary=" + this.boundary) + .setHeader(HttpHeaderName.CONTENT_LENGTH, String.valueOf(requestLength)); + + return this; + } + + private void writeFileField(String fieldName, BinaryData file, String contentType, String filename) { + String contentDispositionFilename = ""; + if (!CoreUtils.isNullOrEmpty(filename)) { + contentDispositionFilename = "; filename=\"" + escapeName(filename) + "\""; + } + + // Multipart preamble + String fileFieldPreamble + = partSeparator + CRLF + "Content-Disposition: form-data; name=\"" + escapeName(fieldName) + "\"" + + contentDispositionFilename + CRLF + "Content-Type: " + contentType + CRLF + CRLF; + byte[] data = fileFieldPreamble.getBytes(encoderCharset); + appendBytes(data); + + // Writing the file into the request as a byte stream + requestLength += file.getLength(); + requestDataStream = new SequenceInputStream(requestDataStream, file.toStream()); + + // CRLF + data = CRLF.getBytes(encoderCharset); + appendBytes(data); + } + + private void appendBytes(byte[] bytes) { + requestLength += bytes.length; + requestDataStream = new SequenceInputStream(requestDataStream, new ByteArrayInputStream(bytes)); + } + + private static String escapeName(String name) { + return name.replace("\n", "%0A").replace("\r", "%0D").replace("\"", "%22"); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/TranscriptionClientImpl.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/TranscriptionClientImpl.java new file mode 100644 index 000000000000..bb14d116f3e0 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/TranscriptionClientImpl.java @@ -0,0 +1,284 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.speech.transcription.implementation; + +import com.azure.ai.speech.transcription.TranscriptionServiceVersion; +import com.azure.core.annotation.BodyParam; +import com.azure.core.annotation.ExpectedResponses; +import com.azure.core.annotation.HeaderParam; +import com.azure.core.annotation.Host; +import com.azure.core.annotation.HostParam; +import com.azure.core.annotation.Post; +import com.azure.core.annotation.QueryParam; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceInterface; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.annotation.UnexpectedResponseExceptionType; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.HttpPipeline; +import com.azure.core.http.HttpPipelineBuilder; +import com.azure.core.http.policy.RetryPolicy; +import com.azure.core.http.policy.UserAgentPolicy; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.RestProxy; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Context; +import com.azure.core.util.FluxUtil; +import com.azure.core.util.serializer.JacksonAdapter; +import com.azure.core.util.serializer.SerializerAdapter; +import reactor.core.publisher.Mono; + +/** + * Initializes a new instance of the TranscriptionClient type. + */ +public final class TranscriptionClientImpl { + /** + * The proxy service used to perform REST calls. + */ + private final TranscriptionClientService service; + + /** + * Supported Cognitive Services endpoints (protocol and hostname, for example: + * https://westus.api.cognitive.microsoft.com. + */ + private final String endpoint; + + /** + * Gets Supported Cognitive Services endpoints (protocol and hostname, for example: + * https://westus.api.cognitive.microsoft.com. + * + * @return the endpoint value. + */ + public String getEndpoint() { + return this.endpoint; + } + + /** + * Service version. + */ + private final TranscriptionServiceVersion serviceVersion; + + /** + * Gets Service version. + * + * @return the serviceVersion value. + */ + public TranscriptionServiceVersion getServiceVersion() { + return this.serviceVersion; + } + + /** + * The HTTP pipeline to send requests through. + */ + private final HttpPipeline httpPipeline; + + /** + * Gets The HTTP pipeline to send requests through. + * + * @return the httpPipeline value. + */ + public HttpPipeline getHttpPipeline() { + return this.httpPipeline; + } + + /** + * The serializer to serialize an object into a string. + */ + private final SerializerAdapter serializerAdapter; + + /** + * Gets The serializer to serialize an object into a string. + * + * @return the serializerAdapter value. + */ + public SerializerAdapter getSerializerAdapter() { + return this.serializerAdapter; + } + + /** + * Initializes an instance of TranscriptionClient client. + * + * @param endpoint Supported Cognitive Services endpoints (protocol and hostname, for example: + * https://westus.api.cognitive.microsoft.com. + * @param serviceVersion Service version. + */ + public TranscriptionClientImpl(String endpoint, TranscriptionServiceVersion serviceVersion) { + this(new HttpPipelineBuilder().policies(new UserAgentPolicy(), new RetryPolicy()).build(), + JacksonAdapter.createDefaultSerializerAdapter(), endpoint, serviceVersion); + } + + /** + * Initializes an instance of TranscriptionClient client. + * + * @param httpPipeline The HTTP pipeline to send requests through. + * @param endpoint Supported Cognitive Services endpoints (protocol and hostname, for example: + * https://westus.api.cognitive.microsoft.com. + * @param serviceVersion Service version. + */ + public TranscriptionClientImpl(HttpPipeline httpPipeline, String endpoint, + TranscriptionServiceVersion serviceVersion) { + this(httpPipeline, JacksonAdapter.createDefaultSerializerAdapter(), endpoint, serviceVersion); + } + + /** + * Initializes an instance of TranscriptionClient client. + * + * @param httpPipeline The HTTP pipeline to send requests through. + * @param serializerAdapter The serializer to serialize an object into a string. + * @param endpoint Supported Cognitive Services endpoints (protocol and hostname, for example: + * https://westus.api.cognitive.microsoft.com. + * @param serviceVersion Service version. + */ + public TranscriptionClientImpl(HttpPipeline httpPipeline, SerializerAdapter serializerAdapter, String endpoint, + TranscriptionServiceVersion serviceVersion) { + this.httpPipeline = httpPipeline; + this.serializerAdapter = serializerAdapter; + this.endpoint = endpoint; + this.serviceVersion = serviceVersion; + this.service + = RestProxy.create(TranscriptionClientService.class, this.httpPipeline, this.getSerializerAdapter()); + } + + /** + * The interface defining all the services for TranscriptionClient to be used by the proxy service to perform REST + * calls. + */ + @Host("{endpoint}/speechtotext") + @ServiceInterface(name = "TranscriptionClient") + public interface TranscriptionClientService { + // @Multipart not supported by RestProxy + @Post("/transcriptions:transcribe") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> transcribe(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @HeaderParam("content-type") String contentType, + @HeaderParam("Accept") String accept, @BodyParam("multipart/form-data") BinaryData body, + RequestOptions requestOptions, Context context); + + // @Multipart not supported by RestProxy + @Post("/transcriptions:transcribe") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response transcribeSync(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @HeaderParam("content-type") String contentType, + @HeaderParam("Accept") String accept, @BodyParam("multipart/form-data") BinaryData body, + RequestOptions requestOptions, Context context); + } + + /** + * Transcribes the provided audio stream. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     durationMilliseconds: int (Required)
+     *     combinedPhrases (Required): [
+     *          (Required){
+     *             channel: Integer (Optional)
+     *             text: String (Required)
+     *         }
+     *     ]
+     *     phrases (Required): [
+     *          (Required){
+     *             channel: Integer (Optional)
+     *             speaker: Integer (Optional)
+     *             offsetMilliseconds: int (Required)
+     *             durationMilliseconds: int (Required)
+     *             text: String (Required)
+     *             words (Optional): [
+     *                  (Optional){
+     *                     text: String (Required)
+     *                     offsetMilliseconds: int (Required)
+     *                     durationMilliseconds: int (Required)
+     *                 }
+     *             ]
+     *             locale: String (Optional)
+     *             confidence: double (Required)
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + * @param body The body of the multipart request. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the result of the transcribe operation along with {@link Response} on successful completion of + * {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> transcribeWithResponseAsync(BinaryData body, RequestOptions requestOptions) { + final String contentType = "multipart/form-data"; + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.transcribe(this.getEndpoint(), + this.getServiceVersion().getVersion(), contentType, accept, body, requestOptions, context)); + } + + /** + * Transcribes the provided audio stream. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     durationMilliseconds: int (Required)
+     *     combinedPhrases (Required): [
+     *          (Required){
+     *             channel: Integer (Optional)
+     *             text: String (Required)
+     *         }
+     *     ]
+     *     phrases (Required): [
+     *          (Required){
+     *             channel: Integer (Optional)
+     *             speaker: Integer (Optional)
+     *             offsetMilliseconds: int (Required)
+     *             durationMilliseconds: int (Required)
+     *             text: String (Required)
+     *             words (Optional): [
+     *                  (Optional){
+     *                     text: String (Required)
+     *                     offsetMilliseconds: int (Required)
+     *                     durationMilliseconds: int (Required)
+     *                 }
+     *             ]
+     *             locale: String (Optional)
+     *             confidence: double (Required)
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + * @param body The body of the multipart request. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the result of the transcribe operation along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response transcribeWithResponse(BinaryData body, RequestOptions requestOptions) { + final String contentType = "multipart/form-data"; + final String accept = "application/json"; + return service.transcribeSync(this.getEndpoint(), this.getServiceVersion().getVersion(), contentType, accept, + body, requestOptions, Context.NONE); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/package-info.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/package-info.java new file mode 100644 index 000000000000..140636afd3d6 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/package-info.java @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +/** + * + * Package containing the implementations for Transcription. + * + */ +package com.azure.ai.speech.transcription.implementation; diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/AudioFileDetails.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/AudioFileDetails.java new file mode 100644 index 000000000000..7381bc25899d --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/AudioFileDetails.java @@ -0,0 +1,119 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.speech.transcription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; + +/** + * The file details for the "audio" field. + */ +@Fluent +public final class AudioFileDetails { + + /* + * The content of the file. + */ + @Generated + private final BinaryData content; + + /* + * The filename of the file. + */ + @Generated + private String filename; + + /* + * The content-type of the file. + */ + @Generated + private String contentType = "application/octet-stream"; + + /** + * Creates an instance of AudioFileDetails class. + * + * @param content the content value to set. + */ + @Generated + public AudioFileDetails(BinaryData content) { + this.content = content; + } + + /** + * Get the content property: The content of the file. + * + * @return the content value. + */ + @Generated + public BinaryData getContent() { + return this.content; + } + + /** + * Get the filename property: The filename of the file. If not explicitly set, a filename will be auto-generated + * from the contentType. + * + * @return the filename value, or an auto-generated filename if not set. + */ + @Generated + public String getFilename() { + if (this.filename != null && !this.filename.isEmpty()) { + return this.filename; + } + if ("audio/wav".equalsIgnoreCase(this.contentType)) { + return "audio.wav"; + } + if ("audio/mpeg".equalsIgnoreCase(this.contentType) || "audio/mp3".equalsIgnoreCase(this.contentType)) { + return "audio.mp3"; + } + if ("audio/ogg".equalsIgnoreCase(this.contentType)) { + return "audio.ogg"; + } + if ("audio/flac".equalsIgnoreCase(this.contentType)) { + return "audio.flac"; + } + if ("audio/webm".equalsIgnoreCase(this.contentType)) { + return "audio.webm"; + } + if ("audio/opus".equalsIgnoreCase(this.contentType)) { + return "audio.opus"; + } + return "audio"; + } + + /** + * Set the filename property: The filename of the file. + * + * @param filename the filename value to set. + * @return the AudioFileDetails object itself. + */ + @Generated + public AudioFileDetails setFilename(String filename) { + this.filename = filename; + return this; + } + + /** + * Get the contentType property: The content-type of the file. + * + * @return the contentType value. + */ + @Generated + public String getContentType() { + return this.contentType; + } + + /** + * Set the contentType property: The content-type of the file. + * + * @param contentType the contentType value to set. + * @return the AudioFileDetails object itself. + */ + @Generated + public AudioFileDetails setContentType(String contentType) { + this.contentType = contentType; + return this; + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/ChannelCombinedPhrases.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/ChannelCombinedPhrases.java new file mode 100644 index 000000000000..a315b684bc4c --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/ChannelCombinedPhrases.java @@ -0,0 +1,104 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.speech.transcription.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The full transcript per channel. + */ +@Immutable +public final class ChannelCombinedPhrases implements JsonSerializable { + + /* + * The 0-based channel index. Only present if channel separation is enabled. + */ + @Generated + private Integer channel; + + /* + * The complete transcribed text for the channel. + */ + @Generated + private final String text; + + /** + * Creates an instance of ChannelCombinedPhrases class. + * + * @param text the text value to set. + */ + @Generated + private ChannelCombinedPhrases(String text) { + this.text = text; + } + + /** + * Get the channel property: The 0-based channel index. Only present if channel separation is enabled. + * + * @return the channel value. + */ + @Generated + public Integer getChannel() { + return this.channel; + } + + /** + * Get the text property: The complete transcribed text for the channel. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeNumberField("channel", this.channel); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ChannelCombinedPhrases from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ChannelCombinedPhrases if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the ChannelCombinedPhrases. + */ + @Generated + public static ChannelCombinedPhrases fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String text = null; + Integer channel = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("text".equals(fieldName)) { + text = reader.getString(); + } else if ("channel".equals(fieldName)) { + channel = reader.getNullable(JsonReader::getInt); + } else { + reader.skipChildren(); + } + } + ChannelCombinedPhrases deserializedChannelCombinedPhrases = new ChannelCombinedPhrases(text); + deserializedChannelCombinedPhrases.channel = channel; + return deserializedChannelCombinedPhrases; + }); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/EnhancedModeOptions.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/EnhancedModeOptions.java new file mode 100644 index 000000000000..d013f508bb8e --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/EnhancedModeOptions.java @@ -0,0 +1,163 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.speech.transcription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Enhanced mode properties for transcription. + */ +@Fluent +public final class EnhancedModeOptions implements JsonSerializable { + + /* + * Enable enhanced mode for transcription. This is automatically set to true when task, targetLanguage, or prompt + * are specified. + */ + @Generated + private Boolean enabled; + + /* + * Task type for enhanced mode. + */ + @Generated + private String task; + + /* + * Target language for enhanced mode. + */ + @Generated + private String targetLanguage; + + /* + * A list of user prompts. + */ + @Generated + private List prompts; + + /** + * Creates an instance of EnhancedModeOptions class with enabled set to true. + */ + public EnhancedModeOptions() { + this.enabled = true; + } + + /** + * Get the task property: Task type for enhanced mode. + * + * @return the task value. + */ + @Generated + public String getTask() { + return this.task; + } + + /** + * Set the task property: Task type for enhanced mode. + * + * @param task the task value to set. + * @return the EnhancedModeOptions object itself. + */ + @Generated + public EnhancedModeOptions setTask(String task) { + this.task = task; + return this; + } + + /** + * Get the targetLanguage property: Target language for enhanced mode. + * + * @return the targetLanguage value. + */ + @Generated + public String getTargetLanguage() { + return this.targetLanguage; + } + + /** + * Set the targetLanguage property: Target language for enhanced mode. + * + * @param targetLanguage the targetLanguage value to set. + * @return the EnhancedModeOptions object itself. + */ + @Generated + public EnhancedModeOptions setTargetLanguage(String targetLanguage) { + this.targetLanguage = targetLanguage; + return this; + } + + /** + * Get the prompts property: A list of user prompts. + * + * @return the prompts value. + */ + @Generated + public List getPrompts() { + return this.prompts; + } + + /** + * Set the prompts property: A list of user prompts. + * + * @param prompts the prompts value to set. + * @return the EnhancedModeOptions object itself. + */ + @Generated + public EnhancedModeOptions setPrompts(List prompts) { + this.prompts = prompts; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("task", this.task); + jsonWriter.writeStringField("targetLanguage", this.targetLanguage); + jsonWriter.writeArrayField("prompt", this.prompts, (writer, element) -> writer.writeString(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of EnhancedModeOptions from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of EnhancedModeOptions if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the EnhancedModeOptions. + */ + @Generated + public static EnhancedModeOptions fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + EnhancedModeOptions deserializedEnhancedModeOptions = new EnhancedModeOptions(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("enabled".equals(fieldName)) { + deserializedEnhancedModeOptions.enabled = reader.getNullable(JsonReader::getBoolean); + } else if ("task".equals(fieldName)) { + deserializedEnhancedModeOptions.task = reader.getString(); + } else if ("targetLanguage".equals(fieldName)) { + deserializedEnhancedModeOptions.targetLanguage = reader.getString(); + } else if ("prompt".equals(fieldName)) { + List prompts = reader.readArray(reader1 -> reader1.getString()); + deserializedEnhancedModeOptions.prompts = prompts; + } else { + reader.skipChildren(); + } + } + return deserializedEnhancedModeOptions; + }); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/PhraseListOptions.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/PhraseListOptions.java new file mode 100644 index 000000000000..e269745eaf87 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/PhraseListOptions.java @@ -0,0 +1,123 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.speech.transcription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Phrase list properties for transcription. + */ +@Fluent +public final class PhraseListOptions implements JsonSerializable { + + /* + * List of phrases for recognition. + */ + @Generated + private List phrases; + + /* + * Biasing weight for phrase list (1.0 to 20.0). + */ + @Generated + private Double biasingWeight; + + /** + * Creates an instance of PhraseListOptions class. + */ + @Generated + public PhraseListOptions() { + } + + /** + * Get the phrases property: List of phrases for recognition. + * + * @return the phrases value. + */ + @Generated + public List getPhrases() { + return this.phrases; + } + + /** + * Set the phrases property: List of phrases for recognition. + * + * @param phrases the phrases value to set. + * @return the PhraseListOptions object itself. + */ + @Generated + public PhraseListOptions setPhrases(List phrases) { + this.phrases = phrases; + return this; + } + + /** + * Get the biasingWeight property: Biasing weight for phrase list (1.0 to 20.0). + * + * @return the biasingWeight value. + */ + @Generated + public Double getBiasingWeight() { + return this.biasingWeight; + } + + /** + * Set the biasingWeight property: Biasing weight for phrase list (1.0 to 20.0). + * + * @param biasingWeight the biasingWeight value to set. + * @return the PhraseListOptions object itself. + */ + @Generated + public PhraseListOptions setBiasingWeight(Double biasingWeight) { + this.biasingWeight = biasingWeight; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("phrases", this.phrases, (writer, element) -> writer.writeString(element)); + jsonWriter.writeNumberField("biasingWeight", this.biasingWeight); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of PhraseListOptions from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of PhraseListOptions if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the PhraseListOptions. + */ + @Generated + public static PhraseListOptions fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + PhraseListOptions deserializedPhraseListOptions = new PhraseListOptions(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("phrases".equals(fieldName)) { + List phrases = reader.readArray(reader1 -> reader1.getString()); + deserializedPhraseListOptions.phrases = phrases; + } else if ("biasingWeight".equals(fieldName)) { + deserializedPhraseListOptions.biasingWeight = reader.getNullable(JsonReader::getDouble); + } else { + reader.skipChildren(); + } + } + return deserializedPhraseListOptions; + }); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/ProfanityFilterMode.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/ProfanityFilterMode.java new file mode 100644 index 000000000000..8031bcadc6ae --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/ProfanityFilterMode.java @@ -0,0 +1,69 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.speech.transcription.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Mode of profanity filtering. + */ +public final class ProfanityFilterMode extends ExpandableStringEnum { + + /** + * Disable profanity filtering. + */ + @Generated + public static final ProfanityFilterMode NONE = fromString("None"); + + /** + * Remove profanity. + */ + @Generated + public static final ProfanityFilterMode REMOVED = fromString("Removed"); + + /** + * Add "profanity" XML tags</Profanity>. + */ + @Generated + public static final ProfanityFilterMode TAGS = fromString("Tags"); + + /** + * Mask the profanity with * except of the first letter, e.g., f***. + */ + @Generated + public static final ProfanityFilterMode MASKED = fromString("Masked"); + + /** + * Creates a new instance of ProfanityFilterMode value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public ProfanityFilterMode() { + } + + /** + * Creates or finds a ProfanityFilterMode from its string representation. + * + * @param name a name to look for. + * @return the corresponding ProfanityFilterMode. + */ + @Generated + public static ProfanityFilterMode fromString(String name) { + return fromString(name, ProfanityFilterMode.class); + } + + /** + * Gets known ProfanityFilterMode values. + * + * @return known ProfanityFilterMode values. + */ + @Generated + public static Collection values() { + return values(ProfanityFilterMode.class); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscribedPhrase.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscribedPhrase.java new file mode 100644 index 000000000000..6406e29ed530 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscribedPhrase.java @@ -0,0 +1,237 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.speech.transcription.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; +import java.util.List; + +/** + * A transcribed phrase. + */ +@Immutable +public final class TranscribedPhrase implements JsonSerializable { + + /* + * The 0-based channel index. Only present if channel separation is enabled. + */ + @Generated + private Integer channel; + + /* + * A unique integer number that is assigned to each speaker detected in the audio without particular order. Only + * present if speaker diarization is enabled. + */ + @Generated + private Integer speaker; + + /* + * The start offset of the phrase in milliseconds. + */ + @Generated + private final int offset; + + /* + * The duration of the phrase in milliseconds. + */ + @Generated + private final int duration; + + /* + * The transcribed text of the phrase. + */ + @Generated + private final String text; + + /* + * The words that make up the phrase. Only present if word-level timestamps are enabled. + */ + @Generated + private List words; + + /* + * The locale of the phrase. + */ + @Generated + private String locale; + + /* + * The confidence value for the phrase. + */ + @Generated + private final double confidence; + + /** + * Creates an instance of TranscribedPhrase class. + * + * @param offset the offset value to set. + * @param duration the duration value to set. + * @param text the text value to set. + * @param confidence the confidence value to set. + */ + @Generated + private TranscribedPhrase(int offset, int duration, String text, double confidence) { + this.offset = offset; + this.duration = duration; + this.text = text; + this.confidence = confidence; + } + + /** + * Get the channel property: The 0-based channel index. Only present if channel separation is enabled. + * + * @return the channel value. + */ + @Generated + public Integer getChannel() { + return this.channel; + } + + /** + * Get the speaker property: A unique integer number that is assigned to each speaker detected in the audio without + * particular order. Only present if speaker diarization is enabled. + * + * @return the speaker value. + */ + @Generated + public Integer getSpeaker() { + return this.speaker; + } + + /** + * Get the offset property: The start offset of the phrase in milliseconds. + * + * @return the offset value. + */ + @Generated + public int getOffset() { + return this.offset; + } + + /** + * Get the duration property: The duration in milliseconds. + * + * @return the duration value as Duration. + */ + @Generated + public Duration getDuration() { + return Duration.ofMillis(this.duration); + } + + /** + * Get the text property: The transcribed text of the phrase. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * Get the words property: The words that make up the phrase. Only present if word-level timestamps are enabled. + * + * @return the words value. + */ + @Generated + public List getWords() { + return this.words; + } + + /** + * Get the locale property: The locale of the phrase. + * + * @return the locale value. + */ + @Generated + public String getLocale() { + return this.locale; + } + + /** + * Get the confidence property: The confidence value for the phrase. + * + * @return the confidence value. + */ + @Generated + public double getConfidence() { + return this.confidence; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeIntField("offsetMilliseconds", this.offset); + jsonWriter.writeIntField("durationMilliseconds", this.duration); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeDoubleField("confidence", this.confidence); + jsonWriter.writeNumberField("channel", this.channel); + jsonWriter.writeNumberField("speaker", this.speaker); + jsonWriter.writeArrayField("words", this.words, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("locale", this.locale); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TranscribedPhrase from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TranscribedPhrase if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TranscribedPhrase. + */ + @Generated + public static TranscribedPhrase fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + int offset = 0; + int duration = 0; + String text = null; + double confidence = 0.0; + Integer channel = null; + Integer speaker = null; + List words = null; + String locale = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("offsetMilliseconds".equals(fieldName)) { + offset = reader.getInt(); + } else if ("durationMilliseconds".equals(fieldName)) { + duration = reader.getInt(); + } else if ("text".equals(fieldName)) { + text = reader.getString(); + } else if ("confidence".equals(fieldName)) { + confidence = reader.getDouble(); + } else if ("channel".equals(fieldName)) { + channel = reader.getNullable(JsonReader::getInt); + } else if ("speaker".equals(fieldName)) { + speaker = reader.getNullable(JsonReader::getInt); + } else if ("words".equals(fieldName)) { + words = reader.readArray(reader1 -> TranscribedWord.fromJson(reader1)); + } else if ("locale".equals(fieldName)) { + locale = reader.getString(); + } else { + reader.skipChildren(); + } + } + TranscribedPhrase deserializedTranscribedPhrase = new TranscribedPhrase(offset, duration, text, confidence); + deserializedTranscribedPhrase.channel = channel; + deserializedTranscribedPhrase.speaker = speaker; + deserializedTranscribedPhrase.words = words; + deserializedTranscribedPhrase.locale = locale; + return deserializedTranscribedPhrase; + }); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscribedWord.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscribedWord.java new file mode 100644 index 000000000000..a0c046e15cbe --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscribedWord.java @@ -0,0 +1,127 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.speech.transcription.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * Time-stamped word in the display form. + */ +@Immutable +public final class TranscribedWord implements JsonSerializable { + + /* + * The recognized word, including punctuation. + */ + @Generated + private final String text; + + /* + * The start offset of the word in milliseconds. + */ + @Generated + private final int offset; + + /* + * The duration of the word in milliseconds. + */ + @Generated + private final int duration; + + /** + * Creates an instance of TranscribedWord class. + * + * @param text the text value to set. + * @param offset the offset value to set. + * @param duration the duration value to set. + */ + @Generated + private TranscribedWord(String text, int offset, int duration) { + this.text = text; + this.offset = offset; + this.duration = duration; + } + + /** + * Get the text property: The recognized word, including punctuation. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * Get the offset property: The start offset of the word in milliseconds. + * + * @return the offset value. + */ + @Generated + public int getOffset() { + return this.offset; + } + + /** + * Get the duration property: The duration in milliseconds. + * + * @return the duration value as Duration. + */ + @Generated + public Duration getDuration() { + return Duration.ofMillis(this.duration); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeIntField("offsetMilliseconds", this.offset); + jsonWriter.writeIntField("durationMilliseconds", this.duration); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TranscribedWord from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TranscribedWord if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TranscribedWord. + */ + @Generated + public static TranscribedWord fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String text = null; + int offset = 0; + int duration = 0; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("text".equals(fieldName)) { + text = reader.getString(); + } else if ("offsetMilliseconds".equals(fieldName)) { + offset = reader.getInt(); + } else if ("durationMilliseconds".equals(fieldName)) { + duration = reader.getInt(); + } else { + reader.skipChildren(); + } + } + return new TranscribedWord(text, offset, duration); + }); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionContent.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionContent.java new file mode 100644 index 000000000000..5ba64e48e89e --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionContent.java @@ -0,0 +1,73 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.speech.transcription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; + +/** + * Request model for transcription operation. + */ +@Fluent +public final class TranscriptionContent { + + /* + * The content of the audio file to be transcribed. The audio file must be shorter than 2 hours in audio duration + * and smaller than 250 MB in size. Optional if audioUrl is provided in the definition. + */ + @Generated + private AudioFileDetails audio; + + /** + * Get the audio property: The content of the audio file to be transcribed. The audio file must be shorter than 2 + * hours in audio duration and smaller than 250 MB in size. Optional if audioUrl is provided in the definition. + * + * @return the audio value. + */ + @Generated + public AudioFileDetails getAudio() { + return this.audio; + } + + /** + * Set the audio property: The content of the audio file to be transcribed. The audio file must be shorter than 2 + * hours in audio duration and smaller than 250 MB in size. Optional if audioUrl is provided in the definition. + * + * @param audio the audio value to set. + * @return the TranscriptionContent object itself. + */ + @Generated + public TranscriptionContent setAudio(AudioFileDetails audio) { + this.audio = audio; + return this; + } + + /** + * Creates an instance of TranscriptionContent class. + * + * @param options the options value to set. + */ + @Generated + public TranscriptionContent(TranscriptionOptions options) { + this.options = options; + } + + /* + * Metadata for a transcription request. This field contains a JSON-serialized object of type + * `TranscriptionOptions`. + */ + @Generated + private final TranscriptionOptions options; + + /** + * Get the options property: Metadata for a transcription request. This field contains a JSON-serialized object of + * type `TranscriptionOptions`. + * + * @return the options value. + */ + @Generated + public TranscriptionOptions getOptions() { + return this.options; + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionDiarizationOptions.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionDiarizationOptions.java new file mode 100644 index 000000000000..831c546c31ed --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionDiarizationOptions.java @@ -0,0 +1,115 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.speech.transcription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The Speaker Diarization settings. Diarization settings must be specified to enable speaker diarization. + */ +@Fluent +public final class TranscriptionDiarizationOptions implements JsonSerializable { + + /* + * Enable speaker diarization. This is automatically set to true when maxSpeakers is specified. + */ + @Generated + private Boolean enabled; + + /* + * Gets or sets a hint for the maximum number of speakers for diarization. Must be greater than 1 and less than 36. + */ + @Generated + private Integer maxSpeakers; + + /** + * Creates an instance of TranscriptionDiarizationOptions class. + */ + @Generated + public TranscriptionDiarizationOptions() { + } + + /** + * Get the enabled property: Enable speaker diarization. This is automatically set to true when maxSpeakers is + * specified. + * + * @return the enabled value. + */ + @Generated + public Boolean isEnabled() { + return this.enabled; + } + + /** + * Get the maxSpeakers property: Gets or sets a hint for the maximum number of speakers for diarization. Must be + * greater than 1 and less than 36. + * + * @return the maxSpeakers value. + */ + @Generated + public Integer getMaxSpeakers() { + return this.maxSpeakers; + } + + /** + * Set the maxSpeakers property: Gets or sets a hint for the maximum number of speakers for diarization. Must be + * greater than 1 and less than 36. + * + * @param maxSpeakers the maxSpeakers value to set. + * @return the TranscriptionDiarizationOptions object itself. + */ + @Generated + public TranscriptionDiarizationOptions setMaxSpeakers(Integer maxSpeakers) { + this.maxSpeakers = maxSpeakers; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (this.maxSpeakers != null) { + jsonWriter.writeBooleanField("enabled", true); + jsonWriter.writeNumberField("maxSpeakers", this.maxSpeakers); + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TranscriptionDiarizationOptions from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TranscriptionDiarizationOptions if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the TranscriptionDiarizationOptions. + */ + @Generated + public static TranscriptionDiarizationOptions fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TranscriptionDiarizationOptions deserializedTranscriptionDiarizationOptions + = new TranscriptionDiarizationOptions(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("enabled".equals(fieldName)) { + deserializedTranscriptionDiarizationOptions.enabled = reader.getNullable(JsonReader::getBoolean); + } else if ("maxSpeakers".equals(fieldName)) { + deserializedTranscriptionDiarizationOptions.maxSpeakers = reader.getNullable(JsonReader::getInt); + } else { + reader.skipChildren(); + } + } + return deserializedTranscriptionDiarizationOptions; + }); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionOptions.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionOptions.java new file mode 100644 index 000000000000..2b298d84d59a --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionOptions.java @@ -0,0 +1,350 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.speech.transcription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * Metadata for a transcription request. + */ +@Fluent +public final class TranscriptionOptions implements JsonSerializable { + + /* + * The URL of the audio to be transcribed. The audio must be shorter than 2 hours in audio duration and smaller than + * 250 MB in size. If both Audio and AudioUrl are provided, Audio is used. + */ + @Generated + private String audioUrl; + + /* + * A list of possible locales for the transcription. If not specified, the locale of the speech in the audio is + * detected automatically from all supported locales. + */ + @Generated + private List locales; + + /* + * Maps some or all candidate locales to a model URI to be used for transcription. If no mapping is given, the + * default model for the locale is used. + */ + @Generated + private Map localeModelMapping; + + /* + * Mode of profanity filtering. + */ + @Generated + private ProfanityFilterMode profanityFilterMode; + + /* + * Mode of diarization. + */ + @Generated + private TranscriptionDiarizationOptions diarizationOptions; + + /* + * The 0-based indices of the channels to be transcribed separately. If not specified, multiple channels are merged + * and transcribed jointly. Only up to two channels are supported. + */ + @Generated + private List activeChannels; + + /* + * Enhanced mode properties. + */ + @Generated + private EnhancedModeOptions enhancedModeOptions; + + /* + * Phrase list properties. + */ + @Generated + private PhraseListOptions phraseListOptions; + + /** + * Get the audioUrl property: The URL of the audio to be transcribed. The audio must be shorter than 2 hours in + * audio duration and smaller than 250 MB in size. If both Audio and AudioUrl are provided, Audio is used. + * + * @return the audioUrl value. + */ + @Generated + public String getAudioUrl() { + return this.audioUrl; + } + + /** + * Set the audioUrl property: The URL of the audio to be transcribed. The audio must be shorter than 2 hours in + * audio duration and smaller than 250 MB in size. If both Audio and AudioUrl are provided, Audio is used. + * + * @param audioUrl the audioUrl value to set. + * @return the TranscriptionOptions object itself. + */ + @Generated + private TranscriptionOptions setAudioUrl(String audioUrl) { + this.audioUrl = audioUrl; + return this; + } + + /** + * Get the locales property: A list of possible locales for the transcription. If not specified, the locale of the + * speech in the audio is detected automatically from all supported locales. + * + * @return the locales value. + */ + @Generated + public List getLocales() { + return this.locales; + } + + /** + * Set the locales property: A list of possible locales for the transcription. If not specified, the locale of the + * speech in the audio is detected automatically from all supported locales. + * + * @param locales the locales value to set. + * @return the TranscriptionOptions object itself. + */ + @Generated + public TranscriptionOptions setLocales(List locales) { + this.locales = locales; + return this; + } + + /** + * Get the localeModelMapping property: Maps some or all candidate locales to a model URI to be used for + * transcription. If no mapping is given, the default model for the locale is used. + * + * @return the localeModelMapping value. + */ + @Generated + public Map getLocaleModelMapping() { + return this.localeModelMapping; + } + + /** + * Set the localeModelMapping property: Maps some or all candidate locales to a model URI to be used for + * transcription. If no mapping is given, the default model for the locale is used. + * + * @param localeModelMapping the localeModelMapping value to set. + * @return the TranscriptionOptions object itself. + */ + @Generated + public TranscriptionOptions setLocaleModelMapping(Map localeModelMapping) { + this.localeModelMapping = localeModelMapping; + return this; + } + + /** + * Get the profanityFilterMode property: Mode of profanity filtering. + * + * @return the profanityFilterMode value. + */ + @Generated + public ProfanityFilterMode getProfanityFilterMode() { + return this.profanityFilterMode; + } + + /** + * Set the profanityFilterMode property: Mode of profanity filtering. + * + * @param profanityFilterMode the profanityFilterMode value to set. + * @return the TranscriptionOptions object itself. + */ + @Generated + public TranscriptionOptions setProfanityFilterMode(ProfanityFilterMode profanityFilterMode) { + this.profanityFilterMode = profanityFilterMode; + return this; + } + + /** + * Get the diarizationOptions property: Mode of diarization. + * + * @return the diarizationOptions value. + */ + @Generated + public TranscriptionDiarizationOptions getDiarizationOptions() { + return this.diarizationOptions; + } + + /** + * Set the diarizationOptions property: Mode of diarization. + * + * @param diarizationOptions the diarizationOptions value to set. + * @return the TranscriptionOptions object itself. + */ + @Generated + public TranscriptionOptions setDiarizationOptions(TranscriptionDiarizationOptions diarizationOptions) { + this.diarizationOptions = diarizationOptions; + return this; + } + + /** + * Get the activeChannels property: The 0-based indices of the channels to be transcribed separately. If not + * specified, multiple channels are merged and transcribed jointly. Only up to two channels are supported. + * + * @return the activeChannels value. + */ + @Generated + public List getActiveChannels() { + return this.activeChannels; + } + + /** + * Set the activeChannels property: The 0-based indices of the channels to be transcribed separately. If not + * specified, multiple channels are merged and transcribed jointly. Only up to two channels are supported. + * + * @param activeChannels the activeChannels value to set. + * @return the TranscriptionOptions object itself. + */ + @Generated + public TranscriptionOptions setActiveChannels(List activeChannels) { + this.activeChannels = activeChannels; + return this; + } + + /** + * Get the enhancedModeOptions property: Enhanced mode properties. + * + * @return the enhancedModeOptions value. + */ + @Generated + public EnhancedModeOptions getEnhancedModeOptions() { + return this.enhancedModeOptions; + } + + /** + * Set the enhancedModeOptions property: Enhanced mode properties. + * + * @param enhancedModeOptions the enhancedModeOptions value to set. + * @return the TranscriptionOptions object itself. + */ + @Generated + public TranscriptionOptions setEnhancedModeOptions(EnhancedModeOptions enhancedModeOptions) { + this.enhancedModeOptions = enhancedModeOptions; + return this; + } + + /** + * Get the phraseListOptions property: Phrase list properties. + * + * @return the phraseListOptions value. + */ + @Generated + public PhraseListOptions getPhraseListOptions() { + return this.phraseListOptions; + } + + /** + * Set the phraseListOptions property: Phrase list properties. + * + * @param phraseListOptions the phraseListOptions value to set. + * @return the TranscriptionOptions object itself. + */ + @Generated + public TranscriptionOptions setPhraseListOptions(PhraseListOptions phraseListOptions) { + this.phraseListOptions = phraseListOptions; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("audioUrl", this.audioUrl); + jsonWriter.writeArrayField("locales", this.locales, (writer, element) -> writer.writeString(element)); + jsonWriter.writeMapField("models", this.localeModelMapping, (writer, element) -> writer.writeString(element)); + jsonWriter.writeStringField("profanityFilterMode", + this.profanityFilterMode == null ? null : this.profanityFilterMode.toString()); + jsonWriter.writeJsonField("diarization", this.diarizationOptions); + jsonWriter.writeArrayField("channels", this.activeChannels, (writer, element) -> writer.writeInt(element)); + jsonWriter.writeJsonField("enhancedMode", this.enhancedModeOptions); + jsonWriter.writeJsonField("phraseList", this.phraseListOptions); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TranscriptionOptions from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TranscriptionOptions if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the TranscriptionOptions. + */ + @Generated + public static TranscriptionOptions fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TranscriptionOptions deserializedTranscriptionOptions = new TranscriptionOptions((String) null); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("audioUrl".equals(fieldName)) { + deserializedTranscriptionOptions.audioUrl = reader.getString(); + } else if ("locales".equals(fieldName)) { + List locales = reader.readArray(reader1 -> reader1.getString()); + deserializedTranscriptionOptions.locales = locales; + } else if ("localeModelMapping".equals(fieldName)) { + Map localeModelMapping = reader.readMap(reader1 -> reader1.getString()); + deserializedTranscriptionOptions.localeModelMapping = localeModelMapping; + } else if ("profanityFilterMode".equals(fieldName)) { + deserializedTranscriptionOptions.profanityFilterMode + = ProfanityFilterMode.fromString(reader.getString()); + } else if ("diarization".equals(fieldName)) { + deserializedTranscriptionOptions.diarizationOptions + = TranscriptionDiarizationOptions.fromJson(reader); + } else if ("channels".equals(fieldName)) { + List activeChannels = reader.readArray(reader1 -> reader1.getInt()); + deserializedTranscriptionOptions.activeChannels = activeChannels; + } else if ("enhancedMode".equals(fieldName)) { + deserializedTranscriptionOptions.enhancedModeOptions = EnhancedModeOptions.fromJson(reader); + } else if ("phraseList".equals(fieldName)) { + deserializedTranscriptionOptions.phraseListOptions = PhraseListOptions.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedTranscriptionOptions; + }); + } + + private final AudioFileDetails audioFileDetails; + + /** + * Creates an instance of TranscriptionOptions class with audio URL. + * + * @param audioUrl the URL of the audio to be transcribed + */ + public TranscriptionOptions(String audioUrl) { + this.audioUrl = audioUrl; + this.audioFileDetails = null; + } + + /** + * Creates an instance of TranscriptionOptions class with audio file details. + * + * @param fileDetails the audio file details + */ + public TranscriptionOptions(AudioFileDetails fileDetails) { + this.audioFileDetails = fileDetails; + } + + /** + * Get the audioFileDetails property: The audio file details for transcription. + * + * @return the audioFileDetails value. + */ + public AudioFileDetails getFileDetails() { + return this.audioFileDetails; + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionResult.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionResult.java new file mode 100644 index 000000000000..12d5a00d20a1 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/TranscriptionResult.java @@ -0,0 +1,130 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.speech.transcription.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; +import java.util.List; + +/** + * The result of the transcribe operation. + */ +@Immutable +public final class TranscriptionResult implements JsonSerializable { + + /* + * The duration of the audio in milliseconds. + */ + @Generated + private final int duration; + + /* + * The full transcript for each channel. + */ + @Generated + private final List combinedPhrases; + + /* + * The transcription results segmented into phrases. + */ + @Generated + private final List phrases; + + /** + * Creates an instance of TranscriptionResult class. + * + * @param duration the duration value to set. + * @param combinedPhrases the combinedPhrases value to set. + * @param phrases the phrases value to set. + */ + @Generated + private TranscriptionResult(int duration, List combinedPhrases, + List phrases) { + this.duration = duration; + this.combinedPhrases = combinedPhrases; + this.phrases = phrases; + } + + /** + * Get the duration property: The duration in milliseconds. + * + * @return the duration value as Duration. + */ + @Generated + public Duration getDuration() { + return Duration.ofMillis(this.duration); + } + + /** + * Get the combinedPhrases property: The full transcript for each channel. + * + * @return the combinedPhrases value. + */ + @Generated + public List getCombinedPhrases() { + return this.combinedPhrases; + } + + /** + * Get the phrases property: The transcription results segmented into phrases. + * + * @return the phrases value. + */ + @Generated + public List getPhrases() { + return this.phrases; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeIntField("durationMilliseconds", this.duration); + jsonWriter.writeArrayField("combinedPhrases", this.combinedPhrases, + (writer, element) -> writer.writeJson(element)); + jsonWriter.writeArrayField("phrases", this.phrases, (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TranscriptionResult from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TranscriptionResult if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TranscriptionResult. + */ + @Generated + public static TranscriptionResult fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + int duration = 0; + List combinedPhrases = null; + List phrases = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("durationMilliseconds".equals(fieldName)) { + duration = reader.getInt(); + } else if ("combinedPhrases".equals(fieldName)) { + combinedPhrases = reader.readArray(reader1 -> ChannelCombinedPhrases.fromJson(reader1)); + } else if ("phrases".equals(fieldName)) { + phrases = reader.readArray(reader1 -> TranscribedPhrase.fromJson(reader1)); + } else { + reader.skipChildren(); + } + } + return new TranscriptionResult(duration, combinedPhrases, phrases); + }); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/package-info.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/package-info.java new file mode 100644 index 000000000000..f1ff4db6a641 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/models/package-info.java @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +/** + * + * Package containing the data models for Transcription. + * + */ +package com.azure.ai.speech.transcription.models; diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/package-info.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/package-info.java new file mode 100644 index 000000000000..8e50f3224f2d --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/package-info.java @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +/** + * + * Package containing the classes for Transcription. + * + */ +package com.azure.ai.speech.transcription; diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/module-info.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/module-info.java new file mode 100644 index 000000000000..434a8672d9f3 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/module-info.java @@ -0,0 +1,12 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +module com.azure.ai.speech.transcription { + requires transitive com.azure.core; + + exports com.azure.ai.speech.transcription; + exports com.azure.ai.speech.transcription.models; + + opens com.azure.ai.speech.transcription.models to com.azure.core; +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/resources/META-INF/azure-ai-speech-transcription_apiview_properties.json b/sdk/transcription/azure-ai-speech-transcription/src/main/resources/META-INF/azure-ai-speech-transcription_apiview_properties.json new file mode 100644 index 000000000000..e70a697123f8 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/resources/META-INF/azure-ai-speech-transcription_apiview_properties.json @@ -0,0 +1,23 @@ +{ + "flavor": "azure", + "CrossLanguageDefinitionId": { + "com.azure.ai.speech.transcription.TranscriptionAsyncClient": "Azure.Ai.Speech.Transcription", + "com.azure.ai.speech.transcription.TranscriptionAsyncClient.transcribe": "Azure.Ai.Speech.Transcription.transcribe", + "com.azure.ai.speech.transcription.TranscriptionAsyncClient.transcribeWithResponse": "Azure.Ai.Speech.Transcription.transcribe", + "com.azure.ai.speech.transcription.TranscriptionClient": "Azure.Ai.Speech.Transcription", + "com.azure.ai.speech.transcription.TranscriptionClient.transcribe": "Azure.Ai.Speech.Transcription.transcribe", + "com.azure.ai.speech.transcription.TranscriptionClient.transcribeWithResponse": "Azure.Ai.Speech.Transcription.transcribe", + "com.azure.ai.speech.transcription.TranscriptionClientBuilder": "Azure.Ai.Speech.Transcription", + "com.azure.ai.speech.transcription.models.AudioFileDetails": null, + "com.azure.ai.speech.transcription.models.ChannelCombinedPhrases": "Azure.Ai.Speech.Transcription.ChannelCombinedPhrases", + "com.azure.ai.speech.transcription.models.EnhancedModeOptions": "Azure.Ai.Speech.Transcription.EnhancedModeProperties", + "com.azure.ai.speech.transcription.models.PhraseListOptions": "Azure.Ai.Speech.Transcription.PhraseListProperties", + "com.azure.ai.speech.transcription.models.ProfanityFilterMode": "Azure.Ai.Speech.Transcription.ProfanityFilterMode", + "com.azure.ai.speech.transcription.models.TranscribedPhrase": "Azure.Ai.Speech.Transcription.TranscribedPhrase", + "com.azure.ai.speech.transcription.models.TranscribedWord": "Azure.Ai.Speech.Transcription.TranscribedWord", + "com.azure.ai.speech.transcription.models.TranscriptionContent": "Azure.Ai.Speech.Transcription.TranscriptionContent", + "com.azure.ai.speech.transcription.models.TranscriptionDiarizationOptions": "Azure.Ai.Speech.Transcription.TranscriptionDiarizationOptions", + "com.azure.ai.speech.transcription.models.TranscriptionOptions": "Azure.Ai.Speech.Transcription.TranscriptionOptions", + "com.azure.ai.speech.transcription.models.TranscriptionResult": "Azure.Ai.Speech.Transcription.TranscriptionResult" + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/resources/META-INF/azure-ai-speech-transcription_metadata.json b/sdk/transcription/azure-ai-speech-transcription/src/main/resources/META-INF/azure-ai-speech-transcription_metadata.json new file mode 100644 index 000000000000..7ff97cdfa258 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/resources/META-INF/azure-ai-speech-transcription_metadata.json @@ -0,0 +1 @@ +{"flavor":"azure","apiVersion":"2025-10-15","crossLanguageDefinitions":{"com.azure.ai.speech.transcription.TranscriptionAsyncClient":"Azure.Ai.Speech.Transcription","com.azure.ai.speech.transcription.TranscriptionAsyncClient.transcribe":"Azure.Ai.Speech.Transcription.transcribe","com.azure.ai.speech.transcription.TranscriptionAsyncClient.transcribeWithResponse":"Azure.Ai.Speech.Transcription.transcribe","com.azure.ai.speech.transcription.TranscriptionClient":"Azure.Ai.Speech.Transcription","com.azure.ai.speech.transcription.TranscriptionClient.transcribe":"Azure.Ai.Speech.Transcription.transcribe","com.azure.ai.speech.transcription.TranscriptionClient.transcribeWithResponse":"Azure.Ai.Speech.Transcription.transcribe","com.azure.ai.speech.transcription.TranscriptionClientBuilder":"Azure.Ai.Speech.Transcription","com.azure.ai.speech.transcription.models.AudioFileDetails":null,"com.azure.ai.speech.transcription.models.ChannelCombinedPhrases":"Azure.Ai.Speech.Transcription.ChannelCombinedPhrases","com.azure.ai.speech.transcription.models.EnhancedModeOptions":"Azure.Ai.Speech.Transcription.EnhancedModeProperties","com.azure.ai.speech.transcription.models.PhraseListOptions":"Azure.Ai.Speech.Transcription.PhraseListProperties","com.azure.ai.speech.transcription.models.ProfanityFilterMode":"Azure.Ai.Speech.Transcription.ProfanityFilterMode","com.azure.ai.speech.transcription.models.TranscribedPhrase":"Azure.Ai.Speech.Transcription.TranscribedPhrase","com.azure.ai.speech.transcription.models.TranscribedWord":"Azure.Ai.Speech.Transcription.TranscribedWord","com.azure.ai.speech.transcription.models.TranscriptionContent":"Azure.Ai.Speech.Transcription.TranscriptionContent","com.azure.ai.speech.transcription.models.TranscriptionDiarizationOptions":"Azure.Ai.Speech.Transcription.TranscriptionDiarizationOptions","com.azure.ai.speech.transcription.models.TranscriptionOptions":"Azure.Ai.Speech.Transcription.TranscriptionOptions","com.azure.ai.speech.transcription.models.TranscriptionResult":"Azure.Ai.Speech.Transcription.TranscriptionResult"},"generatedFiles":["src/main/java/com/azure/ai/speech/transcription/TranscriptionAsyncClient.java","src/main/java/com/azure/ai/speech/transcription/TranscriptionClient.java","src/main/java/com/azure/ai/speech/transcription/TranscriptionClientBuilder.java","src/main/java/com/azure/ai/speech/transcription/TranscriptionServiceVersion.java","src/main/java/com/azure/ai/speech/transcription/implementation/MultipartFormDataHelper.java","src/main/java/com/azure/ai/speech/transcription/implementation/TranscriptionClientImpl.java","src/main/java/com/azure/ai/speech/transcription/implementation/package-info.java","src/main/java/com/azure/ai/speech/transcription/models/AudioFileDetails.java","src/main/java/com/azure/ai/speech/transcription/models/ChannelCombinedPhrases.java","src/main/java/com/azure/ai/speech/transcription/models/EnhancedModeOptions.java","src/main/java/com/azure/ai/speech/transcription/models/PhraseListOptions.java","src/main/java/com/azure/ai/speech/transcription/models/ProfanityFilterMode.java","src/main/java/com/azure/ai/speech/transcription/models/TranscribedPhrase.java","src/main/java/com/azure/ai/speech/transcription/models/TranscribedWord.java","src/main/java/com/azure/ai/speech/transcription/models/TranscriptionContent.java","src/main/java/com/azure/ai/speech/transcription/models/TranscriptionDiarizationOptions.java","src/main/java/com/azure/ai/speech/transcription/models/TranscriptionOptions.java","src/main/java/com/azure/ai/speech/transcription/models/TranscriptionResult.java","src/main/java/com/azure/ai/speech/transcription/models/package-info.java","src/main/java/com/azure/ai/speech/transcription/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/resources/azure-ai-speech-transcription.properties b/sdk/transcription/azure-ai-speech-transcription/src/main/resources/azure-ai-speech-transcription.properties new file mode 100644 index 000000000000..ca812989b4f2 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/resources/azure-ai-speech-transcription.properties @@ -0,0 +1,2 @@ +name=${project.artifactId} +version=${project.version} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/samples/assets/sample-audio.wav b/sdk/transcription/azure-ai-speech-transcription/src/samples/assets/sample-audio.wav new file mode 100644 index 0000000000000000000000000000000000000000..bf23d54b0c00ed3d980af954f9591a68d0d89550 GIT binary patch literal 764562 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π(xQ4@{lk0NJ4*fEIfRNFyJheI^NQ1PM6% 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/giG-O$Hmoit%Qi*jU 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ⅆ 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

u>)@V&?Y{2Ngu*Td}cV0E2(S^lWB zK-wb5)tbm$JQXr8ztmIGHnkl30=5;tL52EG-l0A~x+?L=0XzhwB|UCcTS-aC6?LpU z1MjKo6d&47TA^G~IY^DAV(W-%$}H5Oj#c_9{n5v&56yv0Y*n-YV7v8-;NE{l88o<95q0E$n)yqgnNSt(riGMrflrlkKAv^V-$9f8ik1hg}{5;Bhi)Lrs( zWw_c#ZK+;@^yxCCiLy!lqKuGnWeMtqy04tF3HA(eWw!iY-3R~Yc=(l;97>7mktZpF z+7XGwhGL~^8x%unwINDkP9Xan!ejA?SOPwjY(Xr=!^mv12hol=0-?biYz8(4TLamj zXXqnzGkQvG2>FtKly7ofdAnp6n+wBuE&ng)VHIHXsbJ4r6-Ws@^%wds`6~r}`tSSu z2G%m`7(4rzTP5v9ZxV6ZTBg0WyY`-rx1pOu&9Fl^6}bJjkWzaG>pROW<1Ot5s)}X` zY;ae@oybe&iIgZ@0y}jC{JZ}$J%Gk@U6?QYfxZhSrHDht8B(--S$YI)zCAF-Sx%q! zPw{MbRW0pVe81>t!OA>mex*V&`#}!t?BuOTUl)ssRC9Fj+u*h#Z6doxeu+F3y)Cjv z)akf|@s+?Mu7>`0oOE0=+o;o;(Nr_d6Cy{Al=?!#yEeVvpXTr7|3FV-2e7}nyP^+h z{fFf%&^6f(ocCbxA#0?H;v&u!aQLfvg39icd@9V!Pb`SdlXK$p$K+i2Gq5PxmqzcB z+|*gyl5in1Ji1eS)x@o_HGpZ_F!DrHbjG=&{%=^7d?j$L{GwLf3L7u z=qjYsZ31(_^4Nh{4LefLgfvBuenan~4X{ICGJmhmlWRbqb{9XMO{8b|uXr|;9dgz$ znvnl2Z(VMUoSr#Xv&qbo%%uEFrE3G-#p6^L`=Ll*bVmG$r0R(u;w`b(=(6i<5Tp5pKMR9^d>+$<$)Np|U<3Yjr^2IqZ$D-j_M1$~b= z7&||HP;&WlUyPA8ss-inBC;3hBx;b=i1X+#Wf@re+VL68r+~)4(Ua(E=xkbaD}QQk zes;y2jGP16eY09+ttc4jsme7|-s+c!VR0K0rzd|XH@O^O+y zEz`^y#_8HW*nN45v|0MY%S;)23lcv4g$QAnFhE=`9v2TtnNm+kE`V7MT;CIj!BB(u zMw-cW#Xfus)(d2I+DmzcxZ+FE;sFJw{GGY~<|O4d%^v;dd-nL^6Ttttg`^uC;Y;GY z37?Zrl?y6&E8$m6`G`qjheFGTuy!)|uI0Ef(a@PPLjq#Gm;vv|1a2A;G-hJ?Q^wseDT!+CAVHq zbaqho<=@_)6SDQi(BtRoVe#gfkwX*KBvvlhG-Xb?!HI8U7ew9(uK=cvTaKI7{>GvD zOS*1kUv-2SBmCk&aLbt*Onokki{Kvtd7!-TT_^yb`)YX=ge@l$MdTeahIA7l1cp^p z4@rH*YWz}m8(rOh-BVar!5Jw0nirlUW%tNw`lsTr*_m7OU%0N*Yb1kqT}W!|!h|(R zy^|j%_eiQ2_bp;y*on|q;MB+n{%tNZ+0DoGxp3F72;19@#GV|=9%k)a4mTQR(6zXs z+*W=KP^`*{Tjc@p`It?VCwda)h&Na=5-Y1hO@0PDgU;}O_LjNFx+<5hD-JDmuV~*?#oN*qT~>-a0(m8-v?soOBM{qked6%o#yX}vC4B~8xZ#XBC`n%8Zwi4YVt%D6$pKqYaT?@>8)rkg#g79qAfy^$3)?O9mFX3ohr4%sr8VXRrKy z`**9nCuIa*6XOieL)7@4<>n`UNn9Bp9lJU5LD-QHA>?>yh0s$W^Xg38oUK(T* zsyHGxa(9Fdh)*>lmqo4(?_&SQ6smoKw*iVlPq5IeflcsYA)i}M@AnRIlO7{jP9mB6 z{0XH2&=(o<9oa$COmmu;gnfWbq8mspWQfvES|{kZt$`mN71A(uN>&urgZ$gG{JlBp zzu)}4{AXIxIA06tDB0b-$k9C940Fu4VRORRu+YeR(UW2|anE9x#ypIC7t%avv%Vu` z*1RWL0PSWP@<{n1JPDL{i_TTfv86j)Rei6Srs6RPAh{ zq>+Q+%KA%65w>zo*-3Oie|_&rcXZjz;%51Mvdeyt`kC?baMthQfq`t;X^hi6(31KE z`V7M@^NQeWVOyiy#s8HE!?whIanGWUN3;#CY>%|Lf=*cWm^$dwG zfB4e~F=|BYr?`!=?IK?}vMmqvqadM`gUo~c??SmTU*fOjZeDt##8EQN`Lpc0r?FoN zP)s?tBG(%>=122g#Z7WM^)75dHB#z|6WGy#fnd5l9;g*~I)cmME>WUGp` z9~}e3LLviEtD<9~8i&V++^`+7%rspx z+}1{$NQfz)7KoVH1}XfKLgyIC~ak{@#BS;!bD*P-+^n* zzJkZOg5ANsV>-|a{gb`F-3{HeJH^+F`6o(DE|}(z@u;5n z9-C*2`w2{At9hQlM7CC79CMlF*iY;j_75{1?%NrR9{k-+;gx&OE`vMcYX3u@;A={s z=DRCf&=?#XYihBwTs@3hH3lPPof2#Ta_0*xVk@@wx7Q4r5_T^9baD)%8G(7_dcrRT2^{jZ^qmJgZX2KxAM_0LH1)LfJoDInOZ=`tA>EG&X0Fl6 z^p3#gKo0$cT?}_{T$ufTI~3%6GyMZ-mRlwl!kN1aRggT$@Q0)M_(iSO+}2uR9cA4X zbU3KM+A|n)bPBx`J}}~+uo6c^@V=lI=KqX7{b}72ZFkKyth2%iL%2H3hQJH3!oK?d z{1bcwBY`f`9ZWqQZ#Vz7z(BeY%?A?b9`puC@XTj2;fh_tKj)uv{a81h5~%GDp?mQf zNan9cYoRuz7`PVOk(ERjeIv_2>mh4BYwI9eP^k5|t-s@X7!~;~Vt&{a$2FU3Icl0? zXr%9>yGSh{{z59qW}zmW$%4SF+avHBQWwp9Y2IlbljpF9^S<%lqn|Q&ndUI7?MAPn zCHexxuygq80>|sXE%-dZfkS(@{|&oRs;+)i_d-(qJg^U{DE+W_Z4=Wx%Y6%QAS{b4 z`+^4AVjUS_TKGkOpRHlE?qnOpqJGv4*oTll?Om(&j zxMiAv7q|{HHL%SW>Fwt=2P$$^#79!NoGR59tBbs7P*Sle)Fi`PQ^54nw9*`~q+0*B z^>7q~wT+w+c_lnL^s&8%Ee}>bz8jkx!ws(>ePf55kSbIIme^~yH~WT(VulCW`gGp+ zo@w4izUN@Us>5_+4$}F7V}Y%K*MT$iH|7|-iG9Gdr|y=Ma3IhYUvEwZx^ zB=iLBY19bAW7Amke)DomPS7CRM0=gk?h!R1r@cO0b_4})3u4WyO!tiCjDG!2 z?HVE#%wU<2sJ+Yn&Hn%U2eXL2^j23U`FLTps;3@PvsK7ArsSD!S&TkMNmQtWRvGf)nlc?a{!= zMI-w~c_V9vKX9zF@)y;dA_54@zug5u4T{HMZyuTsNF*`CR zN{UR4+!)Qp$Cf*nGBd@V@+a{^OzTkD#A`+o)5#U&zr+melUhN+1gFmqY`MLzUcSck zLG}(%w5Q9jgl7D3VTQ5-_iJkF9_!-_?{weEc_^vWlj;f&**4%#9q8&;Oyzyf{P83F zTivg_Kehc(|J|rBH}mcU>SG;^O~U_6=$=wL#hTos+?Le(mH(~WtJ0SWtIN@G%R(C) zyvTKFqBL7NFRp|%!zytWSI>6^a#VJY?C-<27pEbkiB&{f>~GkFA@MWd|Blc#(AU?~ zR5IR6IV05P>d+q{Griu`#reEoboRktt-nwIYWw=)Q|Aw#Kd#H}>s_kE=wcnVgpBgv zQiD@sQ(C1isL-^6l2VZT1i0ewL+To|XqH$7wh+ABbuJZntcQgPOgmp2?=62Nutc4a zKB4zDZ>UmoI{p*YV~Kb#oFIMyF?1(!5osgE^P8EZKo4)W`+#d%>96Abc{{R}|62Fs z@Q(@Kn}4nPh0OWj^GaIHSnIObdMSUGUz1W$?m_wV@(0S@ND5CViuo&Qe#i)81w2#! zEH33!IU5%uxFtWhX1j2+*qxlfX9`2)&1fz;oZ71?Bx>U|v5T-Bq(zz_PyXLsQGZDr zgg;zX;G1`%TjT0by0K(L;n4if+1)cw{cQH*{%7Q~^5;w`4&%-p)~eCV%2iCMot%}F znRqubGU4xpR&fX7F2-~VyJg8I`>0bzoG;IA;h^h)7|}$P5X

xM;2qpC|3Z>Qj~U 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�K{TSnT)hHuT25`NneFi$tkk$M@%8Hz|>!3%1R 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 literal 0 HcmV?d00001 diff --git a/sdk/transcription/azure-ai-speech-transcription/src/samples/assets/sample-profanity.wav b/sdk/transcription/azure-ai-speech-transcription/src/samples/assets/sample-profanity.wav new file mode 100644 index 0000000000000000000000000000000000000000..e1926b3f5dcf21a38af74f6a06b1991dc436d997 GIT binary patch literal 135648 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

|$uy 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 literal 0 HcmV?d00001 diff --git a/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/EnhancedModeSample.java b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/EnhancedModeSample.java new file mode 100644 index 000000000000..7abd8b0fc543 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/EnhancedModeSample.java @@ -0,0 +1,146 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.speech.transcription; + +// BEGIN: com.azure.ai.speech.transcription.enhancedmode.imports +import com.azure.ai.speech.transcription.models.AudioFileDetails; +import com.azure.ai.speech.transcription.models.EnhancedModeOptions; +import com.azure.ai.speech.transcription.models.ProfanityFilterMode; +import com.azure.ai.speech.transcription.models.TranscriptionDiarizationOptions; +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; +import com.azure.core.credential.KeyCredential; +import com.azure.core.util.BinaryData; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Arrays; +// END: com.azure.ai.speech.transcription.enhancedmode.imports + +/** + * Sample demonstrates how to use EnhancedModeOptions with LLM-enhanced speech transcription + * combining multiple features for optimal transcription quality. + * + * This sample shows: + * - Using lexical format prompts to guide LLM output + * - Providing domain-specific context for technical terminology + * - Enabling diarization (speaker identification) with enhanced mode + * - Configuring profanity filtering + * + * Enhanced mode leverages large language models to improve transcription quality + * by understanding context and domain-specific terminology. + */ +public class EnhancedModeSample { + /** + * Main method to run the enhanced mode sample. + * + * @param args command line arguments (not used) + */ + public static void main(String[] args) { + String endpoint = System.getenv("SPEECH_ENDPOINT"); + String apiKey = System.getenv("SPEECH_API_KEY"); + + if (endpoint == null || apiKey == null) { + System.err.println("Please set SPEECH_ENDPOINT and SPEECH_API_KEY environment variables"); + System.err.println("Example:"); + System.err.println(" set SPEECH_ENDPOINT=https://your-resource-name.cognitiveservices.azure.com/"); + System.err.println(" set SPEECH_API_KEY=your-api-key"); + return; + } + + System.out.println("Azure AI Speech Transcription - Enhanced Mode Sample"); + System.out.println("=====================================================\n"); + + // Demonstrate full enhanced mode with all features combined + demonstrateFullEnhancedMode(endpoint, apiKey); + } + + /** + * Demonstrates using full enhanced mode with multiple features combined. + * This shows how to use lexical format prompts, domain context, diarization, + * and profanity filtering together for optimal transcription quality. + */ + private static void demonstrateFullEnhancedMode(String endpoint, String apiKey) { + System.out.println("Enhanced Mode with Multiple Features Combined"); + System.out.println("----------------------------------------------"); + + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(apiKey)) + .buildClient(); + + try { + String audioFilePath = "src/samples/assets/sample-audio.wav"; + if (!Files.exists(Paths.get(audioFilePath))) { + System.out.println("Audio file not found: " + audioFilePath); + System.out.println(" Skipping this example.\n"); + return; + } + + byte[] audioData = Files.readAllBytes(Paths.get(audioFilePath)); + + // Use the helper method to demonstrate full configuration + TranscriptionResult result = transcribeWithFullEnhancedMode(client, audioData, audioFilePath); + + System.out.println(" Full enhanced mode configuration applied"); + System.out.println("Features: LLM prompts, diarization, profanity filtering"); + System.out.println("Duration: " + result.getDuration() + " ms"); + if (result.getCombinedPhrases() != null && !result.getCombinedPhrases().isEmpty()) { + System.out.println("\nTranscription: " + result.getCombinedPhrases().get(0).getText()); + } + if (result.getPhrases() != null && !result.getPhrases().isEmpty()) { + System.out.println("\nPhrases with speakers:"); + result.getPhrases().forEach(phrase -> + System.out.println(" [Speaker " + phrase.getSpeaker() + ", " + + phrase.getOffset() + " ms] " + phrase.getText()) + ); + } + System.out.println(); + + } catch (IOException e) { + System.err.println("Error reading audio file: " + e.getMessage() + "\n"); + } catch (Exception e) { + System.err.println("Error during transcription: " + e.getMessage() + "\n"); + } + } + + /** + * Helper method demonstrating how to combine all enhanced mode features. + * This is a reusable pattern for high-quality LLM-enhanced transcription. + */ + // BEGIN: com.azure.ai.speech.transcription.enhancedmode.complete + private static TranscriptionResult transcribeWithFullEnhancedMode( + TranscriptionClient client, + byte[] audioData, + String filename + ) throws Exception { + // Create audio file details + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Configure comprehensive LLM-enhanced mode settings + // Enhanced mode is automatically enabled when you create EnhancedModeOptions + // Always include lexical format prompt for best results + EnhancedModeOptions enhancedMode = new EnhancedModeOptions() + .setTask("transcribe") + .setPrompts(Arrays.asList( + "Output must be in lexical format." + )); + + // Enable diarization for speaker identification + TranscriptionDiarizationOptions diarizationOptions = new TranscriptionDiarizationOptions() + .setMaxSpeakers(5); + + // Create transcription options with all features enabled + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails) + .setLocales(Arrays.asList()) + .setEnhancedModeOptions(enhancedMode) + .setDiarizationOptions(diarizationOptions) + .setProfanityFilterMode(ProfanityFilterMode.MASKED); + + // Transcribe with full LLM-enhanced mode and diarization + return client.transcribe(options); + } + // END: com.azure.ai.speech.transcription.enhancedmode.complete +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/README.md b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/README.md new file mode 100644 index 000000000000..65eb1d9979d5 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/README.md @@ -0,0 +1,260 @@ +# Azure AI Speech Transcription Samples + +This directory contains runnable code samples that demonstrate how to use the Azure AI Speech Transcription client library for Java. + +## Prerequisites + +To run these samples, you need: + +1. **Azure Subscription**: An active Azure subscription +2. **Azure AI Speech Service Resource**: Create one in the [Azure Portal](https://portal.azure.com) +3. **Authentication**: Choose one of the following authentication methods: + +### Option 1: Entra ID Authentication (Recommended for Production) + + Set the endpoint and configure Entra ID credentials: + + ```bash + set SPEECH_ENDPOINT=https://your-resource-name.cognitiveservices.azure.com/ + ``` + + **And** configure one of the following credential sources: + - **Managed Identity**: For apps running in Azure (App Service, Azure Functions, VMs, etc.) + - **Azure CLI**: Run `az login` on your development machine + - **Environment Variables**: Set `AZURE_TENANT_ID`, `AZURE_CLIENT_ID`, and `AZURE_CLIENT_SECRET` + - **Visual Studio Code or IntelliJ**: Sign in through your IDE + + **Note**: You'll also need to assign the "Cognitive Services User" role to your identity: + + ```bash + az role assignment create --assignee \ + --role "Cognitive Services User" \ + --scope /subscriptions//resourceGroups//providers/Microsoft.CognitiveServices/accounts/ + ``` + + **Required dependency** for Entra ID authentication: + + ```xml + + com.azure + azure-identity + 1.13.0 + + ``` + + ### Option 2: API Key Authentication (Easier for Getting Started) + + Set these environment variables: + + ```bash + set SPEECH_ENDPOINT=https://your-resource-name.cognitiveservices.azure.com/ + ``` + + **And** configure one of the following credential sources: + - **Managed Identity**: For apps running in Azure (App Service, Azure Functions, VMs, etc.) + - **Azure CLI**: Run `az login` on your development machine + - **Environment Variables**: Set `AZURE_TENANT_ID`, `AZURE_CLIENT_ID`, and `AZURE_CLIENT_SECRET` + - **Visual Studio Code or IntelliJ**: Sign in through your IDE + + **Note**: You'll also need to assign the "Cognitive Services User" role to your identity: + + ```bash + az role assignment create --assignee \ + --role "Cognitive Services User" \ + --scope /subscriptions//resourceGroups//providers/Microsoft.CognitiveServices/accounts/ + ``` + + **Required dependency** for Entra ID authentication: + + ```xml + + com.azure + azure-identity + 1.13.0 + + ``` + +4. **Audio File**: Some samples require an audio file named `sample-audio.wav` in the working directory + +## Authentication Methods + +All samples in this directory support **both authentication methods**: + +- **Entra ID (TokenCredential)**: Uses `DefaultAzureCredential` from azure-identity +- **API Key (KeyCredential)**: Uses the `SPEECH_API_KEY` environment variable + +The samples will automatically detect which authentication method to use based on the environment variables you've set. If `SPEECH_API_KEY` is set, it will use API Key authentication; otherwise, it will attempt Entra ID authentication. + +## Available Samples + +### TranscribeAudioFileSample.java + +**Champion scenario**: Basic audio transcription from a file + +Demonstrates the most common use case - transcribing a single audio file with minimal configuration. + +**Key features**: + +- Creating a TranscriptionClient +- Reading an audio file +- Transcribing with default options +- Processing results + +**Run**: + +```bash +cd sdk/transcription/azure-ai-speech-transcription +mvn exec:java -Dexec.mainClass="com.azure.ai.speech.transcription.TranscribeAudioFileSample" +``` + +--- + +### TranscribeFromUrlSample.java + +**Champion scenario**: Transcribe audio from a URL + +Demonstrates how to transcribe audio directly from a URL without downloading the file locally. + +**Key features**: + +- Creating TranscriptionOptions with a URL +- Transcribing remote audio files + +**Run**: + +```bash +mvn exec:java -Dexec.mainClass="com.azure.ai.speech.transcription.TranscribeFromUrlSample" +``` + +--- + +### TranscribeMultiLanguageSample.java + +**Champion scenario**: Multi-language transcription + +Demonstrates how to transcribe audio containing multiple languages with automatic language detection. + +**Key features**: + +- Automatic language detection +- Handling multi-language results + +**Run**: + +```bash +mvn exec:java -Dexec.mainClass="com.azure.ai.speech.transcription.TranscribeMultiLanguageSample" +``` + +--- + +### EnhancedModeSample.java + +**Champion scenario**: Enhanced transcription quality + +Demonstrates how to use enhanced mode with custom prompts and other advanced features. + +**Key features**: + +- Using EnhancedModeOptions +- Providing custom prompts for better accuracy +- Specifying task types + +**Run**: + +```bash +mvn exec:java -Dexec.mainClass="com.azure.ai.speech.transcription.EnhancedModeSample" +``` + +--- + +### TranscribeWithDiarizationSample.java + +**Champion scenario**: Speaker diarization + +Demonstrates how to identify different speakers in the audio. + +**Key features**: + +- Enabling speaker diarization +- Configuring max speakers +- Processing speaker-separated results + +**Run**: + +```bash +mvn exec:java -Dexec.mainClass="com.azure.ai.speech.transcription.TranscribeWithDiarizationSample" +``` + +--- + +### TranscribeWithPhraseListSample.java + +**Champion scenario**: Improving accuracy with phrase lists + +Demonstrates how to use a phrase list to improve recognition of specific terms. + +**Key features**: + +- Creating a PhraseListOptions +- Adding custom phrases and boosting their probability +- Improving accuracy for domain-specific terminology + +**Run**: + +```bash +mvn exec:java -Dexec.mainClass="com.azure.ai.speech.transcription.TranscribeWithPhraseListSample" +``` + +--- + +### TranscribeWithProfanityFilterSample.java + +**Champion scenario**: Profanity filtering + +Demonstrates how to configure profanity filtering options. + +**Key features**: + +- Setting ProfanityFilterMode (Masked, Removed, None) +- Handling filtered results + +**Run**: + +```bash +mvn exec:java -Dexec.mainClass="com.azure.ai.speech.transcription.TranscribeWithProfanityFilterSample" +``` + +--- + +### ReadmeSamples.java + +Code snippets used in the main README.md and API documentation (JavaDoc). + +**Note**: This file is used by the `codesnippet-maven-plugin` to inject code into documentation. It's not meant to be run directly. + +## Supported Audio Formats + +The service supports various audio formats: + +- **WAV** (recommended: 16 kHz, 16-bit, mono PCM) +- **MP3** +- **OGG** +- **FLAC** +- And more + +**Constraints**: + +- Maximum file size: 250 MB +- Maximum duration: 2 hours + +## Getting Help + +- [Azure AI Speech Documentation](https://learn.microsoft.com/azure/ai-services/speech-service/) +- [SDK README](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/transcription/azure-ai-speech-transcription) +- [GitHub Issues](https://github.com/Azure/azure-sdk-for-java/issues) + +## Additional Resources + +- [Azure SDK for Java Guidelines](https://azure.github.io/azure-sdk/java_introduction.html) +- [Project Reactor Documentation](https://projectreactor.io/docs) +- [Azure SDK Blog](https://devblogs.microsoft.com/azure-sdk/) diff --git a/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/ReadmeSamples.java b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/ReadmeSamples.java new file mode 100644 index 000000000000..6dfd93d716c4 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/ReadmeSamples.java @@ -0,0 +1,423 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.speech.transcription; + +import com.azure.ai.speech.transcription.models.AudioFileDetails; +import com.azure.ai.speech.transcription.models.EnhancedModeOptions; +import com.azure.ai.speech.transcription.models.PhraseListOptions; +import com.azure.ai.speech.transcription.models.ProfanityFilterMode; +import com.azure.ai.speech.transcription.models.TranscriptionDiarizationOptions; +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; +import com.azure.core.credential.KeyCredential; +import com.azure.core.http.policy.ExponentialBackoffOptions; +import com.azure.core.http.policy.HttpLogDetailLevel; +import com.azure.core.http.policy.HttpLogOptions; +import com.azure.core.http.policy.RetryOptions; +import com.azure.core.util.BinaryData; + +import java.nio.file.Files; +import java.nio.file.Paths; + +public final class ReadmeSamples { + /** + * Sample for basic audio transcription. + */ + public void readmeSamples() { + // BEGIN: com.azure.ai.speech.transcription.readme + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); + + try { + // Read audio file + byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + + // Create audio file details + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Create transcription options + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails); + + // Transcribe audio + TranscriptionResult result = client.transcribe(options); + + // Process results + System.out.println("Duration: " + result.getDuration() + " ms"); + result.getCombinedPhrases().forEach(phrase -> { + System.out.println("Channel " + phrase.getChannel() + ": " + phrase.getText()); + }); + } catch (Exception e) { + System.err.println("Error during transcription: " + e.getMessage()); + } + // END: com.azure.ai.speech.transcription.readme + } + + /** + * Sample for creating a synchronous TranscriptionClient. + */ + public void createSyncClient() { + // BEGIN: com.azure.ai.speech.transcription.transcriptionclient.instantiation + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); + // END: com.azure.ai.speech.transcription.transcriptionclient.instantiation + } + + /** + * Sample for creating an asynchronous TranscriptionAsyncClient. + */ + public void createAsyncClient() { + // BEGIN: com.azure.ai.speech.transcription.transcriptionasyncclient.instantiation + TranscriptionAsyncClient asyncClient = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildAsyncClient(); + // END: com.azure.ai.speech.transcription.transcriptionasyncclient.instantiation + } + + /** + * Sample for transcribing audio with the synchronous client. + */ + public void transcribeAudioSync() throws Exception { + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionclient.transcribe + byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails); + + TranscriptionResult result = client.transcribe(options); + + System.out.println("Duration: " + result.getDuration() + " ms"); + result.getCombinedPhrases().forEach(phrase -> { + System.out.println("Transcription: " + phrase.getText()); + }); + // END: com.azure.ai.speech.transcription.transcriptionclient.transcribe + } + + /** + * Sample for transcribing audio with the asynchronous client. + */ + public void transcribeAudioAsync() throws Exception { + TranscriptionAsyncClient asyncClient = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildAsyncClient(); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionasyncclient.transcribe + byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails); + + asyncClient.transcribe(options) + .subscribe(result -> { + System.out.println("Duration: " + result.getDuration() + " ms"); + result.getCombinedPhrases().forEach(phrase -> { + System.out.println("Transcription: " + phrase.getText()); + }); + }); + // END: com.azure.ai.speech.transcription.transcriptionasyncclient.transcribe + } + + /** + * Sample for configuring advanced transcription options. + */ + public void advancedTranscriptionOptions() throws Exception { + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionoptions.advanced + byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Configure advanced options + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails) + .setLocales(java.util.Arrays.asList("en-US", "es-ES")) // Specify candidate locales + .setProfanityFilterMode(ProfanityFilterMode.MASKED) // Mask profanity + .setDiarizationOptions(new TranscriptionDiarizationOptions() // Enable speaker diarization + .setMaxSpeakers(5)); + + TranscriptionResult result = client.transcribe(options); + + // Access detailed results + result.getPhrases().forEach(phrase -> { + System.out.println("Speaker " + phrase.getSpeaker() + ": " + phrase.getText()); + System.out.println("Confidence: " + phrase.getConfidence()); + System.out.println("Offset: " + phrase.getOffset() + " ms"); + }); + // END: com.azure.ai.speech.transcription.transcriptionoptions.advanced + } + + /** + * Sample for building client with custom configuration. + */ + public void clientWithCustomConfiguration() { + // BEGIN: com.azure.ai.speech.transcription.transcriptionclientbuilder.configuration + HttpLogOptions logOptions = new HttpLogOptions() + .setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS); + + RetryOptions retryOptions = new RetryOptions(new ExponentialBackoffOptions() + .setMaxRetries(5) + .setBaseDelay(java.time.Duration.ofSeconds(1)) + .setMaxDelay(java.time.Duration.ofSeconds(60))); + + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .httpLogOptions(logOptions) + .retryOptions(retryOptions) + .buildClient(); + // END: com.azure.ai.speech.transcription.transcriptionclientbuilder.configuration + } + + /** + * Sample for processing detailed transcription results. + */ + public void processDetailedResults() throws Exception { + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); + + byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionresult.detailed + TranscriptionResult result = client.transcribe(options); + + // Get overall duration + System.out.println("Total duration: " + result.getDuration() + " ms"); + + // Process each phrase with detailed information + result.getPhrases().forEach(phrase -> { + System.out.println("\nPhrase: " + phrase.getText()); + System.out.println(" Channel: " + phrase.getChannel()); + System.out.println(" Speaker: " + phrase.getSpeaker()); + System.out.println(" Locale: " + phrase.getLocale()); + System.out.println(" Confidence: " + phrase.getConfidence()); + System.out.println(" Timing: " + phrase.getOffset() + " ms - " + + (phrase.getOffset() + phrase.getDuration().toMillis()) + " ms"); + + // Process individual words with timestamps + if (phrase.getWords() != null) { + phrase.getWords().forEach(word -> { + System.out.println(" Word: " + word.getText() + " @ " + + word.getOffset() + " ms"); + }); + } + }); + // END: com.azure.ai.speech.transcription.transcriptionresult.detailed + } + + /** + * Sample for using enhanced mode to improve transcription quality. + */ + public void enhancedModeBasic() throws Exception { + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); + + // BEGIN: readme-sample-enhancedModeBasic + byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Enhanced mode is automatically enabled when you create EnhancedModeOptions + EnhancedModeOptions enhancedMode = new EnhancedModeOptions() + .setPrompts(java.util.Arrays.asList( + "Output must be in lexical format." + )); + + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails) + .setLocales(java.util.Arrays.asList("en-US", "es-ES")) + .setEnhancedModeOptions(enhancedMode); + + TranscriptionResult result = client.transcribe(options); + // END: readme-sample-enhancedModeBasic + } + + /** + * Sample for using enhanced mode with custom prompts. + */ + public void enhancedModeWithPrompts() throws Exception { + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); + + // BEGIN: readme-sample-enhancedModeWithPrompts + byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Enhanced mode is automatically enabled + // Use prompts to guide transcription with domain-specific terminology + // Always include lexical format prompt for best results + EnhancedModeOptions enhancedMode = new EnhancedModeOptions() + .setPrompts(java.util.Arrays.asList( + "Output must be in lexical format.", + "Medical consultation discussing hypertension and diabetes", + "Common medications: metformin, lisinopril, atorvastatin", + "Patient symptoms and treatment plan" + )); + + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails) + .setLocales(java.util.Arrays.asList("en-US", "es-ES")) + .setEnhancedModeOptions(enhancedMode); + + TranscriptionResult result = client.transcribe(options); + // END: readme-sample-enhancedModeWithPrompts + } + + /** + * Sample for using enhanced mode with translation. + */ + public void enhancedModeWithTranslation() throws Exception { + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); + + // BEGIN: readme-sample-enhancedModeWithTranslation + byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Enhanced mode is automatically enabled + // Configure enhanced mode to transcribe Spanish audio and translate to English + EnhancedModeOptions enhancedMode = new EnhancedModeOptions() + .setTargetLanguage("en-US"); // Translate to English + + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails) + .setLocales(java.util.Arrays.asList("es-ES")) // Source language: Spanish + .setEnhancedModeOptions(enhancedMode); + + TranscriptionResult result = client.transcribe(options); + // END: readme-sample-enhancedModeWithTranslation + } + + /** + * Sample for transcribing audio using audio URL constructor. + */ + public void transcribeWithAudioUrl() { + // BEGIN: readme-sample-transcribeWithAudioUrl + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); + + // Create transcription options with audio URL + TranscriptionOptions options = new TranscriptionOptions("https://example.com/audio.wav"); + + // Transcribe audio + TranscriptionResult result = client.transcribe(options); + + // Process results + result.getCombinedPhrases().forEach(phrase -> { + System.out.println(phrase.getText()); + }); + // END: readme-sample-transcribeWithAudioUrl + } + + /** + * Sample for multi-language transcription. + */ + public void transcribeMultiLanguage() throws Exception { + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionoptions.multilanguage + byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Configure transcription WITHOUT specifying locales + // This allows the service to auto-detect and transcribe multiple languages + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails); + + TranscriptionResult result = client.transcribe(options); + + result.getPhrases().forEach(phrase -> { + System.out.println("Language: " + phrase.getLocale()); + System.out.println("Text: " + phrase.getText()); + }); + // END: com.azure.ai.speech.transcription.transcriptionoptions.multilanguage + } + + /** + * Sample for enhanced mode transcription. + */ + public void transcribeEnhancedMode() throws Exception { + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionoptions.enhancedmode + byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Enhanced mode is automatically enabled + EnhancedModeOptions enhancedMode = new EnhancedModeOptions() + .setTask("transcribe") + .setPrompts(java.util.Arrays.asList("Output must be in lexical format.")); + + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails) + .setEnhancedModeOptions(enhancedMode); + + TranscriptionResult result = client.transcribe(options); + + System.out.println("Transcription: " + result.getCombinedPhrases().get(0).getText()); + // END: com.azure.ai.speech.transcription.transcriptionoptions.enhancedmode + } + + /** + * Sample for transcription with phrase list. + */ + public void transcribeWithPhraseList() throws Exception { + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint("https://.cognitiveservices.azure.com/") + .credential(new KeyCredential("")) + .buildClient(); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionoptions.phraselist + byte[] audioData = Files.readAllBytes(Paths.get("path/to/audio.wav")); + + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + PhraseListOptions phraseListOptions = new PhraseListOptions() + .setPhrases(java.util.Arrays.asList("Azure", "Cognitive Services")) + .setBiasingWeight(5.0); + + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails) + .setPhraseListOptions(phraseListOptions); + + TranscriptionResult result = client.transcribe(options); + + result.getCombinedPhrases().forEach(phrase -> { + System.out.println(phrase.getText()); + }); + // END: com.azure.ai.speech.transcription.transcriptionoptions.phraselist + } +} + diff --git a/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeAudioFileSample.java b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeAudioFileSample.java new file mode 100644 index 000000000000..382d5c473bef --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeAudioFileSample.java @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.speech.transcription; + +import com.azure.ai.speech.transcription.models.AudioFileDetails; +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; +import com.azure.core.credential.KeyCredential; +import com.azure.core.util.BinaryData; + +import java.nio.file.Files; +import java.nio.file.Paths; + +/** + * Simplest possible example of transcribing an audio file. + * + * This sample demonstrates the absolute minimum code needed to: + * 1. Create a client + * 2. Load an audio file + * 3. Transcribe it + * 4. Get the text result + */ +public class TranscribeAudioFileSample { + public static void main(String[] args) { + try { + // Get credentials from environment variables + String endpoint = System.getenv("SPEECH_ENDPOINT"); + String apiKey = System.getenv("SPEECH_API_KEY"); + + // Create client + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(apiKey)) + .buildClient(); + + // Load audio file + String audioFilePath = "src/samples/assets/sample-audio.wav"; + byte[] audioData = Files.readAllBytes(Paths.get(audioFilePath)); + + // Create audio file details + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Transcribe + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails); + TranscriptionResult result = client.transcribe(options); + + // Print result + System.out.println("Transcription:"); + result.getCombinedPhrases().forEach(phrase -> + System.out.println(phrase.getText()) + ); + + } catch (Exception e) { + System.err.println("Error: " + e.getMessage()); + e.printStackTrace(); + } + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeFromUrlSample.java b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeFromUrlSample.java new file mode 100644 index 000000000000..b1f77c0beba9 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeFromUrlSample.java @@ -0,0 +1,64 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.speech.transcription; + +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; +import com.azure.core.credential.AzureKeyCredential; +import java.util.Arrays; + +/** + * Sample demonstrates how to transcribe audio from a URL. + */ +public class TranscribeFromUrlSample { + + /** + * Main method to invoke this demo. + * + * @param args Unused arguments to the program. + */ + public static void main(String[] args) { + String endpoint = System.getenv("SPEECH_ENDPOINT"); + String apiKey = System.getenv("SPEECH_API_KEY"); + + if (endpoint == null || apiKey == null) { + System.err.println("Please set SPEECH_ENDPOINT and SPEECH_API_KEY environment variables."); + System.exit(1); + } + + // Create the transcription client + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new AzureKeyCredential(apiKey)) + .buildClient(); + + System.out.println("Azure AI Speech Transcription - Transcribe from URL Sample"); + System.out.println("============================================================\n"); + + // Audio file URL (must be publicly accessible) + // Using sample audio from Azure documentation + String audioUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-speech-sdk/master/sampledata/audiofiles/aboutSpeechSdk.wav"; + + System.out.println("Transcribing audio from URL: " + audioUrl); + System.out.println(); + + // Create transcription options with audio URL + TranscriptionOptions options = new TranscriptionOptions(audioUrl) + .setLocales(Arrays.asList("en-US")); + + // Transcribe the audio from URL + TranscriptionResult result = client.transcribe(options); + + // Display results + System.out.println("Transcription Results:"); + System.out.println("---------------------"); + System.out.println("Duration: " + result.getDuration() + "\n"); + + if (result.getCombinedPhrases() != null && !result.getCombinedPhrases().isEmpty()) { + System.out.println("Combined text: " + result.getCombinedPhrases().get(0).getText()); + } + + System.out.println(); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeMultiLanguageSample.java b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeMultiLanguageSample.java new file mode 100644 index 000000000000..fedc4499806e --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeMultiLanguageSample.java @@ -0,0 +1,108 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.speech.transcription; + +import com.azure.ai.speech.transcription.models.AudioFileDetails; +import com.azure.ai.speech.transcription.models.TranscribedPhrase; +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; +import com.azure.core.credential.AzureKeyCredential; +import com.azure.core.util.BinaryData; +import java.nio.file.Files; +import java.nio.file.Paths; + +/** + * Sample demonstrates how to transcribe audio containing multiple languages. + * + * When locales are NOT specified, the service automatically detects and transcribes + * multiple languages within the same audio file, switching between them as needed. + * This is useful for: + * - Multilingual conversations + * - Code-switched speech (e.g., Spanish-English) + * - International meetings or interviews + */ +public class TranscribeMultiLanguageSample { + + /** + * Main method to invoke this demo. + * + * @param args Unused arguments to the program. + */ + public static void main(String[] args) { + String endpoint = System.getenv("SPEECH_ENDPOINT"); + String apiKey = System.getenv("SPEECH_API_KEY"); + + if (endpoint == null || apiKey == null) { + System.err.println("Please set SPEECH_ENDPOINT and SPEECH_API_KEY environment variables."); + System.exit(1); + } + + System.out.println("Azure AI Speech Transcription - Multi-Language Sample"); + System.out.println("=====================================================\n"); + + // Create the transcription client + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new AzureKeyCredential(apiKey)) + .buildClient(); + + try { + // Load audio file + String audioFilePath = "src/samples/assets/sample-audio.wav"; + byte[] audioData = Files.readAllBytes(Paths.get(audioFilePath)); + AudioFileDetails fileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Configure transcription WITHOUT specifying locales + // This allows the service to auto-detect and transcribe multiple languages + // within the same audio file, switching between them as needed + TranscriptionOptions options = new TranscriptionOptions(fileDetails); + + System.out.println("Transcribing with automatic multi-language detection..."); + System.out.println("(No locale specified - service will detect all languages)\n"); + + // Transcribe the audio + TranscriptionResult result = client.transcribe(options); + + // Display results + System.out.println("Transcription Results:"); + System.out.println("---------------------"); + System.out.println("Duration: " + result.getDuration()); + System.out.println("Total phrases found: " + (result.getPhrases() != null ? result.getPhrases().size() : 0)); + System.out.println("Total combined phrases: " + (result.getCombinedPhrases() != null ? result.getCombinedPhrases().size() : 0)); + System.out.println(); + + // Show detailed phrases with timestamps + if (result.getPhrases() != null && !result.getPhrases().isEmpty()) { + System.out.println("Detailed Phrases:"); + System.out.println("-----------------"); + + for (int i = 0; i < result.getPhrases().size(); i++) { + TranscribedPhrase phrase = result.getPhrases().get(i); + long offsetMs = phrase.getOffset(); + long durationMs = phrase.getDuration().toMillis(); + + System.out.println("\n[Phrase " + (i + 1) + "] " + offsetMs + "ms - " + (offsetMs + durationMs) + "ms"); + System.out.println("Locale: " + phrase.getLocale()); + System.out.println("Text: " + phrase.getText()); + } + } + + // Also show combined phrases per channel + if (result.getCombinedPhrases() != null && !result.getCombinedPhrases().isEmpty()) { + System.out.println("\n\nCombined Transcription (All Languages):"); + System.out.println("========================================"); + result.getCombinedPhrases().forEach(phrase -> { + System.out.println(phrase.getText()); + }); + } + + System.out.println("\nNote: When no locales are specified, the service transcribes all languages"); + System.out.println("present in the audio. However, the locale field in each phrase may not always"); + System.out.println("accurately reflect the actual language of that specific phrase."); + } catch (Exception e) { + System.err.println("Error: " + e.getMessage()); + e.printStackTrace(); + } + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeWithDiarizationSample.java b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeWithDiarizationSample.java new file mode 100644 index 000000000000..bf57f4308f36 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeWithDiarizationSample.java @@ -0,0 +1,86 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.speech.transcription; + +import com.azure.ai.speech.transcription.models.AudioFileDetails; +import com.azure.ai.speech.transcription.models.TranscribedPhrase; +import com.azure.ai.speech.transcription.models.TranscriptionDiarizationOptions; +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; +import com.azure.core.credential.KeyCredential; +import com.azure.core.util.BinaryData; + +import java.nio.file.Files; +import java.nio.file.Paths; + +/** + * Sample demonstrates using speaker diarization to identify different speakers in audio. + * + * Speaker diarization detects and separates different speakers in the audio, labeling + * each transcribed segment with a speaker ID. This is useful for: + * - Meeting transcriptions + * - Interview recordings + * - Multi-person conversations + * - Podcast transcriptions + */ +public class TranscribeWithDiarizationSample { + public static void main(String[] args) { + String endpoint = System.getenv("SPEECH_ENDPOINT"); + String apiKey = System.getenv("SPEECH_API_KEY"); + + if (endpoint == null || apiKey == null) { + System.err.println("Please set SPEECH_ENDPOINT and SPEECH_API_KEY environment variables"); + return; + } + + System.out.println("Azure AI Speech Transcription - Speaker Diarization Sample"); + System.out.println("===========================================================\n"); + + // Create client + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(apiKey)) + .buildClient(); + + try { + // Load audio file + String audioFilePath = "src/samples/assets/sample-audio.wav"; + byte[] audioData = Files.readAllBytes(Paths.get(audioFilePath)); + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Configure speaker diarization + TranscriptionDiarizationOptions diarizationOptions = new TranscriptionDiarizationOptions() + .setMaxSpeakers(5); // Maximum number of speakers to detect (2-36) + + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails) + .setDiarizationOptions(diarizationOptions); + + System.out.println("Transcribing with speaker diarization (max 5 speakers)...\n"); + + // Transcribe with diarization + TranscriptionResult result = client.transcribe(options); + + // Display results organized by speaker + System.out.println("Transcription with Speaker Information:"); + System.out.println("----------------------------------------"); + + if (result.getPhrases() != null && !result.getPhrases().isEmpty()) { + for (TranscribedPhrase phrase : result.getPhrases()) { + int speakerId = phrase.getSpeaker() != null ? phrase.getSpeaker() : 0; + double startTime = phrase.getOffset() / 1000.0; + double endTime = (phrase.getOffset() + phrase.getDuration().toMillis()) / 1000.0; + + System.out.println(String.format("\n[Speaker %d] (%.2fs - %.2fs)", + speakerId, startTime, endTime)); + System.out.println(phrase.getText()); + } + } + + + } catch (Exception e) { + System.err.println("Error: " + e.getMessage()); + e.printStackTrace(); + } + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeWithPhraseListSample.java b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeWithPhraseListSample.java new file mode 100644 index 000000000000..af07db34935e --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeWithPhraseListSample.java @@ -0,0 +1,97 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.speech.transcription; + +import com.azure.ai.speech.transcription.models.AudioFileDetails; +import com.azure.ai.speech.transcription.models.PhraseListOptions; +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; +import com.azure.core.credential.KeyCredential; +import com.azure.core.util.BinaryData; + +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Arrays; + +/** + * Sample demonstrates using a phrase list to improve recognition accuracy for specific terms. + * + * Phrase lists help the speech service better recognize domain-specific terminology, + * proper nouns, and uncommon words that might otherwise be misrecognized. + */ +public class TranscribeWithPhraseListSample { + public static void main(String[] args) { + String endpoint = System.getenv("SPEECH_ENDPOINT"); + String apiKey = System.getenv("SPEECH_API_KEY"); + + if (endpoint == null || apiKey == null) { + System.err.println("Please set SPEECH_ENDPOINT and SPEECH_API_KEY environment variables"); + return; + } + + System.out.println("Azure AI Speech Transcription - Phrase List Sample"); + System.out.println("====================================================\n"); + + // Create client + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(apiKey)) + .buildClient(); + + try { + // Load audio file + String audioFilePath = "src/samples/assets/sample-audio.wav"; + byte[] audioData = Files.readAllBytes(Paths.get(audioFilePath)); + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Create phrase list with custom terms + // Add phrases that appear in your audio for better recognition + PhraseListOptions phraseListOptions = new PhraseListOptions() + .setPhrases(Arrays.asList( + "Mary", + "El Mundo", + "Secret Garden", + "empleada doméstica", + "habitación" + )) + .setBiasingWeight(5.0); // Weight range: 1.0-20.0 (higher = stronger bias) + + // Create transcription options with phrase list + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails) + .setPhraseListOptions(phraseListOptions); + + System.out.println("Custom phrase list:"); + phraseListOptions.getPhrases().forEach(phrase -> + System.out.println(" - " + phrase) + ); + System.out.println("\nBiasing weight: " + phraseListOptions.getBiasingWeight()); + System.out.println("\nTranscribing with phrase list...\n"); + + // Transcribe + TranscriptionResult result = client.transcribe(options); + + System.out.println("Transcription result:"); + System.out.println("---------------------"); + result.getCombinedPhrases().forEach(phrase -> + System.out.println(phrase.getText()) + ); + + // Print individual phrases with timing information + if (result.getPhrases() != null && !result.getPhrases().isEmpty()) { + System.out.println("\nDetailed phrases:"); + result.getPhrases().forEach(phrase -> + System.out.println(String.format(" [%dms]: %s", + phrase.getOffset(), + phrase.getText())) + ); + } + + System.out.println("\n Transcription completed successfully!"); + + } catch (Exception e) { + System.err.println("Error: " + e.getMessage()); + e.printStackTrace(); + } + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeWithProfanityFilterSample.java b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeWithProfanityFilterSample.java new file mode 100644 index 000000000000..40a67d1b0188 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/TranscribeWithProfanityFilterSample.java @@ -0,0 +1,80 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.speech.transcription; + +import com.azure.ai.speech.transcription.models.AudioFileDetails; +import com.azure.ai.speech.transcription.models.ProfanityFilterMode; +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; +import com.azure.core.credential.KeyCredential; +import com.azure.core.util.BinaryData; + +import java.nio.file.Files; +import java.nio.file.Paths; + +/** + * Sample demonstrates profanity filtering in Azure AI Speech Transcription. + * Shows the difference between NONE (raw), MASKED (f***), REMOVED (omitted), and TAGS (XML tagged). + */ +public class TranscribeWithProfanityFilterSample { + /** + * Main method to run the profanity filter sample. + * + * @param args command line arguments (not used) + */ + public static void main(String[] args) { + System.out.println("Azure AI Speech Transcription - Profanity Filter Sample"); + System.out.println("==========================================================\n"); + + String endpoint = System.getenv("SPEECH_ENDPOINT"); + String apiKey = System.getenv("SPEECH_API_KEY"); + + if (endpoint == null || apiKey == null) { + System.err.println("Please set SPEECH_ENDPOINT and SPEECH_API_KEY environment variables"); + return; + } + + try { + // Create the transcription client + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(apiKey)) + .buildClient(); + + // Load audio file + String audioFilePath = "src/samples/assets/sample-profanity.wav"; + byte[] audioData = Files.readAllBytes(Paths.get(audioFilePath)); + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Demonstrate different profanity filter modes + ProfanityFilterMode[] modes = { + ProfanityFilterMode.NONE, + ProfanityFilterMode.MASKED, + ProfanityFilterMode.REMOVED, + ProfanityFilterMode.TAGS + }; + + for (ProfanityFilterMode mode : modes) { + System.out.println("Transcribing with profanity filter mode: " + mode); + System.out.println("----------------------------------------------"); + + // Create transcription options with profanity filter + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails) + .setProfanityFilterMode(mode); + + // Perform transcription + TranscriptionResult result = client.transcribe(options); + + // Display results + System.out.println("Combined text: " + result.getCombinedPhrases().get(0).getText()); + System.out.println(); + } + + + } catch (Exception e) { + System.err.println("Error during transcription: " + e.getMessage()); + e.printStackTrace(); + } + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/javadoccodesnippets/TranscriptionAsyncClientJavaDocCodeSnippets.java b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/javadoccodesnippets/TranscriptionAsyncClientJavaDocCodeSnippets.java new file mode 100644 index 000000000000..5dc618dee834 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/javadoccodesnippets/TranscriptionAsyncClientJavaDocCodeSnippets.java @@ -0,0 +1,215 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Source code snippets from this file are embedded in Transcription SDK JavaDoc (API documentation). + +package com.azure.ai.speech.transcription.javadoccodesnippets; + +import com.azure.ai.speech.transcription.TranscriptionAsyncClient; +import com.azure.ai.speech.transcription.TranscriptionClientBuilder; +import com.azure.ai.speech.transcription.models.AudioFileDetails; +import com.azure.ai.speech.transcription.models.ProfanityFilterMode; +import com.azure.ai.speech.transcription.models.TranscriptionDiarizationOptions; +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; +import com.azure.core.credential.KeyCredential; +import com.azure.core.util.BinaryData; +import reactor.core.publisher.Mono; + +import java.nio.file.Files; +import java.nio.file.Paths; +import java.time.Duration; +import java.util.Arrays; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +/** + * Code snippets for {@link TranscriptionAsyncClient} JavaDoc documentation. + */ +public class TranscriptionAsyncClientJavaDocCodeSnippets { + + private static String endpoint = System.getenv("SPEECH_ENDPOINT"); + private static String key = System.getenv("SPEECH_API_KEY"); + + /** + * Sample for creating an asynchronous TranscriptionAsyncClient with API key authentication. + */ + public void createAsyncClientWithApiKey() { + // BEGIN: com.azure.ai.speech.transcription.transcriptionasyncclient.instantiation.apikey + TranscriptionAsyncClient asyncClient = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(key)) + .buildAsyncClient(); + // END: com.azure.ai.speech.transcription.transcriptionasyncclient.instantiation.apikey + } + + /** + * Sample for transcribing audio asynchronously using subscribe pattern. + */ + public void transcribeAsyncWithSubscribe() throws Exception { + TranscriptionAsyncClient asyncClient = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(key)) + .buildAsyncClient(); + + byte[] audioData = Files.readAllBytes(Paths.get("sample.wav")); + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionasyncclient.transcribe.subscribe + CountDownLatch latch = new CountDownLatch(1); + + asyncClient.transcribe(options) + .subscribe( + // onNext: Process result + result -> { + System.out.println("Duration: " + result.getDuration() + " ms"); + if (result.getCombinedPhrases() != null) { + result.getCombinedPhrases().forEach(phrase -> + System.out.println("Text: " + phrase.getText()) + ); + } + latch.countDown(); + }, + // onError: Handle error + error -> { + System.err.println("Error: " + error.getMessage()); + latch.countDown(); + }, + // onComplete: Completion handler + () -> System.out.println("Transcription completed") + ); + + latch.await(60, TimeUnit.SECONDS); + // END: com.azure.ai.speech.transcription.transcriptionasyncclient.transcribe.subscribe + } + + /** + * Sample for transcribing audio asynchronously using block pattern. + */ + public void transcribeAsyncWithBlock() throws Exception { + TranscriptionAsyncClient asyncClient = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(key)) + .buildAsyncClient(); + + byte[] audioData = Files.readAllBytes(Paths.get("sample.wav")); + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionasyncclient.transcribe.block + // Use block() to convert async call to sync + TranscriptionResult result = asyncClient.transcribe(options).block(); + + if (result != null) { + System.out.println("Duration: " + result.getDuration() + " ms"); + } + // END: com.azure.ai.speech.transcription.transcriptionasyncclient.transcribe.block + } + + /** + * Sample for transcribing audio asynchronously with advanced options. + */ + public void transcribeAsyncWithOptions() throws Exception { + TranscriptionAsyncClient asyncClient = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(key)) + .buildAsyncClient(); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionasyncclient.transcribe.options + byte[] audioData = Files.readAllBytes(Paths.get("sample.wav")); + + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Configure advanced transcription options + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails) + .setLocales(Arrays.asList("en-US", "es-ES")) + .setProfanityFilterMode(ProfanityFilterMode.MASKED) + .setDiarizationOptions(new TranscriptionDiarizationOptions().setMaxSpeakers(5)); + + // Transcribe asynchronously + Mono resultMono = asyncClient.transcribe(options); + + // Process result + resultMono.subscribe(result -> { + if (result.getPhrases() != null) { + result.getPhrases().forEach(phrase -> { + System.out.printf("Speaker %d: %s%n", + phrase.getSpeaker(), phrase.getText()); + }); + } + }); + // END: com.azure.ai.speech.transcription.transcriptionasyncclient.transcribe.options + } + + /** + * Sample for transcribing audio asynchronously with timeout and error handling. + */ + public void transcribeAsyncWithTimeoutAndErrorHandling() throws Exception { + TranscriptionAsyncClient asyncClient = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(key)) + .buildAsyncClient(); + + byte[] audioData = Files.readAllBytes(Paths.get("sample.wav")); + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionasyncclient.transcribe.timeout + Mono resultMono = asyncClient.transcribe(options) + .timeout(Duration.ofMinutes(2)) + .doOnError(error -> System.err.println("Error: " + error.getMessage())) + .onErrorResume(error -> { + System.err.println("Fallback: Returning empty result"); + return Mono.empty(); + }); + + TranscriptionResult result = resultMono.block(); + // END: com.azure.ai.speech.transcription.transcriptionasyncclient.transcribe.timeout + } + + /** + * Sample for processing detailed async transcription results. + */ + public void processDetailedAsyncResults() throws Exception { + TranscriptionAsyncClient asyncClient = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(key)) + .buildAsyncClient(); + + byte[] audioData = Files.readAllBytes(Paths.get("sample.wav")); + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionasyncclient.results.detailed + asyncClient.transcribe(options) + .subscribe(result -> { + // Access combined phrases + if (result.getCombinedPhrases() != null) { + result.getCombinedPhrases().forEach(channelPhrase -> + System.out.printf("[Channel %d] %s%n", + channelPhrase.getChannel(), channelPhrase.getText()) + ); + } + + // Access detailed phrases with word-level timing + if (result.getPhrases() != null) { + result.getPhrases().forEach(phrase -> { + System.out.printf("Phrase (%.2f-%.2fs): %s%n", + phrase.getOffset() / 1000.0, + (phrase.getOffset() + phrase.getDuration().toMillis()) / 1000.0, + phrase.getText()); + + if (phrase.getWords() != null) { + phrase.getWords().forEach(word -> + System.out.printf(" \"%s\" at %.2fs%n", + word.getText(), + word.getOffset() / 1000.0) + ); + } + }); + } + }); + // END: com.azure.ai.speech.transcription.transcriptionasyncclient.results.detailed + } +} + diff --git a/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/javadoccodesnippets/TranscriptionClientJavaDocCodeSnippets.java b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/javadoccodesnippets/TranscriptionClientJavaDocCodeSnippets.java new file mode 100644 index 000000000000..cc9ebd2c57fc --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/samples/java/com/azure/ai/speech/transcription/javadoccodesnippets/TranscriptionClientJavaDocCodeSnippets.java @@ -0,0 +1,164 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Source code snippets from this file are embedded in Transcription SDK JavaDoc (API documentation). + +package com.azure.ai.speech.transcription.javadoccodesnippets; + +import com.azure.ai.speech.transcription.TranscriptionClient; +import com.azure.ai.speech.transcription.TranscriptionClientBuilder; +import com.azure.ai.speech.transcription.models.AudioFileDetails; +import com.azure.ai.speech.transcription.models.ProfanityFilterMode; +import com.azure.ai.speech.transcription.models.TranscriptionDiarizationOptions; +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; +import com.azure.core.credential.KeyCredential; +import com.azure.core.credential.TokenCredential; +import com.azure.core.util.BinaryData; +import com.azure.identity.DefaultAzureCredentialBuilder; + +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Arrays; + +/** + * Code snippets for {@link TranscriptionClient} JavaDoc documentation. + */ +public class TranscriptionClientJavaDocCodeSnippets { + + private static String endpoint = System.getenv("SPEECH_ENDPOINT"); + private static String key = System.getenv("SPEECH_API_KEY"); + + /** + * Sample for creating a synchronous TranscriptionClient with API key authentication. + */ + public void createClientWithApiKey() { + // BEGIN: com.azure.ai.speech.transcription.transcriptionclient.instantiation.apikey + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(key)) + .buildClient(); + // END: com.azure.ai.speech.transcription.transcriptionclient.instantiation.apikey + } + + /** + * Sample for creating a synchronous TranscriptionClient with Entra ID authentication. + */ + public void createClientWithTokenCredential() { + // BEGIN: com.azure.ai.speech.transcription.transcriptionclient.instantiation.tokencredential + // Use DefaultAzureCredential for Entra ID authentication + TokenCredential credential = new DefaultAzureCredentialBuilder().build(); + + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(credential) + .buildClient(); + // END: com.azure.ai.speech.transcription.transcriptionclient.instantiation.tokencredential + } + + /** + * Sample for transcribing audio from a file with default options. + */ + public void transcribeFromFile() throws Exception { + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(key)) + .buildClient(); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionclient.transcribe.file + // Read audio file + byte[] audioData = Files.readAllBytes(Paths.get("sample.wav")); + + // Create audio file details + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Create transcription options using the AudioFileDetails constructor + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails); + + // Transcribe audio + TranscriptionResult result = client.transcribe(options); + + // Process results + System.out.println("Duration: " + result.getDuration() + " ms"); + result.getCombinedPhrases().forEach(phrase -> { + System.out.println("Channel " + phrase.getChannel() + ": " + phrase.getText()); + }); + // END: com.azure.ai.speech.transcription.transcriptionclient.transcribe.file + } + + /** + * Sample for transcribing audio with advanced options. + */ + public void transcribeWithOptions() throws Exception { + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(key)) + .buildClient(); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionclient.transcribe.options + byte[] audioData = Files.readAllBytes(Paths.get("sample.wav")); + + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + + // Configure advanced transcription options + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails) + .setLocales(Arrays.asList("en-US", "es-ES")) + .setProfanityFilterMode(ProfanityFilterMode.MASKED) + .setDiarizationOptions(new TranscriptionDiarizationOptions().setMaxSpeakers(5)); + + TranscriptionResult result = client.transcribe(options); + + // Access detailed results + if (result.getPhrases() != null) { + result.getPhrases().forEach(phrase -> { + System.out.printf("Speaker %d: %s%n", + phrase.getSpeaker(), phrase.getText()); + }); + } + // END: com.azure.ai.speech.transcription.transcriptionclient.transcribe.options + } + + /** + * Sample for processing detailed transcription results with word-level timing. + */ + public void processDetailedResults() throws Exception { + TranscriptionClient client = new TranscriptionClientBuilder() + .endpoint(endpoint) + .credential(new KeyCredential(key)) + .buildClient(); + + byte[] audioData = Files.readAllBytes(Paths.get("sample.wav")); + AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData)); + TranscriptionOptions options = new TranscriptionOptions(audioFileDetails); + TranscriptionResult result = client.transcribe(options); + + // BEGIN: com.azure.ai.speech.transcription.transcriptionclient.results.detailed + // Access sentence-level combined phrases + if (result.getCombinedPhrases() != null) { + result.getCombinedPhrases().forEach(channelPhrase -> { + System.out.printf("[Channel %d] %s%n", + channelPhrase.getChannel(), channelPhrase.getText()); + }); + } + + // Access word-level details with timing + if (result.getPhrases() != null) { + result.getPhrases().forEach(phrase -> { + System.out.printf("Phrase (%.2f-%.2fs): %s%n", + phrase.getOffset() / 1000.0, + (phrase.getOffset() + phrase.getDuration().toMillis()) / 1000.0, + phrase.getText()); + + // Get word-level timing information + if (phrase.getWords() != null) { + phrase.getWords().forEach(word -> { + System.out.printf(" Word: \"%s\" at %.2fs%n", + word.getText(), + word.getOffset() / 1000.0); + }); + } + }); + } + // END: com.azure.ai.speech.transcription.transcriptionclient.results.detailed + } +} + diff --git a/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/README.md b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/README.md new file mode 100644 index 000000000000..353f2605ba20 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/README.md @@ -0,0 +1,214 @@ +# Azure AI Speech Transcription client library tests for Java + +This directory contains tests for the Azure AI Speech Transcription client library for Java. + +## Test Structure + +The tests are organized as follows: + +- **TranscriptionClientTestBase.java**: Base class containing common test infrastructure, helper methods, and validation logic. Includes support for both file-based and URL-based transcription. +- **TranscriptionClientTest.java**: Tests for the synchronous `TranscriptionClient` (14 tests) +- **TranscriptionAsyncClientTest.java**: Tests for the asynchronous `TranscriptionAsyncClient` (16 tests) +- **generated/**: Auto-generated test templates (for reference only) + +## Prerequisites + +Before running the tests, you need: + +1. An Azure Cognitive Services Speech resource. Create one using the [Azure Portal](https://portal.azure.com/). +2. Java Development Kit (JDK) 8 or later +3. Maven 3.x or later +4. A sample audio file for testing (WAV, MP3, or OGG format, shorter than 2 hours, smaller than 250 MB) + +## Set Environment Variables + +Set the following environment variables to run live tests: + +### Windows (PowerShell) + +```powershell +$env:SPEECH_ENDPOINT = "https://.cognitiveservices.azure.com" +$env:SPEECH_API_KEY = "" +``` + +### Windows (Command Prompt) + +```cmd +set SPEECH_ENDPOINT=https://.cognitiveservices.azure.com +set SPEECH_API_KEY= +``` + +### Linux/macOS (Bash) + +```bash +export SPEECH_ENDPOINT="https://.cognitiveservices.azure.com" +export SPEECH_API_KEY="" +``` + +## Configure Test Proxy + +The Azure SDK for Java uses a test proxy for recording and playing back HTTP interactions. This library has been migrated to use the test proxy following the [Test Proxy Migration Guide](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/core/azure-core-test/TestProxyMigrationGuide.md). + +Test recordings are stored in the [azure-sdk-assets](https://github.com/Azure/azure-sdk-assets) repository and referenced via the `assets.json` file. Configure the test mode by setting the `AZURE_TEST_MODE` environment variable: + +### Live Mode (against live service) + +```powershell +$env:AZURE_TEST_MODE = "LIVE" +``` + +This mode makes real HTTP calls to the Azure service. Use this when you want to test against the actual service. + +### Record Mode (record interactions) + +```powershell +$env:AZURE_TEST_MODE = "RECORD" +``` + +This mode makes real HTTP calls and records them for later playback. Recordings are managed by the test-proxy tool and can be pushed to the azure-sdk-assets repository using: + +```bash +test-proxy push -a assets.json +``` + +### Playback Mode (use recordings) + +```powershell +$env:AZURE_TEST_MODE = "PLAYBACK" +``` + +This mode uses previously recorded HTTP interactions instead of making real calls. This is the default mode and doesn't require credentials. + +## Running Tests + +### Run All Tests + +From the `sdk/transcription/azure-ai-speech-transcription` directory: + +```bash +mvn clean test +``` + +### Run Specific Test Class + +```bash +mvn test -Dtest=TranscriptionClientTest +``` + +or + +```bash +mvn test -Dtest=TranscriptionAsyncClientTest +``` + +### Run a Specific Test Method + +```bash +mvn test -Dtest=TranscriptionClientTest#testTranscribeSyncBasicFromFile +``` + +## Test Organization + +### Synchronous Tests (TranscriptionClientTest) + +Tests for the synchronous `TranscriptionClient` (14 tests), including: + +- Basic transcription from file +- Transcription from URL (using publicly accessible audio URL) +- Transcription with language specification +- Transcription with multiple languages +- Transcription with speaker diarization +- Transcription with profanity filtering +- Transcription with word-level timestamps +- Tests using `transcribeWithResponse()` method +- Tests with custom RequestOptions + +### Asynchronous Tests (TranscriptionAsyncClientTest) + +Tests for the asynchronous `TranscriptionAsyncClient` (16 tests), mirroring the synchronous tests but using reactive programming patterns with `Mono` and `Flux`. Includes additional tests for: + +- Transcription from URL (using publicly accessible audio URL) +- Error handling with invalid language codes +- Placeholder tests for empty audio data and cancellation scenarios + +## Authentication + +The tests support two authentication methods: + +1. **Key-based authentication** (default): Uses the API key from `SPEECH_API_KEY` environment variable +2. **Token-based authentication**: Uses Entra ID credentials via `DefaultAzureCredential` + +To test with token-based authentication, some tests use `createClient(false, true, sync)` where the first parameter is `false`. + +## Troubleshooting + +### Common Issues + +1. **Missing environment variables**: Ensure `SPEECH_ENDPOINT` and `SPEECH_API_KEY` are set correctly +2. **Missing sample audio file**: Make sure you have a `sample.wav` file in the test directory (WAV, MP3, or OGG format, shorter than 2 hours, smaller than 250 MB) +3. **URL transcription failures**: URL-based transcription requires a specific API key tier that supports this feature. If URL tests fail with 401 errors, verify your Speech resource supports URL transcription. +4. **Test proxy issues**: If playback tests fail, try running in LIVE or RECORD mode first to regenerate recordings +5. **Network issues**: Check your network connection and firewall settings + +### Enable Detailed Logging + +To enable detailed HTTP logging during tests, set the logging level in your `logback-test.xml` or via environment variables: + +```powershell +$env:AZURE_LOG_LEVEL = "verbose" +``` + +## Additional Resources + +- [Azure SDK for Java Test Documentation](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/core/azure-core-test/README.md) +- [TypeSpec Java QuickStart - Adding Tests](https://github.com/Azure/azure-sdk-for-java/wiki/TypeSpec-Java-QuickStart#adding-tests) +- [Azure Speech Service Documentation](https://learn.microsoft.com/azure/cognitive-services/speech-service/) +- [Azure SDK for Java Contributing Guide](https://github.com/Azure/azure-sdk-for-java/blob/main/CONTRIBUTING.md) + +## Test Coverage + +The current tests cover: + +- ✅ Client instantiation with different authentication methods +- ✅ Basic transcription functionality from files +- ✅ Transcription from publicly accessible URLs +- ✅ Transcription with various options (language, diarization, profanity filter, timestamps) +- ✅ Both synchronous and asynchronous clients +- ✅ Methods with and without `Response` wrappers +- ✅ Custom RequestOptions and headers +- ✅ Error handling (invalid language codes) + +Areas for future enhancement: + +- ⏳ Empty audio data handling (placeholder test exists) +- ⏳ Cancellation scenarios (placeholder test exists) +- ⬜ Performance tests +- ⬜ Concurrent request handling +- ⬜ Edge cases (very long audio, multiple channels, etc.) + +## Recording Sanitizers + +The tests use the test-proxy's built-in sanitizers to automatically redact sensitive information from recordings: + +- API keys and authentication tokens +- Connection strings and passwords +- Account names and identifiers +- Hostnames in URLs + +Some default sanitizers (AZSDK2003, AZSDK2030, AZSDK3430, AZSDK3493) are explicitly removed to preserve resource identifiers needed for proper request matching during playback. + +## Managing Test Recordings + +### Restore recordings from assets repo + +```bash +test-proxy restore -a assets.json +``` + +### Push new recordings to assets repo + +```bash +test-proxy push -a assets.json +``` + +This creates a new tag in the azure-sdk-assets repository and updates `assets.json` with the new tag reference. diff --git a/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionAsyncClientTest.java b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionAsyncClientTest.java new file mode 100644 index 000000000000..2d46371ee25d --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionAsyncClientTest.java @@ -0,0 +1,273 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.speech.transcription; + +import com.azure.ai.speech.transcription.models.ProfanityFilterMode; +import com.azure.ai.speech.transcription.models.TranscriptionDiarizationOptions; +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.http.HttpHeaderName; +import com.azure.core.http.rest.RequestOptions; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +/** + * Tests for TranscriptionAsyncClient (asynchronous client). + */ +class TranscriptionAsyncClientTest extends TranscriptionClientTestBase { + + private final Boolean sync = false; // All tests in this file use the async client + + /*********************************************************************************** + * + * HAPPY PATH TESTS + * + ***********************************************************************************/ + + @Test + public void testTranscribeAsyncBasicFromFile() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options = new TranscriptionOptions((String) null); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeAsyncWithLanguageFromFile() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US")); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeAsyncWithMultipleLanguagesFromFile() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options + = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US", "es-ES", "fr-FR")); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeAsyncWithDiarizationFromFile() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionDiarizationOptions diarizationOptions = new TranscriptionDiarizationOptions().setMaxSpeakers(5); + + TranscriptionOptions options + = new TranscriptionOptions((String) null).setDiarizationOptions(diarizationOptions); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeAsyncWithProfanityFilterFromFile() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options + = new TranscriptionOptions((String) null).setProfanityFilterMode(ProfanityFilterMode.MASKED); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeAsyncWithChannelsFromFile() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options = new TranscriptionOptions((String) null).setActiveChannels(Arrays.asList(0)); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeAsyncAllOptionsFromFile() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionDiarizationOptions diarizationOptions = new TranscriptionDiarizationOptions().setMaxSpeakers(5); + + TranscriptionOptions options = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US")) + .setDiarizationOptions(diarizationOptions) + .setProfanityFilterMode(ProfanityFilterMode.MASKED) + .setActiveChannels(Arrays.asList(0)); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeAsyncBasicFromFileWithResponse() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options = new TranscriptionOptions((String) null); + RequestOptions requestOptions + = new RequestOptions().addHeader(HttpHeaderName.fromString("x-custom-header"), "custom-value"); + + doTranscription(methodName, sync, true, audioFile, options, requestOptions); + } + + @Test + public void testTranscribeAsyncWithAllOptionsFromFileWithResponse() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionDiarizationOptions diarizationOptions = new TranscriptionDiarizationOptions().setMaxSpeakers(5); + + TranscriptionOptions options + = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US", "es-ES")) + .setDiarizationOptions(diarizationOptions) + .setProfanityFilterMode(ProfanityFilterMode.REMOVED) + .setActiveChannels(Arrays.asList(0, 1)); + + RequestOptions requestOptions + = new RequestOptions().addHeader(HttpHeaderName.fromString("x-custom-header"), "custom-value") + .addQueryParam("test-param", "test-value"); + + doTranscription(methodName, sync, true, audioFile, options, requestOptions); + } + + @Test + public void testTranscribeAsyncWithAudioUrl() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + // Using a publicly accessible sample audio file from Azure samples + String audioUrl + = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-speech-sdk/master/sampledata/audiofiles/aboutSpeechSdk.wav"; + TranscriptionOptions options = new TranscriptionOptions(audioUrl).setLocales(Arrays.asList("en-US")); + + // For URL-based transcription, we don't pass the local audio file path + doTranscriptionWithUrl(methodName, sync, options); + } + + @Test + public void testTranscribeAsyncWithProfanityModeMasked() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options + = new TranscriptionOptions((String) null).setProfanityFilterMode(ProfanityFilterMode.MASKED); + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeAsyncWithProfanityModeRemoved() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options + = new TranscriptionOptions((String) null).setProfanityFilterMode(ProfanityFilterMode.REMOVED); + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeAsyncWithProfanityModeTags() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options + = new TranscriptionOptions((String) null).setProfanityFilterMode(ProfanityFilterMode.TAGS); + doTranscription(methodName, sync, false, audioFile, options, null); + } + + /*********************************************************************************** + * + * ERROR HANDLING TESTS + * + ***********************************************************************************/ + + @Test + public void testTranscribeAsyncWithEmptyAudioData() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + // Test with minimal audio data - service should handle gracefully + TranscriptionOptions options = new TranscriptionOptions((String) null); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeAsyncWithInvalidLanguageCode() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + // Use invalid language code to trigger service error + TranscriptionOptions options + = new TranscriptionOptions((String) null).setLocales(Arrays.asList("invalid-locale-code")); + + // The service should return a 400 error for invalid locale + // doTranscription wraps exceptions in RuntimeException, so we catch that + try { + doTranscription(methodName, sync, false, audioFile, options, null); + // Should not reach here - the above should throw an exception + throw new AssertionError("Expected RuntimeException with HttpResponseException cause but none was thrown"); + } catch (RuntimeException e) { + // Expected behavior - verify the cause is HttpResponseException with 400 status + if (!(e.getCause() instanceof HttpResponseException)) { + throw new AssertionError( + "Expected RuntimeException cause to be HttpResponseException but got: " + e.getCause().getClass()); + } + HttpResponseException httpException = (HttpResponseException) e.getCause(); + if (httpException.getResponse().getStatusCode() != 400) { + throw new AssertionError( + "Expected 400 status code but got: " + httpException.getResponse().getStatusCode()); + } + } + } + + @Test + public void testTranscribeAsyncCancellation() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + // Test cancellation behavior with a normal transcription request + TranscriptionOptions options = new TranscriptionOptions((String) null); + + doTranscription(methodName, sync, false, audioFile, options, null); + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTest.java b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTest.java new file mode 100644 index 000000000000..0d9b261ccf44 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTest.java @@ -0,0 +1,226 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.speech.transcription; + +import com.azure.ai.speech.transcription.models.ProfanityFilterMode; +import com.azure.ai.speech.transcription.models.TranscriptionDiarizationOptions; +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.core.http.HttpHeaderName; +import com.azure.core.http.rest.RequestOptions; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +/** + * Tests for TranscriptionClient (synchronous client). + */ +class TranscriptionClientTest extends TranscriptionClientTestBase { + + private final Boolean sync = true; // All tests in this file use the sync client + + /*********************************************************************************** + * + * HAPPY PATH TESTS + * + ***********************************************************************************/ + + @Test + public void testTranscribeSyncBasicFromFile() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options = new TranscriptionOptions((String) null); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeSyncWithLanguageFromFile() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US")); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeSyncWithMultipleLanguagesFromFile() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options + = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US", "es-ES", "fr-FR")); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeSyncWithDiarizationFromFile() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionDiarizationOptions diarizationOptions = new TranscriptionDiarizationOptions().setMaxSpeakers(5); + + TranscriptionOptions options + = new TranscriptionOptions((String) null).setDiarizationOptions(diarizationOptions); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeSyncWithProfanityFilterFromFile() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options + = new TranscriptionOptions((String) null).setProfanityFilterMode(ProfanityFilterMode.MASKED); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeSyncWithChannelsFromFile() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options = new TranscriptionOptions((String) null).setActiveChannels(Arrays.asList(0)); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeSyncAllOptionsFromFile() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionDiarizationOptions diarizationOptions = new TranscriptionDiarizationOptions().setMaxSpeakers(5); + + TranscriptionOptions options = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US")) + .setDiarizationOptions(diarizationOptions) + .setProfanityFilterMode(ProfanityFilterMode.MASKED) + .setActiveChannels(Arrays.asList(0)); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeSyncBasicFromFileWithResponse() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options = new TranscriptionOptions((String) null); + RequestOptions requestOptions + = new RequestOptions().addHeader(HttpHeaderName.fromString("x-custom-header"), "custom-value"); + + doTranscription(methodName, sync, true, audioFile, options, requestOptions); + } + + @Test + public void testTranscribeSyncWithAllOptionsFromFileWithResponse() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionDiarizationOptions diarizationOptions = new TranscriptionDiarizationOptions().setMaxSpeakers(5); + + TranscriptionOptions options + = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US", "es-ES")) + .setDiarizationOptions(diarizationOptions) + .setProfanityFilterMode(ProfanityFilterMode.REMOVED) + .setActiveChannels(Arrays.asList(0, 1)); + + RequestOptions requestOptions + = new RequestOptions().addHeader(HttpHeaderName.fromString("x-custom-header"), "custom-value") + .addQueryParam("test-param", "test-value"); + + doTranscription(methodName, sync, true, audioFile, options, requestOptions); + } + + @Test + public void testTranscribeSyncWithMultipleChannels() { + // Test with multiple channel indices + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + TranscriptionOptions options = new TranscriptionOptions((String) null).setActiveChannels(Arrays.asList(0, 1)); + + doTranscription(methodName, sync, false, audioFile, options, null); + } + + @Test + public void testTranscribeSyncWithAudioUrl() { + createClient(true, true, sync); + + String methodName = new Object() { + }.getClass().getEnclosingMethod().getName(); + + // Using a publicly accessible sample audio file from Azure samples + String audioUrl + = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-speech-sdk/master/sampledata/audiofiles/aboutSpeechSdk.wav"; + TranscriptionOptions options = new TranscriptionOptions(audioUrl).setLocales(Arrays.asList("en-US")); + + // For URL-based transcription, we don't pass the local audio file path + doTranscriptionWithUrl(methodName, sync, options); + } + + /*********************************************************************************** + * + * ERROR HANDLING TESTS + * + ***********************************************************************************/ + + @Test + public void testTranscribeSyncWithNullOptions() { + createClient(true, true, sync); + + // Test that null options throws appropriate exception + assertThrows(NullPointerException.class, () -> { + getClient().transcribe((TranscriptionOptions) null); + }, "Transcribe should throw NullPointerException when options is null"); + } + + @Test + public void testTranscribeSyncWithEmptyAudioData() { + createClient(true, true, sync); + + // Test with empty audio data - this should result in a service error + // Note: Depending on service behavior, this may throw HttpResponseException + // The exact behavior should be validated based on actual service responses + } + + @Test + public void testTranscribeSyncWithInvalidLanguageCode() { + createClient(true, true, sync); + + // Note: This test requires actual service call to verify behavior + // In PLAYBACK mode, this would replay the recorded error response + // Example implementation: + // TranscriptionOptions options = new TranscriptionOptions((String) null) + // .setLocales(Arrays.asList("invalid-locale")); + // doTranscription(methodName, sync, false, audioFile, options, null); + // The service should return an error for invalid locale + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTestBase.java b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTestBase.java new file mode 100644 index 000000000000..7a8b8c1ec0f8 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTestBase.java @@ -0,0 +1,337 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.speech.transcription; + +import com.azure.ai.speech.transcription.models.AudioFileDetails; +import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; +import com.azure.core.credential.KeyCredential; +import com.azure.core.credential.TokenCredential; +import com.azure.core.http.HttpRequest; +import com.azure.core.http.policy.HttpLogDetailLevel; +import com.azure.core.http.policy.HttpLogOptions; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.test.TestMode; +import com.azure.core.test.TestProxyTestBase; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Configuration; +import com.azure.core.util.logging.ClientLogger; +import com.azure.identity.DefaultAzureCredentialBuilder; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Paths; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * Base class for TranscriptionClient tests. Contains helper methods and common test infrastructure. + * Supports both API Key (KeyCredential) and Entra ID (TokenCredential) authentication. + */ +class TranscriptionClientTestBase extends TestProxyTestBase { + private static final ClientLogger LOGGER = new ClientLogger(TranscriptionClientTestBase.class); + + final Boolean printResults = false; // Set to true to print results to console window + + // Sample audio file for testing + final String audioFile = "./src/test/java/com/azure/ai/speech/transcription/sample.wav"; + + // The clients that will be used for tests + private TranscriptionClient client = null; + private TranscriptionAsyncClient asyncClient = null; + + /** + * Sets up the test resources before each test. + */ + @BeforeEach + public void setupTest() { + // Reset clients before each test to ensure clean state + client = null; + asyncClient = null; + } + + /** + * Cleans up test resources after each test. + */ + @AfterEach + public void cleanupTest() { + // Clean up any resources if needed + // Note: The clients don't require explicit cleanup as they are managed by the test framework + } + + /** + * Creates a client for testing. + * + * @param useKeyAuth Whether to use key-based authentication (true) or token-based authentication (false) + * @param useRealKey Whether to use a real key from environment variables (true) or a fake key (false). + * Only applies when useKeyAuth is true. + * @param sync Whether to create a synchronous client (true) or asynchronous client (false) + */ + protected void createClient(Boolean useKeyAuth, Boolean useRealKey, Boolean sync) { + TestMode testMode = getTestMode(); + + // Define endpoint and auth credentials + String endpoint = "https://fake-resource-name.cognitiveservices.azure.com"; + String key = "00000000000000000000000000000000"; + + if (testMode == TestMode.LIVE || testMode == TestMode.RECORD) { + endpoint = Configuration.getGlobalConfiguration().get("SPEECH_ENDPOINT"); + assertTrue(endpoint != null && !endpoint.isEmpty(), "Endpoint URL is required to run live tests."); + + if (useKeyAuth && useRealKey) { + key = Configuration.getGlobalConfiguration().get("SPEECH_API_KEY"); + assertTrue(key != null && !key.isEmpty(), "API key is required to run live tests with KeyCredential."); + } + } + + // Create the client builder + TranscriptionClientBuilder transcriptionClientBuilder = new TranscriptionClientBuilder().endpoint(endpoint) + .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS)); + + // Update the client builder with credentials and recording/playback policies + if (getTestMode() == TestMode.LIVE) { + if (useKeyAuth) { + transcriptionClientBuilder.credential(new KeyCredential(key)); + } else { + // Use Entra ID authentication (TokenCredential) + TokenCredential credential = new DefaultAzureCredentialBuilder().build(); + transcriptionClientBuilder.credential(credential); + } + } else if (getTestMode() == TestMode.RECORD) { + transcriptionClientBuilder.addPolicy(interceptorManager.getRecordPolicy()); + if (useKeyAuth) { + transcriptionClientBuilder.credential(new KeyCredential(key)); + } else { + TokenCredential credential = new DefaultAzureCredentialBuilder().build(); + transcriptionClientBuilder.credential(credential); + } + } else if (getTestMode() == TestMode.PLAYBACK) { + transcriptionClientBuilder.httpClient(interceptorManager.getPlaybackClient()); + // In playback mode, use a fake key regardless of authentication method + transcriptionClientBuilder.credential(new KeyCredential(key)); + } + + // Configure sanitizers - must be done after registering the record policy or playback client + if (!interceptorManager.isLiveMode()) { + // Remove default sanitizers that would interfere with Speech service recordings: + // - AZSDK3430 (id sanitizer): Preserve resource identifiers needed for request matching + // - AZSDK3493 (name sanitizer): Preserve resource names needed for request matching + // - AZSDK2003, AZSDK2030: URI-related sanitizers that may affect Speech endpoints + interceptorManager.removeSanitizers("AZSDK2003", "AZSDK2030", "AZSDK3430", "AZSDK3493"); + } + + if (sync) { + client = transcriptionClientBuilder.buildClient(); + } else { + asyncClient = transcriptionClientBuilder.buildAsyncClient(); + } + } + + /** + * Performs transcription with audio URL and validates the result. + * + * @param testName A label that uniquely defines the test. Used in console printout. + * @param sync 'true' to use synchronous client, 'false' to use asynchronous client. + * @param options TranscriptionOptions with audioUrl set + */ + protected void doTranscriptionWithUrl(String testName, Boolean sync, TranscriptionOptions options) { + try { + // Verify that audioUrl is set + assertNotNull(options.getAudioUrl(), "AudioUrl must be set for URL-based transcription"); + assertFalse(options.getAudioUrl().isEmpty(), "AudioUrl must not be empty"); + + TranscriptionResult result = null; + if (sync) { + result = client.transcribe(options); + } else { + result = asyncClient.transcribe(options).block(); + } + + validateTranscriptionResult(testName, result); + } catch (Exception e) { + LOGGER.error("Error in test {}: {}", testName, e.getMessage()); + throw new RuntimeException(e); + } + } + + /** + * Performs transcription and validates the result. + * + * @param testName A label that uniquely defines the test. Used in console printout. + * @param sync 'true' to use synchronous client, 'false' to use asynchronous client. + * @param transcribeWithResponse 'true' to use transcribeWithResponse(), 'false' to use transcribe(). + * @param audioFilePath Path to the audio file to transcribe + * @param options TranscriptionOptions (can be null) + * @param requestOptions RequestOptions (can be null) + */ + protected void doTranscription(String testName, Boolean sync, Boolean transcribeWithResponse, String audioFilePath, + TranscriptionOptions options, RequestOptions requestOptions) { + + try { + // Load audio file + byte[] audioData = Files.readAllBytes(Paths.get(audioFilePath)); + AudioFileDetails audioFileDetails + = new AudioFileDetails(BinaryData.fromBytes(audioData)).setFilename(new File(audioFilePath).getName()); + + // Create new options with audio file details if options is currently using URL or null + if (options.getAudioUrl() == null) { + // Options was created with null, need to create a new one with audio file details + options = new TranscriptionOptions(audioFileDetails).setLocales(options.getLocales()) + .setLocaleModelMapping(options.getLocaleModelMapping()) + .setProfanityFilterMode(options.getProfanityFilterMode()) + .setDiarizationOptions(options.getDiarizationOptions()) + .setActiveChannels(options.getActiveChannels()) + .setEnhancedModeOptions(options.getEnhancedModeOptions()) + .setPhraseListOptions(options.getPhraseListOptions()); + } + + if (sync) { + TranscriptionResult result = null; + if (!transcribeWithResponse) { + result = client.transcribe(options); + } else { + if (requestOptions == null) { + // Use the new transcribeWithResponse(TranscriptionOptions) convenience method + Response response = client.transcribeWithResponse(options); + printHttpRequestAndResponse(response); + result = response.getValue(); + } else { + // When custom RequestOptions are needed, use the lower-level API + BinaryData multipartBody + = new com.azure.ai.speech.transcription.implementation.MultipartFormDataHelper( + requestOptions) + .serializeJsonField("definition", options) + .serializeFileField("audio", audioFileDetails.getContent(), + audioFileDetails.getContentType(), audioFileDetails.getFilename()) + .end() + .getRequestBody(); + Response response = client.transcribeWithResponse(multipartBody, requestOptions); + printHttpRequestAndResponse(response); + result = response.getValue().toObject(TranscriptionResult.class); + } + } + validateTranscriptionResult(testName, result); + } else { + TranscriptionResult result = null; + if (!transcribeWithResponse) { + result = asyncClient.transcribe(options).block(); + } else { + if (requestOptions == null) { + // Use the new transcribeWithResponse(TranscriptionOptions) convenience method + Response response = asyncClient.transcribeWithResponse(options).block(); + printHttpRequestAndResponse(response); + result = response.getValue(); + } else { + // When custom RequestOptions are needed, use the lower-level API + BinaryData multipartBody + = new com.azure.ai.speech.transcription.implementation.MultipartFormDataHelper( + requestOptions) + .serializeJsonField("definition", options) + .serializeFileField("audio", audioFileDetails.getContent(), + audioFileDetails.getContentType(), audioFileDetails.getFilename()) + .end() + .getRequestBody(); + Response response + = asyncClient.transcribeWithResponse(multipartBody, requestOptions).block(); + printHttpRequestAndResponse(response); + result = response.getValue().toObject(TranscriptionResult.class); + } + } + validateTranscriptionResult(testName, result); + } + } catch (Exception e) { + LOGGER.error("Error in test {}: {}", testName, e.getMessage()); + throw new RuntimeException(e); + } + } + + /** + * Validates the transcription result. + * + * @param testName The name of the test + * @param result The transcription result to validate + */ + protected void validateTranscriptionResult(String testName, TranscriptionResult result) { + if (printResults) { + System.out.println("\n===== Test: " + testName + " ====="); + System.out.println("Duration: " + result.getDuration() + "ms"); + if (result.getCombinedPhrases() != null) { + result.getCombinedPhrases().forEach(phrase -> { + System.out.println("Channel " + phrase.getChannel() + ": " + phrase.getText()); + }); + } + if (result.getPhrases() != null) { + result.getPhrases().forEach(phrase -> { + System.out.println("Phrase: " + phrase.getText() + " (confidence: " + phrase.getConfidence() + ")"); + }); + } + } + + // Basic validation + assertNotNull(result, "Transcription result should not be null"); + assertNotNull(result.getDuration(), "Duration should not be null"); + assertTrue(result.getDuration().toMillis() > 0, "Duration should be greater than 0"); + assertNotNull(result.getCombinedPhrases(), "Combined phrases should not be null"); + assertFalse(result.getCombinedPhrases().isEmpty(), "Combined phrases should not be empty"); + assertNotNull(result.getPhrases(), "Phrases should not be null"); + assertFalse(result.getPhrases().isEmpty(), "Phrases should not be empty"); + + // Validate combined phrases + result.getCombinedPhrases().forEach(phrase -> { + assertNotNull(phrase.getText(), "Combined phrase text should not be null"); + assertFalse(phrase.getText().isEmpty(), "Combined phrase text should not be empty"); + }); + + // Validate phrases + result.getPhrases().forEach(phrase -> { + assertNotNull(phrase.getText(), "Phrase text should not be null"); + assertFalse(phrase.getText().isEmpty(), "Phrase text should not be empty"); + assertTrue(phrase.getConfidence() >= 0 && phrase.getConfidence() <= 1, + "Confidence should be between 0 and 1"); + assertTrue(phrase.getOffset() >= 0, "Offset should be non-negative"); + assertTrue(phrase.getDuration().toMillis() > 0, "Phrase duration should be positive"); + }); + } + + /** + * Prints HTTP request and response details for debugging. + * + * @param response The HTTP response + */ + protected void printHttpRequestAndResponse(Response response) { + if (printResults) { + HttpRequest request = response.getRequest(); + System.out.println("\n===== HTTP Request ====="); + System.out.println(request.getHttpMethod() + " " + request.getUrl()); + request.getHeaders().forEach(header -> System.out.println(header.getName() + ": " + header.getValue())); + + System.out.println("\n===== HTTP Response ====="); + System.out.println("Status Code: " + response.getStatusCode()); + response.getHeaders().forEach(header -> System.out.println(header.getName() + ": " + header.getValue())); + } + } + + /** + * Gets the synchronous client. + * + * @return The TranscriptionClient + */ + protected TranscriptionClient getClient() { + return client; + } + + /** + * Gets the asynchronous client. + * + * @return The TranscriptionAsyncClient + */ + protected TranscriptionAsyncClient getAsyncClient() { + return asyncClient; + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/generated/TranscriptionClientTestBase.java b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/generated/TranscriptionClientTestBase.java new file mode 100644 index 000000000000..2e70366d4ec1 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/generated/TranscriptionClientTestBase.java @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.speech.transcription.generated; + +// The Java test files under 'generated' package are generated for your reference. +// If you wish to modify these files, please copy them out of the 'generated' package, and modify there. +// See https://aka.ms/azsdk/dpg/java/tests for guide on adding a test. + +import com.azure.ai.speech.transcription.TranscriptionClient; +import com.azure.ai.speech.transcription.TranscriptionClientBuilder; +import com.azure.core.http.policy.HttpLogDetailLevel; +import com.azure.core.http.policy.HttpLogOptions; +import com.azure.core.test.TestMode; +import com.azure.core.test.TestProxyTestBase; +import com.azure.core.test.utils.MockTokenCredential; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; + +class TranscriptionClientTestBase extends TestProxyTestBase { + protected TranscriptionClient transcriptionClient; + + @Override + protected void beforeTest() { + TranscriptionClientBuilder transcriptionClientbuilder = new TranscriptionClientBuilder() + .endpoint(Configuration.getGlobalConfiguration().get("ENDPOINT", "endpoint")) + .httpClient(getHttpClientOrUsePlayback(getHttpClients().findFirst().orElse(null))) + .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BASIC)); + if (getTestMode() == TestMode.PLAYBACK) { + transcriptionClientbuilder.credential(new MockTokenCredential()); + } else if (getTestMode() == TestMode.RECORD) { + transcriptionClientbuilder.addPolicy(interceptorManager.getRecordPolicy()) + .credential(new DefaultAzureCredentialBuilder().build()); + } else if (getTestMode() == TestMode.LIVE) { + transcriptionClientbuilder.credential(new DefaultAzureCredentialBuilder().build()); + } + transcriptionClient = transcriptionClientbuilder.buildClient(); + + } +} diff --git a/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/sample.wav b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/sample.wav new file mode 100644 index 0000000000000000000000000000000000000000..bf23d54b0c00ed3d980af954f9591a68d0d89550 GIT binary patch literal 764562 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π(xQ4@{lk0NJ4*fEIfRNFyJheI^NQ1PM6% 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/giG-O$Hmoit%Qi*jU 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ⅆ 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

u>)@V&?Y{2Ngu*Td}cV0E2(S^lWB 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

xM;2qpC|3Z>Qj~U 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�K{TSnT)hHuT25`NneFi$tkk$M@%8Hz|>!3%1R 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 literal 0 HcmV?d00001 diff --git a/sdk/transcription/azure-ai-speech-transcription/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/sdk/transcription/azure-ai-speech-transcription/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker new file mode 100644 index 000000000000..1f0955d450f0 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker @@ -0,0 +1 @@ +mock-maker-inline diff --git a/sdk/transcription/azure-ai-speech-transcription/tsp-location.yaml b/sdk/transcription/azure-ai-speech-transcription/tsp-location.yaml new file mode 100644 index 000000000000..ed7b497e5fa9 --- /dev/null +++ b/sdk/transcription/azure-ai-speech-transcription/tsp-location.yaml @@ -0,0 +1,4 @@ +directory: specification/cognitiveservices/Speech.Transcription +commit: 67019b34b001ae6b8429ee983b9697465d721d0b +repo: Azure/azure-rest-api-specs +additionalDirectories: diff --git a/sdk/transcription/ci.yml b/sdk/transcription/ci.yml new file mode 100644 index 000000000000..bbf4e187a7f2 --- /dev/null +++ b/sdk/transcription/ci.yml @@ -0,0 +1,46 @@ +# NOTE: Please refer to https://aka.ms/azsdk/engsys/ci-yaml before editing this file. + +trigger: + branches: + include: + - main + - hotfix/* + - release/* + paths: + include: + - sdk/transcription/ci.yml + - sdk/transcription/azure-ai-speech-transcription/ + exclude: + - sdk/transcription/pom.xml + - sdk/transcription/azure-ai-speech-transcription/pom.xml + +pr: + branches: + include: + - main + - feature/* + - hotfix/* + - release/* + paths: + include: + - sdk/transcription/ci.yml + - sdk/transcription/azure-ai-speech-transcription/ + exclude: + - sdk/transcription/pom.xml + - sdk/transcription/azure-ai-speech-transcription/pom.xml + +parameters: + - name: release_azureaispeechtranscription + displayName: "azure-ai-speech-transcription" + type: boolean + default: true + +extends: + template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml + parameters: + ServiceDirectory: transcription + Artifacts: + - name: azure-ai-speech-transcription + groupId: com.azure + safeName: azureaispeechtranscription + releaseInBatch: ${{ parameters.release_azureaispeechtranscription }} diff --git a/sdk/transcription/pom.xml b/sdk/transcription/pom.xml new file mode 100644 index 000000000000..5736ddc377da --- /dev/null +++ b/sdk/transcription/pom.xml @@ -0,0 +1,14 @@ + + + 4.0.0 + com.azure + azure-transcription-service + pom + 1.0.0 + + azure-ai-speech-transcription + + From ff8dead9309d5c71452b4269b10f2bc9ed25d83d Mon Sep 17 00:00:00 2001 From: Xiaofei Cao <92354331+XiaofeiCao@users.noreply.github.com> Date: Mon, 22 Dec 2025 13:09:49 +0800 Subject: [PATCH 03/41] mgmt, prepare release 2.58.0 (#47590) * prepare release * changelog.md --- eng/versioning/version_client.txt | 2 +- sdk/resourcemanager/README.md | 4 ++-- sdk/resourcemanager/azure-resourcemanager-perf/pom.xml | 2 +- .../azure-resourcemanager-samples/README.md | 2 +- sdk/resourcemanager/azure-resourcemanager-samples/pom.xml | 2 +- sdk/resourcemanager/azure-resourcemanager-test/README.md | 2 +- sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md | 8 +++++++- sdk/resourcemanager/azure-resourcemanager/README.md | 2 +- sdk/resourcemanager/azure-resourcemanager/pom.xml | 2 +- 9 files changed, 16 insertions(+), 10 deletions(-) diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index 37c62f75daba..6e8e71b80fd1 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -271,7 +271,7 @@ com.azure.spring:spring-cloud-azure-stream-binder-servicebus-core;6.1.0;6.2.0-be com.azure.spring:spring-cloud-azure-stream-binder-servicebus;6.1.0;6.2.0-beta.1 com.azure.spring:spring-cloud-azure-testcontainers;6.1.0;6.2.0-beta.1 com.azure:azure-spring-data-cosmos;6.1.0;6.2.0-beta.1 -com.azure.resourcemanager:azure-resourcemanager;2.57.0;2.58.0-beta.1 +com.azure.resourcemanager:azure-resourcemanager;2.57.0;2.58.0 com.azure.resourcemanager:azure-resourcemanager-appplatform;2.51.0;2.52.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-appservice;2.54.1;2.55.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-authorization;2.53.6;2.54.0-beta.1 diff --git a/sdk/resourcemanager/README.md b/sdk/resourcemanager/README.md index 153586d66271..81074c382148 100644 --- a/sdk/resourcemanager/README.md +++ b/sdk/resourcemanager/README.md @@ -68,7 +68,7 @@ For your convenience, we have provided a multi-service package that includes som com.azure.resourcemanager azure-resourcemanager - 2.56.0 + 2.58.0 ``` [//]: # ({x-version-update-end}) @@ -330,7 +330,7 @@ For example, here is sample maven dependency for Compute package. com.azure.resourcemanager azure-resourcemanager-compute - 2.55.0 + 2.55.1 ``` [//]: # ({x-version-update-end}) diff --git a/sdk/resourcemanager/azure-resourcemanager-perf/pom.xml b/sdk/resourcemanager/azure-resourcemanager-perf/pom.xml index 550b785fe022..5cc21a519f80 100644 --- a/sdk/resourcemanager/azure-resourcemanager-perf/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-perf/pom.xml @@ -25,7 +25,7 @@ com.azure.resourcemanager azure-resourcemanager - 2.58.0-beta.1 + 2.58.0 com.azure.resourcemanager diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/README.md b/sdk/resourcemanager/azure-resourcemanager-samples/README.md index 5a97bd8de940..3e1b4296136d 100644 --- a/sdk/resourcemanager/azure-resourcemanager-samples/README.md +++ b/sdk/resourcemanager/azure-resourcemanager-samples/README.md @@ -17,7 +17,7 @@ For documentation on how to use this package, please see [Azure Management Libra com.azure.resourcemanager azure-resourcemanager - 2.53.1 + 2.58.0 ``` [//]: # ({x-version-update-end}) diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml b/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml index 5d303163e374..639161111a62 100644 --- a/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml @@ -54,7 +54,7 @@ com.azure.resourcemanager azure-resourcemanager - 2.58.0-beta.1 + 2.58.0 com.azure.resourcemanager diff --git a/sdk/resourcemanager/azure-resourcemanager-test/README.md b/sdk/resourcemanager/azure-resourcemanager-test/README.md index 5a86fcf28e25..2cbacb3e0264 100644 --- a/sdk/resourcemanager/azure-resourcemanager-test/README.md +++ b/sdk/resourcemanager/azure-resourcemanager-test/README.md @@ -17,7 +17,7 @@ For documentation on how to use this package, please see [Azure Management Libra com.azure.resourcemanager azure-resourcemanager-test - 2.0.0-beta.1 + 2.0.0-beta.3 ``` [//]: # ({x-version-update-end}) diff --git a/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md b/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md index 7f96bdbf5635..210a10c20536 100644 --- a/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md +++ b/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md @@ -1,6 +1,6 @@ # Release History -## 2.58.0-beta.1 (Unreleased) +## 2.58.0 (2025-12-22) ### azure-resourcemanager-containerservice @@ -8,6 +8,12 @@ - Updated `api-version` to `2025-10-01`. +### Other Changes + +#### Dependency Updates + +- Updated core dependency from resources. + ## 2.57.0 (2025-11-25) ### azure-resourcemanager-containerregistry diff --git a/sdk/resourcemanager/azure-resourcemanager/README.md b/sdk/resourcemanager/azure-resourcemanager/README.md index ee877ed2878c..e2fc3b20e159 100644 --- a/sdk/resourcemanager/azure-resourcemanager/README.md +++ b/sdk/resourcemanager/azure-resourcemanager/README.md @@ -18,7 +18,7 @@ For documentation on how to use this package, please see [Azure Management Libra com.azure.resourcemanager azure-resourcemanager - 2.57.0 + 2.58.0 ``` [//]: # ({x-version-update-end}) diff --git a/sdk/resourcemanager/azure-resourcemanager/pom.xml b/sdk/resourcemanager/azure-resourcemanager/pom.xml index 8f207f38ac62..b5f52243bb54 100644 --- a/sdk/resourcemanager/azure-resourcemanager/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager/pom.xml @@ -15,7 +15,7 @@ com.azure.resourcemanager azure-resourcemanager - 2.58.0-beta.1 + 2.58.0 jar Microsoft Azure SDK for Management From 491f85f6730b115eb8f93eaaa03ffc910e325c70 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Sun, 21 Dec 2025 23:14:21 -0800 Subject: [PATCH 04/41] [Automation] Generate Fluent Lite from Swagger specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/readme.md#package-2025-07-01 (#47589) * [Automation] External Change * [Automation] Generate Fluent Lite from Swagger specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/readme.md#package-2025-07-01 * use 2.0.0 --------- Co-authored-by: Xiaofei Cao (from Dev Box) --- eng/automation/api-specs.yaml | 2 + eng/versioning/version_client.txt | 2 +- .../CHANGELOG.md | 202 +- .../README.md | 10 +- .../SAMPLE.md | 632 ++++-- .../pom.xml | 5 +- .../loganalytics/LogAnalyticsManager.java | 207 +- .../OperationalInsightsManagementClient.java | 92 +- .../fluent/SummaryLogsOperationsClient.java | 354 ++++ .../loganalytics/fluent/WorkspacesClient.java | 256 +++ .../fluent/models/ClusterInner.java | 29 +- .../fluent/models/ClusterProperties.java | 48 +- .../models/LogAnalyticsQueryPackInner.java | 22 +- .../LogAnalyticsQueryPackQueryInner.java | 27 +- .../LogAnalyticsQueryPackQueryProperties.java | 4 +- ...rkSecurityPerimeterConfigurationInner.java | 169 ++ .../fluent/models/SummaryLogsInner.java | 279 +++ .../fluent/models/SummaryLogsProperties.java | 236 +++ .../fluent/models/TableInner.java | 27 +- .../fluent/models/TableProperties.java | 26 +- .../fluent/models/WorkspaceInner.java | 64 +- .../fluent/models/WorkspaceProperties.java | 80 +- .../AvailableServiceTiersClientImpl.java | 76 +- .../implementation/ClusterImpl.java | 17 +- .../implementation/ClustersClientImpl.java | 747 ++++--- .../implementation/DataExportsClientImpl.java | 369 ++-- .../implementation/DataSourcesClientImpl.java | 461 +++-- .../DeletedWorkspacesClientImpl.java | 193 +- .../implementation/GatewaysClientImpl.java | 81 +- .../IntelligencePacksClientImpl.java | 231 +-- .../LinkedServicesClientImpl.java | 467 +++-- .../LinkedStorageAccountsClientImpl.java | 368 ++-- .../LogAnalyticsQueryPackImpl.java | 7 +- .../ManagementGroupsClientImpl.java | 117 +- ...orkSecurityPerimeterConfigurationImpl.java | 50 + .../OperationStatusesClientImpl.java | 78 +- ...erationalInsightsManagementClientImpl.java | 227 ++- .../implementation/OperationsClientImpl.java | 130 +- .../implementation/QueriesClientImpl.java | 783 ++++--- .../implementation/QueryPacksClientImpl.java | 722 ++++--- .../SavedSearchesClientImpl.java | 328 ++- .../implementation/SchemasClientImpl.java | 77 +- .../SharedKeysOperationsClientImpl.java | 146 +- .../StorageInsightConfigsClientImpl.java | 432 ++-- .../implementation/SummaryLogsImpl.java | 199 ++ .../SummaryLogsOperationsClientImpl.java | 1698 ++++++++++++++++ .../SummaryLogsOperationsImpl.java | 185 ++ .../implementation/TableImpl.java | 4 +- .../implementation/TablesClientImpl.java | 744 ++++--- .../implementation/UsagesClientImpl.java | 115 +- .../implementation/WorkspaceImpl.java | 41 +- .../WorkspacePurgesClientImpl.java | 178 +- .../implementation/WorkspacesClientImpl.java | 1804 ++++++++++++++--- .../implementation/WorkspacesImpl.java | 68 + .../loganalytics/models/AccessRule.java | 124 ++ .../models/AccessRuleDirection.java | 51 + .../models/AccessRuleProperties.java | 281 +++ ...AccessRulePropertiesSubscriptionsItem.java | 98 + .../models/AssociatedWorkspace.java | 17 +- .../models/AzureResourceProperties.java | 174 -- .../loganalytics/models/Capacity.java | 99 - .../models/CapacityReservationLevel.java | 84 - .../models/CapacityReservationProperties.java | 9 +- .../loganalytics/models/Cluster.java | 28 +- .../models/ClusterReplicationProperties.java | 208 ++ .../models/ClusterReplicationState.java | 86 + .../loganalytics/models/ClusterSku.java | 10 +- .../loganalytics/models/CreatedByType.java | 61 - .../loganalytics/models/IdentityType.java | 77 +- .../loganalytics/models/IssueType.java | 61 + .../models/LogAnalyticsQueryPack.java | 8 + .../models/LogAnalyticsQueryPackQuery.java | 8 +- .../models/NetworkSecurityPerimeter.java | 152 ++ ...NetworkSecurityPerimeterConfiguration.java | 56 + ...urityPerimeterConfigurationListResult.java | 131 ++ ...urityPerimeterConfigurationProperties.java | 205 ++ ...rimeterConfigurationProvisioningState.java | 77 + .../models/NetworkSecurityProfile.java | 213 ++ .../models/ProvisioningIssue.java | 105 + .../models/ProvisioningIssueProperties.java | 156 ++ .../models/PublicNetworkAccessType.java | 5 + .../models/QueryPacksResource.java | 143 -- .../models/ResourceAssociation.java | 122 ++ .../models/ResourceAssociationAccessMode.java | 56 + .../loganalytics/models/RuleDefinition.java | 226 +++ .../loganalytics/models/RuleTypeEnum.java | 46 + .../loganalytics/models/Severity.java | 51 + .../loganalytics/models/StatusCodeEnum.java | 51 + .../loganalytics/models/SummaryLogs.java | 372 ++++ .../models/SummaryLogsListResult.java | 115 ++ .../models/SummaryLogsOperations.java | 227 +++ .../models/SummaryLogsRetryBin.java | 96 + .../models/SummaryLogsRetryBinProperties.java | 110 + .../models/SystemDataAutoGenerated.java | 242 --- .../loganalytics/models/Table.java | 40 +- .../loganalytics/models/TablePlanEnum.java | 5 + .../loganalytics/models/TimeSelectorEnum.java | 46 + .../loganalytics/models/Workspace.java | 79 +- .../models/WorkspaceFailoverProperties.java | 101 + .../models/WorkspaceFailoverState.java | 66 + .../models/WorkspaceFeatures.java | 38 + .../loganalytics/models/WorkspacePatch.java | 51 +- .../models/WorkspacePurgeBodyFilters.java | 4 +- .../WorkspaceReplicationProperties.java | 178 ++ .../models/WorkspaceReplicationState.java | 86 + .../loganalytics/models/WorkspaceSku.java | 21 +- .../loganalytics/models/Workspaces.java | 143 ++ .../proxy-config.json | 2 +- ...re-resourcemanager-loganalytics.properties | 1 + ...bleServiceTiersListByWorkspaceSamples.java | 4 +- .../ClustersCreateOrUpdateSamples.java | 10 +- .../generated/ClustersDeleteSamples.java | 4 +- .../ClustersGetByResourceGroupSamples.java | 4 +- .../ClustersListByResourceGroupSamples.java | 4 +- .../generated/ClustersListSamples.java | 4 +- .../generated/ClustersUpdateSamples.java | 8 +- .../DataExportsCreateOrUpdateSamples.java | 4 +- .../generated/DataExportsDeleteSamples.java | 4 +- .../generated/DataExportsGetSamples.java | 4 +- .../DataExportsListByWorkspaceSamples.java | 4 +- .../DataSourcesCreateOrUpdateSamples.java | 4 +- .../generated/DataSourcesDeleteSamples.java | 4 +- .../generated/DataSourcesGetSamples.java | 4 +- .../DataSourcesListByWorkspaceSamples.java | 4 +- ...dWorkspacesListByResourceGroupSamples.java | 4 +- .../DeletedWorkspacesListSamples.java | 4 +- .../generated/GatewaysDeleteSamples.java | 4 +- .../IntelligencePacksDisableSamples.java | 4 +- .../IntelligencePacksEnableSamples.java | 4 +- .../IntelligencePacksListSamples.java | 4 +- .../LinkedServicesCreateOrUpdateSamples.java | 4 +- .../LinkedServicesDeleteSamples.java | 4 +- .../generated/LinkedServicesGetSamples.java | 4 +- .../LinkedServicesListByWorkspaceSamples.java | 4 +- ...dStorageAccountsCreateOrUpdateSamples.java | 4 +- .../LinkedStorageAccountsDeleteSamples.java | 4 +- .../LinkedStorageAccountsGetSamples.java | 4 +- ...StorageAccountsListByWorkspaceSamples.java | 4 +- .../ManagementGroupsListSamples.java | 4 +- .../OperationStatusesGetSamples.java | 4 +- .../generated/OperationsListSamples.java | 4 +- .../generated/QueriesDeleteSamples.java | 4 +- .../generated/QueriesGetSamples.java | 4 +- .../generated/QueriesListSamples.java | 4 +- .../generated/QueriesPutSamples.java | 4 +- .../generated/QueriesSearchSamples.java | 4 +- .../generated/QueriesUpdateSamples.java | 4 +- .../QueryPacksCreateOrUpdateSamples.java | 8 +- ...PacksCreateOrUpdateWithoutNameSamples.java | 8 +- .../generated/QueryPacksDeleteSamples.java | 4 +- .../QueryPacksGetByResourceGroupSamples.java | 4 +- .../QueryPacksListByResourceGroupSamples.java | 4 +- .../generated/QueryPacksListSamples.java | 4 +- .../QueryPacksUpdateTagsSamples.java | 4 +- .../SavedSearchesCreateOrUpdateSamples.java | 4 +- .../generated/SavedSearchesDeleteSamples.java | 4 +- .../generated/SavedSearchesGetSamples.java | 4 +- .../SavedSearchesListByWorkspaceSamples.java | 4 +- .../generated/SchemaGetSamples.java | 4 +- ...aredKeysOperationGetSharedKeysSamples.java | 4 +- .../SharedKeysOperationRegenerateSamples.java | 4 +- ...geInsightConfigsCreateOrUpdateSamples.java | 4 +- .../StorageInsightConfigsDeleteSamples.java | 4 +- .../StorageInsightConfigsGetSamples.java | 4 +- ...eInsightConfigsListByWorkspaceSamples.java | 4 +- ...aryLogsOperationCreateOrUpdateSamples.java | 36 + .../SummaryLogsOperationDeleteSamples.java | 25 + .../SummaryLogsOperationGetSamples.java | 25 + ...ryLogsOperationListByWorkspaceSamples.java | 25 + .../SummaryLogsOperationRetryBinSamples.java | 32 + .../SummaryLogsOperationStartSamples.java | 25 + .../SummaryLogsOperationStopSamples.java | 25 + .../generated/TablesCancelSearchSamples.java | 4 +- .../TablesCreateOrUpdateSamples.java | 4 +- .../generated/TablesDeleteSamples.java | 4 +- .../generated/TablesGetSamples.java | 4 +- .../TablesListByWorkspaceSamples.java | 4 +- .../generated/TablesMigrateSamples.java | 4 +- .../generated/TablesUpdateSamples.java | 4 +- .../generated/UsagesListSamples.java | 4 +- .../WorkspacePurgeGetPurgeStatusSamples.java | 4 +- .../generated/WorkspacePurgePurgeSamples.java | 8 +- .../WorkspacesCreateOrUpdateSamples.java | 4 +- .../generated/WorkspacesDeleteSamples.java | 4 +- .../generated/WorkspacesFailbackSamples.java | 24 + .../generated/WorkspacesFailoverSamples.java | 24 + .../WorkspacesGetByResourceGroupSamples.java | 4 +- .../generated/WorkspacesGetNspSamples.java | 27 + .../WorkspacesListByResourceGroupSamples.java | 4 +- .../generated/WorkspacesListNspSamples.java | 25 + .../generated/WorkspacesListSamples.java | 4 +- .../WorkspacesReconcileNspSamples.java | 26 + .../generated/WorkspacesUpdateSamples.java | 4 +- ...sRulePropertiesSubscriptionsItemTests.java | 26 + .../generated/AccessRulePropertiesTests.java | 67 + .../generated/AccessRuleTests.java | 71 + .../generated/AssociatedWorkspaceTests.java | 2 +- .../AvailableServiceTierInnerTests.java | 2 +- ...sListByWorkspaceWithResponseMockTests.java | 8 +- .../generated/AzureEntityResourceTests.java | 6 +- .../AzureResourcePropertiesTests.java | 23 - .../CapacityReservationPropertiesTests.java | 2 +- .../ClusterReplicationPropertiesTests.java | 32 + .../generated/ClusterSkuTests.java | 13 +- .../generated/ClustersDeleteMockTests.java | 6 +- .../loganalytics/generated/ColumnTests.java | 32 +- .../generated/CoreSummaryTests.java | 13 +- .../generated/DataExportInnerTests.java | 44 +- .../generated/DataExportListResultTests.java | 68 +- .../generated/DataExportPropertiesTests.java | 44 +- ...tsCreateOrUpdateWithResponseMockTests.java | 36 +- ...ataExportsDeleteWithResponseMockTests.java | 6 +- .../DataExportsGetWithResponseMockTests.java | 25 +- .../DataExportsListByWorkspaceMockTests.java | 22 +- .../generated/DataSourceInnerTests.java | 22 +- .../generated/DataSourceListResultTests.java | 54 +- ...esCreateOrUpdateWithResponseMockTests.java | 24 +- ...ataSourcesDeleteWithResponseMockTests.java | 7 +- .../DataSourcesGetWithResponseMockTests.java | 14 +- .../DataSourcesListByWorkspaceMockTests.java | 14 +- ...orkspacesListByResourceGroupMockTests.java | 45 +- .../DeletedWorkspacesListMockTests.java | 45 +- .../generated/DestinationMetadataTests.java | 8 +- .../generated/DestinationTests.java | 13 +- .../GatewaysDeleteWithResponseMockTests.java | 6 +- .../loganalytics/generated/IdentityTests.java | 11 +- .../generated/IntelligencePackInnerTests.java | 16 +- ...encePacksDisableWithResponseMockTests.java | 6 +- ...gencePacksEnableWithResponseMockTests.java | 6 +- ...ligencePacksListWithResponseMockTests.java | 15 +- .../generated/LinkedServiceInnerTests.java | 28 +- .../LinkedServiceListResultTests.java | 36 +- .../LinkedServicePropertiesTests.java | 14 +- ...LinkedServicesCreateOrUpdateMockTests.java | 24 +- .../LinkedServicesDeleteMockTests.java | 16 +- ...inkedServicesGetWithResponseMockTests.java | 14 +- ...inkedServicesListByWorkspaceMockTests.java | 14 +- ...tsCreateOrUpdateWithResponseMockTests.java | 12 +- ...geAccountsDeleteWithResponseMockTests.java | 6 +- ...orageAccountsGetWithResponseMockTests.java | 11 +- ...orageAccountsListByWorkspaceMockTests.java | 10 +- .../LinkedStorageAccountsListResultTests.java | 15 +- .../LinkedStorageAccountsPropertiesTests.java | 14 +- ...nkedStorageAccountsResourceInnerTests.java | 8 +- .../LogAnalyticsQueryPackInnerTests.java | 14 +- .../LogAnalyticsQueryPackListResultTests.java | 27 +- .../LogAnalyticsQueryPackPropertiesTests.java | 2 +- .../LogAnalyticsQueryPackQueryInnerTests.java | 48 +- ...nalyticsQueryPackQueryListResultTests.java | 85 +- ...sQueryPackQueryPropertiesRelatedTests.java | 22 +- ...nalyticsQueryPackQueryPropertiesTests.java | 50 +- ...PackQuerySearchPropertiesRelatedTests.java | 20 +- ...csQueryPackQuerySearchPropertiesTests.java | 30 +- .../ManagedServiceIdentityTests.java | 6 +- .../generated/ManagementGroupInnerTests.java | 48 +- .../ManagementGroupPropertiesTests.java | 50 +- .../ManagementGroupsListMockTests.java | 24 +- .../generated/MetricNameTests.java | 12 +- ...urityPerimeterConfigurationInnerTests.java | 126 ++ ...PerimeterConfigurationListResultTests.java | 103 + ...PerimeterConfigurationPropertiesTests.java | 108 + .../NetworkSecurityPerimeterTests.java | 34 + .../NetworkSecurityProfileTests.java | 109 + .../generated/OperationDisplayTests.java | 26 +- .../generated/OperationInnerTests.java | 32 +- .../generated/OperationListResultTests.java | 44 +- .../generated/OperationsListMockTests.java | 16 +- .../PrivateLinkScopedResourceTests.java | 16 +- .../ProvisioningIssuePropertiesTests.java | 23 + .../generated/ProvisioningIssueTests.java | 23 + .../QueriesDeleteWithResponseMockTests.java | 7 +- .../QueriesGetWithResponseMockTests.java | 22 +- .../generated/QueriesListMockTests.java | 23 +- .../QueriesPutWithResponseMockTests.java | 41 +- .../generated/QueriesSearchMockTests.java | 39 +- ...ksCreateOrUpdateWithResponseMockTests.java | 18 +- ...pdateWithoutNameWithResponseMockTests.java | 15 +- ...eByResourceGroupWithResponseMockTests.java | 7 +- ...tByResourceGroupWithResponseMockTests.java | 12 +- ...ueryPacksListByResourceGroupMockTests.java | 12 +- .../generated/QueryPacksListMockTests.java | 10 +- .../generated/QueryPacksResourceTests.java | 44 - .../generated/ResourceAssociationTests.java | 29 + .../generated/RestoredLogsTests.java | 20 +- .../generated/ResultStatisticsTests.java | 2 +- .../generated/RuleDefinitionTests.java | 40 + .../generated/SavedSearchInnerTests.java | 54 +- .../generated/SavedSearchPropertiesTests.java | 51 +- ...esCreateOrUpdateWithResponseMockTests.java | 48 +- ...edSearchesDeleteWithResponseMockTests.java | 6 +- ...SavedSearchesGetWithResponseMockTests.java | 29 +- ...sListByWorkspaceWithResponseMockTests.java | 26 +- .../SavedSearchesListResultInnerTests.java | 94 +- .../loganalytics/generated/SchemaTests.java | 56 +- .../SchemasGetWithResponseMockTests.java | 62 +- .../SearchGetSchemaResponseInnerTests.java | 206 +- .../generated/SearchMetadataSchemaTests.java | 12 +- .../generated/SearchMetadataTests.java | 123 +- .../generated/SearchResultsTests.java | 32 +- .../generated/SearchSchemaValueTests.java | 40 +- .../generated/SearchSortTests.java | 8 +- ...ghtConfigsDeleteWithResponseMockTests.java | 6 +- .../generated/StorageInsightStatusTests.java | 11 +- ...gsOperationsStopWithResponseMockTests.java | 34 + .../SummaryLogsRetryBinPropertiesTests.java | 27 + .../generated/SummaryLogsRetryBinTests.java | 29 + .../SystemDataAutoGeneratedTests.java | 43 - .../generated/TableInnerTests.java | 122 +- .../generated/TablePropertiesTests.java | 128 +- ...blesCancelSearchWithResponseMockTests.java | 7 +- .../TablesCreateOrUpdateMockTests.java | 104 +- .../generated/TablesDeleteMockTests.java | 6 +- .../TablesGetWithResponseMockTests.java | 44 +- .../TablesListByWorkspaceMockTests.java | 42 +- .../generated/TablesListResultTests.java | 133 +- .../TablesMigrateWithResponseMockTests.java | 6 +- .../loganalytics/generated/TagTests.java | 13 +- .../generated/TagsResourceTests.java | 13 +- .../generated/UsageMetricInnerTests.java | 44 +- .../generated/UsagesListMockTests.java | 22 +- .../generated/UserAssignedIdentityTests.java | 2 +- .../UserIdentityPropertiesTests.java | 5 +- .../generated/WorkspaceCappingTests.java | 8 +- .../WorkspaceFailoverPropertiesTests.java | 23 + .../generated/WorkspaceFeaturesTests.java | 36 +- .../generated/WorkspaceInnerTests.java | 109 +- ...kspaceListManagementGroupsResultTests.java | 78 +- .../generated/WorkspaceListResultTests.java | 182 +- .../WorkspaceListUsagesResultTests.java | 72 +- .../generated/WorkspacePatchTests.java | 109 +- .../generated/WorkspacePropertiesTests.java | 98 +- .../WorkspacePurgeResponseInnerTests.java | 8 +- ...esGetPurgeStatusWithResponseMockTests.java | 6 +- .../WorkspaceReplicationPropertiesTests.java | 29 + .../generated/WorkspaceSkuTests.java | 17 +- .../WorkspacesCreateOrUpdateMockTests.java | 92 +- .../generated/WorkspacesDeleteMockTests.java | 6 +- ...tByResourceGroupWithResponseMockTests.java | 44 +- ...WorkspacesGetNspWithResponseMockTests.java | 52 + ...orkspacesListByResourceGroupMockTests.java | 43 +- .../generated/WorkspacesListMockTests.java | 43 +- .../generated/WorkspacesListNspMockTests.java | 56 + 342 files changed, 18098 insertions(+), 7063 deletions(-) create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/SummaryLogsOperationsClient.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/NetworkSecurityPerimeterConfigurationInner.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/SummaryLogsInner.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/SummaryLogsProperties.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/NetworkSecurityPerimeterConfigurationImpl.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SummaryLogsImpl.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SummaryLogsOperationsClientImpl.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SummaryLogsOperationsImpl.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRule.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRuleDirection.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRuleProperties.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRulePropertiesSubscriptionsItem.java delete mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AzureResourceProperties.java delete mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Capacity.java delete mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/CapacityReservationLevel.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ClusterReplicationProperties.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ClusterReplicationState.java delete mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/CreatedByType.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/IssueType.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeter.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfiguration.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfigurationListResult.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfigurationProperties.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfigurationProvisioningState.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityProfile.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ProvisioningIssue.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ProvisioningIssueProperties.java delete mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/QueryPacksResource.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ResourceAssociation.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ResourceAssociationAccessMode.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/RuleDefinition.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/RuleTypeEnum.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Severity.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/StatusCodeEnum.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogs.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsListResult.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsOperations.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsRetryBin.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsRetryBinProperties.java delete mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SystemDataAutoGenerated.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/TimeSelectorEnum.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceFailoverProperties.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceFailoverState.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceReplicationProperties.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceReplicationState.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/resources/azure-resourcemanager-loganalytics.properties create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationCreateOrUpdateSamples.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationDeleteSamples.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationGetSamples.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationListByWorkspaceSamples.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationRetryBinSamples.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationStartSamples.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationStopSamples.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesFailbackSamples.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesFailoverSamples.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetNspSamples.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListNspSamples.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesReconcileNspSamples.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRulePropertiesSubscriptionsItemTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRulePropertiesTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRuleTests.java delete mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AzureResourcePropertiesTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ClusterReplicationPropertiesTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationInnerTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationListResultTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationPropertiesTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityProfileTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ProvisioningIssuePropertiesTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ProvisioningIssueTests.java delete mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksResourceTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ResourceAssociationTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/RuleDefinitionTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationsStopWithResponseMockTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsRetryBinPropertiesTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsRetryBinTests.java delete mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SystemDataAutoGeneratedTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceFailoverPropertiesTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceReplicationPropertiesTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetNspWithResponseMockTests.java create mode 100644 sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListNspMockTests.java diff --git a/eng/automation/api-specs.yaml b/eng/automation/api-specs.yaml index 1099611e15fa..5b00ec3e97e2 100644 --- a/eng/automation/api-specs.yaml +++ b/eng/automation/api-specs.yaml @@ -110,6 +110,8 @@ offazurespringboot: service: springappdiscovery operationalinsights: service: loganalytics +operationalinsights/Microsoft.OperationalInsights/OperationalInsights: + service: loganalytics oracle: service: oracledatabase paloaltonetworks: diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index 6e8e71b80fd1..3b398611a471 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -307,7 +307,7 @@ com.azure.resourcemanager:azure-resourcemanager-relay;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-costmanagement;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-recoveryservices;1.5.0;1.6.0 com.azure.resourcemanager:azure-resourcemanager-kusto;1.2.0;1.3.0-beta.1 -com.azure.resourcemanager:azure-resourcemanager-loganalytics;1.1.0;1.2.0-beta.1 +com.azure.resourcemanager:azure-resourcemanager-loganalytics;1.1.0;2.0.0 com.azure.resourcemanager:azure-resourcemanager-eventgrid;1.2.0;1.3.0-beta.2 com.azure.resourcemanager:azure-resourcemanager-healthbot;1.1.0;1.2.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-confluent;1.2.0;1.3.0-beta.1 diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md b/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md index 2dd0a420e7db..a2d2c16e79bf 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md @@ -1,14 +1,208 @@ # Release History -## 1.2.0-beta.1 (Unreleased) +## 2.0.0 (2025-12-22) -### Features Added +- Azure Resource Manager LogAnalytics client library for Java. This package contains Microsoft Azure SDK for LogAnalytics Management SDK. Operational Insights Client. Package tag package-2025-07-01. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). ### Breaking Changes -### Bugs Fixed +#### `models.AzureResourceProperties` was removed + +#### `models.SystemDataAutoGenerated` was removed + +#### `models.CreatedByType` was removed + +#### `models.QueryPacksResource` was removed + +#### `models.Capacity` was removed + +#### `models.CapacityReservationLevel` was removed + +#### `models.CapacityReservationProperties` was modified + +* `java.lang.String lastSkuUpdate()` -> `java.time.OffsetDateTime lastSkuUpdate()` + +#### `models.WorkspacePatch` was modified + +* `java.lang.String createdDate()` -> `java.time.OffsetDateTime createdDate()` +* `java.lang.String modifiedDate()` -> `java.time.OffsetDateTime modifiedDate()` + +#### `models.Workspace` was modified + +* `java.lang.String modifiedDate()` -> `java.time.OffsetDateTime modifiedDate()` +* `models.SystemDataAutoGenerated systemData()` -> `com.azure.core.management.SystemData systemData()` +* `java.lang.String createdDate()` -> `java.time.OffsetDateTime createdDate()` + +#### `models.WorkspaceSku` was modified + +* `java.lang.String lastSkuUpdate()` -> `java.time.OffsetDateTime lastSkuUpdate()` +* `models.CapacityReservationLevel capacityReservationLevel()` -> `java.lang.Integer capacityReservationLevel()` +* `withCapacityReservationLevel(models.CapacityReservationLevel)` was removed + +#### `models.AssociatedWorkspace` was modified + +* `java.lang.String associateDate()` -> `java.time.OffsetDateTime associateDate()` +* `java.lang.String workspaceId()` -> `java.util.UUID workspaceId()` + +#### `models.Table` was modified + +* `models.SystemDataAutoGenerated systemData()` -> `com.azure.core.management.SystemData systemData()` + +#### `models.Cluster` was modified + +* `java.lang.String lastModifiedDate()` -> `java.time.OffsetDateTime lastModifiedDate()` +* `java.lang.String createdDate()` -> `java.time.OffsetDateTime createdDate()` + +#### `models.IdentityType` was modified + +* `IdentityType()` was removed +* `java.util.Collection values()` -> `models.IdentityType[] values()` + +#### `models.ClusterSku` was modified + +* `models.Capacity capacity()` -> `java.lang.Long capacity()` +* `withCapacity(models.Capacity)` was removed + +### Features Added + +* `models.SummaryLogs$DefinitionStages` was added + +* `models.WorkspaceReplicationProperties` was added + +* `models.AccessRulePropertiesSubscriptionsItem` was added + +* `models.WorkspaceFailoverProperties` was added + +* `models.SummaryLogs$Definition` was added + +* `models.SummaryLogsListResult` was added + +* `models.ProvisioningIssue` was added + +* `models.AccessRuleProperties` was added + +* `models.ClusterReplicationProperties` was added + +* `models.ClusterReplicationState` was added + +* `models.SummaryLogsOperations` was added + +* `models.NetworkSecurityPerimeterConfigurationListResult` was added + +* `models.AccessRule` was added + +* `models.RuleDefinition` was added + +* `models.NetworkSecurityPerimeter` was added + +* `models.ResourceAssociation` was added + +* `models.NetworkSecurityProfile` was added + +* `models.NetworkSecurityPerimeterConfigurationProperties` was added + +* `models.SummaryLogs$UpdateStages` was added + +* `models.IssueType` was added + +* `models.AccessRuleDirection` was added + +* `models.SummaryLogsRetryBin` was added + +* `models.ResourceAssociationAccessMode` was added + +* `models.Severity` was added + +* `models.StatusCodeEnum` was added + +* `models.NetworkSecurityPerimeterConfigurationProvisioningState` was added + +* `models.SummaryLogs$Update` was added + +* `models.ProvisioningIssueProperties` was added + +* `models.NetworkSecurityPerimeterConfiguration` was added + +* `models.WorkspaceReplicationState` was added + +* `models.RuleTypeEnum` was added + +* `models.SummaryLogsRetryBinProperties` was added + +* `models.SummaryLogs` was added + +* `models.TimeSelectorEnum` was added + +* `models.WorkspaceFailoverState` was added + +#### `models.Cluster$Definition` was modified + +* `withReplication(models.ClusterReplicationProperties)` was added + +#### `LogAnalyticsManager` was modified + +* `summaryLogsOperations()` was added + +#### `models.WorkspaceFeatures` was modified + +* `unifiedSentinelBillingOnly()` was added +* `associations()` was added + +#### `models.Workspace$Update` was modified + +* `withFailover(models.WorkspaceFailoverProperties)` was added +* `withReplication(models.WorkspaceReplicationProperties)` was added + +#### `models.Workspace$Definition` was modified + +* `withFailover(models.WorkspaceFailoverProperties)` was added +* `withReplication(models.WorkspaceReplicationProperties)` was added + +#### `models.WorkspacePatch` was modified + +* `failover()` was added +* `withReplication(models.WorkspaceReplicationProperties)` was added +* `replication()` was added +* `withFailover(models.WorkspaceFailoverProperties)` was added + +#### `models.Workspace` was modified + +* `replication()` was added +* `failover()` was added + +#### `models.LogAnalyticsQueryPack` was modified + +* `systemData()` was added + +#### `models.WorkspaceSku` was modified + +* `withCapacityReservationLevel(java.lang.Integer)` was added + +#### `models.Workspaces` was modified + +* `listNsp(java.lang.String,java.lang.String,com.azure.core.util.Context)` was added +* `getNsp(java.lang.String,java.lang.String,java.lang.String)` was added +* `failover(java.lang.String,java.lang.String,java.lang.String)` was added +* `failback(java.lang.String,java.lang.String,com.azure.core.util.Context)` was added +* `failover(java.lang.String,java.lang.String,java.lang.String,com.azure.core.util.Context)` was added +* `reconcileNsp(java.lang.String,java.lang.String,java.lang.String,com.azure.core.util.Context)` was added +* `failback(java.lang.String,java.lang.String)` was added +* `getNspWithResponse(java.lang.String,java.lang.String,java.lang.String,com.azure.core.util.Context)` was added +* `reconcileNsp(java.lang.String,java.lang.String,java.lang.String)` was added +* `listNsp(java.lang.String,java.lang.String)` was added + +#### `models.Cluster` was modified + +* `replication()` was added + +#### `models.IdentityType` was modified + +* `valueOf(java.lang.String)` was added +* `toString()` was added + +#### `models.ClusterSku` was modified -### Other Changes +* `withCapacity(java.lang.Long)` was added ## 1.1.0 (2024-12-13) diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/README.md b/sdk/loganalytics/azure-resourcemanager-loganalytics/README.md index 0badc4533918..2d6a5400ad82 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/README.md +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/README.md @@ -2,7 +2,7 @@ Azure Resource Manager LogAnalytics client library for Java. -This package contains Microsoft Azure SDK for LogAnalytics Management SDK. Operational Insights Client. Package tag package-2022-10. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). +This package contains Microsoft Azure SDK for LogAnalytics Management SDK. Operational Insights Client. Package tag package-2025-07-01. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). ## We'd love to hear your feedback @@ -32,7 +32,7 @@ Various documentation is available to help you get started com.azure.resourcemanager azure-resourcemanager-loganalytics - 1.2.0-beta.1 + 2.0.0 ``` [//]: # ({x-version-update-end}) @@ -52,7 +52,7 @@ Azure subscription ID can be configured via `AZURE_SUBSCRIPTION_ID` environment Assuming the use of the `DefaultAzureCredential` credential class, the client can be authenticated using the following code: ```java -AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE); +AzureProfile profile = new AzureProfile(AzureCloud.AZURE_PUBLIC_CLOUD); TokenCredential credential = new DefaultAzureCredentialBuilder() .authorityHost(profile.getEnvironment().getActiveDirectoryEndpoint()) .build(); @@ -60,7 +60,7 @@ LogAnalyticsManager manager = LogAnalyticsManager .authenticate(credential, profile); ``` -The sample code assumes global Azure. Please change `AzureEnvironment.AZURE` variable if otherwise. +The sample code assumes global Azure. Please change the `AzureCloud.AZURE_PUBLIC_CLOUD` variable if otherwise. See [Authentication][authenticate] for more options. @@ -107,5 +107,3 @@ This project has adopted the [Microsoft Open Source Code of Conduct][coc]. For m [cg]: https://github.com/Azure/azure-sdk-for-java/blob/main/CONTRIBUTING.md [coc]: https://opensource.microsoft.com/codeofconduct/ [coc_faq]: https://opensource.microsoft.com/codeofconduct/faq/ - - diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/SAMPLE.md b/sdk/loganalytics/azure-resourcemanager-loganalytics/SAMPLE.md index 672f15ccedf6..b42d29de4b1f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/SAMPLE.md +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/SAMPLE.md @@ -111,6 +111,16 @@ - [Get](#storageinsightconfigs_get) - [ListByWorkspace](#storageinsightconfigs_listbyworkspace) +## SummaryLogsOperation + +- [CreateOrUpdate](#summarylogsoperation_createorupdate) +- [Delete](#summarylogsoperation_delete) +- [Get](#summarylogsoperation_get) +- [ListByWorkspace](#summarylogsoperation_listbyworkspace) +- [RetryBin](#summarylogsoperation_retrybin) +- [Start](#summarylogsoperation_start) +- [Stop](#summarylogsoperation_stop) + ## Tables - [CancelSearch](#tables_cancelsearch) @@ -134,9 +144,14 @@ - [CreateOrUpdate](#workspaces_createorupdate) - [Delete](#workspaces_delete) +- [Failback](#workspaces_failback) +- [Failover](#workspaces_failover) - [GetByResourceGroup](#workspaces_getbyresourcegroup) +- [GetNsp](#workspaces_getnsp) - [List](#workspaces_list) - [ListByResourceGroup](#workspaces_listbyresourcegroup) +- [ListNsp](#workspaces_listnsp) +- [ReconcileNsp](#workspaces_reconcilensp) - [Update](#workspaces_update) ### AvailableServiceTiers_ListByWorkspace @@ -147,8 +162,8 @@ public final class AvailableServiceTiersListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesAvailableServiceTiers.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesAvailableServiceTiers.json */ /** * Sample code: AvailableServiceTiers. @@ -165,7 +180,6 @@ public final class AvailableServiceTiersListByWorkspaceSamples { ### Clusters_CreateOrUpdate ```java -import com.azure.resourcemanager.loganalytics.models.Capacity; import com.azure.resourcemanager.loganalytics.models.ClusterSku; import com.azure.resourcemanager.loganalytics.models.ClusterSkuNameEnum; import java.util.HashMap; @@ -177,8 +191,8 @@ import java.util.Map; public final class ClustersCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * ClustersCreate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/ClustersCreate.json */ /** * Sample code: ClustersCreate. @@ -188,11 +202,10 @@ public final class ClustersCreateOrUpdateSamples { public static void clustersCreate(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { manager.clusters() .define("oiautorest6685") - .withRegion("australiasoutheast") + .withRegion("eastus") .withExistingResourceGroup("oiautorest6685") .withTags(mapOf("tag1", "val1")) - .withSku(new ClusterSku().withCapacity(Capacity.ONE_ZERO_ZERO_ZERO) - .withName(ClusterSkuNameEnum.CAPACITY_RESERVATION)) + .withSku(new ClusterSku().withCapacity(100L).withName(ClusterSkuNameEnum.CAPACITY_RESERVATION)) .create(); } @@ -219,8 +232,8 @@ public final class ClustersCreateOrUpdateSamples { public final class ClustersDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * ClustersDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/ClustersDelete.json */ /** * Sample code: ClustersDelete. @@ -242,8 +255,8 @@ public final class ClustersDeleteSamples { public final class ClustersGetByResourceGroupSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * ClustersGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/ClustersGet.json */ /** * Sample code: ClustersGet. @@ -266,8 +279,8 @@ public final class ClustersGetByResourceGroupSamples { public final class ClustersListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * ClustersSubscriptionList.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/ClustersSubscriptionList.json */ /** * Sample code: ClustersSubscriptionList. @@ -289,8 +302,8 @@ public final class ClustersListSamples { public final class ClustersListByResourceGroupSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * ClustersListByResourceGroup.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/ClustersListByResourceGroup.json */ /** * Sample code: ClustersGet. @@ -306,7 +319,6 @@ public final class ClustersListByResourceGroupSamples { ### Clusters_Update ```java -import com.azure.resourcemanager.loganalytics.models.Capacity; import com.azure.resourcemanager.loganalytics.models.Cluster; import com.azure.resourcemanager.loganalytics.models.ClusterSku; import com.azure.resourcemanager.loganalytics.models.ClusterSkuNameEnum; @@ -323,8 +335,8 @@ import java.util.Map; public final class ClustersUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * ClustersUpdate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/ClustersUpdate.json */ /** * Sample code: ClustersPatch. @@ -341,8 +353,7 @@ public final class ClustersUpdateSamples { .withUserAssignedIdentities(mapOf( "/subscriptions/53bc36c5-91e1-4d09-92c9-63b89e571926/resourcegroups/oiautorest6685/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myidentity", new UserAssignedIdentity()))) - .withSku(new ClusterSku().withCapacity(Capacity.ONE_ZERO_ZERO_ZERO) - .withName(ClusterSkuNameEnum.CAPACITY_RESERVATION)) + .withSku(new ClusterSku().withCapacity(1000L).withName(ClusterSkuNameEnum.CAPACITY_RESERVATION)) .withKeyVaultProperties(new KeyVaultProperties().withKeyVaultUri("fakeTokenPlaceholder") .withKeyName("fakeTokenPlaceholder") .withKeyVersion("fakeTokenPlaceholder") @@ -375,8 +386,8 @@ import java.util.Arrays; public final class DataExportsCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataExportCreateOrUpdate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataExportCreateOrUpdate.json */ /** * Sample code: DataExportCreate. @@ -404,8 +415,8 @@ public final class DataExportsCreateOrUpdateSamples { public final class DataExportsDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataExportDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataExportDelete.json */ /** * Sample code: DataExportDelete. @@ -428,8 +439,8 @@ public final class DataExportsDeleteSamples { public final class DataExportsGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataExportGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataExportGet.json */ /** * Sample code: DataExportGet. @@ -451,8 +462,8 @@ public final class DataExportsGetSamples { public final class DataExportsListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataExportListByWorkspace.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataExportListByWorkspace.json */ /** * Sample code: DataExportGet. @@ -479,8 +490,8 @@ import java.io.IOException; public final class DataSourcesCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataSourcesCreate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataSourcesCreate.json */ /** * Sample code: DataSourcesCreate. @@ -511,8 +522,8 @@ public final class DataSourcesCreateOrUpdateSamples { public final class DataSourcesDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataSourcesDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataSourcesDelete.json */ /** * Sample code: DataSourcesDelete. @@ -535,8 +546,8 @@ public final class DataSourcesDeleteSamples { public final class DataSourcesGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataSourcesGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataSourcesGet.json */ /** * Sample code: DataSourcesGet. @@ -559,8 +570,8 @@ public final class DataSourcesGetSamples { public final class DataSourcesListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataSourcesListByWorkspace.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataSourcesListByWorkspace.json */ /** * Sample code: DataSourcesListByWorkspace. @@ -584,8 +595,8 @@ public final class DataSourcesListByWorkspaceSamples { public final class DeletedWorkspacesListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesSubscriptionList.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesSubscriptionList.json */ /** * Sample code: WorkspacesSubscriptionList. @@ -607,8 +618,8 @@ public final class DeletedWorkspacesListSamples { public final class DeletedWorkspacesListByResourceGroupSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesListByResourceGroup.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesListByResourceGroup.json */ /** * Sample code: WorkspacesGet. @@ -630,8 +641,8 @@ public final class DeletedWorkspacesListByResourceGroupSamples { public final class GatewaysDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesGatewaysDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesGatewaysDelete.json */ /** * Sample code: DeleteGateways. @@ -655,8 +666,8 @@ public final class GatewaysDeleteSamples { public final class IntelligencePacksDisableSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesDisableIntelligencePack.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesDisableIntelligencePack.json */ /** * Sample code: IntelligencePacksDisable. @@ -679,8 +690,8 @@ public final class IntelligencePacksDisableSamples { public final class IntelligencePacksEnableSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesEnableIntelligencePack.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesEnableIntelligencePack.json */ /** * Sample code: IntelligencePacksEnable. @@ -703,8 +714,8 @@ public final class IntelligencePacksEnableSamples { public final class IntelligencePacksListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesListIntelligencePacks.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesListIntelligencePacks.json */ /** * Sample code: IntelligencePacksList. @@ -726,8 +737,8 @@ public final class IntelligencePacksListSamples { public final class LinkedServicesCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedServicesCreate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedServicesCreate.json */ /** * Sample code: LinkedServicesCreate. @@ -754,8 +765,8 @@ public final class LinkedServicesCreateOrUpdateSamples { public final class LinkedServicesDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedServicesDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedServicesDelete.json */ /** * Sample code: LinkedServicesDelete. @@ -777,8 +788,8 @@ public final class LinkedServicesDeleteSamples { public final class LinkedServicesGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedServicesGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedServicesGet.json */ /** * Sample code: LinkedServicesGet. @@ -800,8 +811,8 @@ public final class LinkedServicesGetSamples { public final class LinkedServicesListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedServicesListByWorkspace.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedServicesListByWorkspace.json */ /** * Sample code: LinkedServicesListByWorkspace. @@ -827,8 +838,8 @@ import java.util.Arrays; public final class LinkedStorageAccountsCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedStorageAccountsCreate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedStorageAccountsCreate.json */ /** * Sample code: LinkedStorageAccountsCreate. @@ -858,8 +869,8 @@ import com.azure.resourcemanager.loganalytics.models.DataSourceType; public final class LinkedStorageAccountsDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedStorageAccountsDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedStorageAccountsDelete.json */ /** * Sample code: LinkedStorageAccountsDelete. @@ -885,8 +896,8 @@ import com.azure.resourcemanager.loganalytics.models.DataSourceType; public final class LinkedStorageAccountsGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedStorageAccountsGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedStorageAccountsGet.json */ /** * Sample code: LinkedStorageAccountsGet. @@ -910,8 +921,8 @@ public final class LinkedStorageAccountsGetSamples { public final class LinkedStorageAccountsListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedStorageAccountsListByWorkspace.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedStorageAccountsListByWorkspace.json */ /** * Sample code: Gets list of linked storage accounts on a workspace. @@ -935,8 +946,8 @@ public final class LinkedStorageAccountsListByWorkspaceSamples { public final class ManagementGroupsListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesListManagementGroups.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesListManagementGroups.json */ /** * Sample code: WorkspacesListManagementGroups. @@ -959,8 +970,8 @@ public final class ManagementGroupsListSamples { public final class OperationStatusesGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * OperationStatusesGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/OperationStatusesGet.json */ /** * Sample code: Get specific operation status. @@ -983,8 +994,8 @@ public final class OperationStatusesGetSamples { public final class OperationsListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * OperationsListByTenant.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/OperationsListByTenant.json */ /** * Sample code: Get specific operation status. @@ -1006,8 +1017,8 @@ public final class OperationsListSamples { public final class QueriesDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPackQueriesDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPackQueriesDelete.json */ /** * Sample code: QueryDelete. @@ -1031,8 +1042,8 @@ public final class QueriesDeleteSamples { public final class QueriesGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPackQueriesGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPackQueriesGet.json */ /** * Sample code: QueryGet. @@ -1056,8 +1067,8 @@ public final class QueriesGetSamples { public final class QueriesListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPackQueriesList.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPackQueriesList.json */ /** * Sample code: QueryList. @@ -1084,8 +1095,8 @@ import java.util.Map; public final class QueriesPutSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPackQueriesPut.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPackQueriesPut.json */ /** * Sample code: QueryPut. @@ -1134,8 +1145,8 @@ import java.util.Map; public final class QueriesSearchSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPackQueriesSearch.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPackQueriesSearch.json */ /** * Sample code: QuerySearch. @@ -1181,8 +1192,8 @@ import java.util.Map; public final class QueriesUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPackQueriesUpdate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPackQueriesUpdate.json */ /** * Sample code: QueryPatch. @@ -1230,8 +1241,8 @@ import java.util.Map; public final class QueryPacksCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksCreate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksCreate.json */ /** * Sample code: QueryPackCreate. @@ -1248,8 +1259,8 @@ public final class QueryPacksCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksUpdate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksUpdate.json */ /** * Sample code: QueryPackUpdate. @@ -1292,8 +1303,8 @@ import java.util.Map; public final class QueryPacksCreateOrUpdateWithoutNameSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksCreateNoName.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksCreateNoName.json */ /** * Sample code: QueryPackCreateNoName. @@ -1308,8 +1319,8 @@ public final class QueryPacksCreateOrUpdateWithoutNameSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPackUpdateNoName.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPackUpdateNoName.json */ /** * Sample code: QueryPackUpdateNoName. @@ -1346,8 +1357,8 @@ public final class QueryPacksCreateOrUpdateWithoutNameSamples { public final class QueryPacksDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksDelete.json */ /** * Sample code: QueryPacksDelete. @@ -1370,8 +1381,8 @@ public final class QueryPacksDeleteSamples { public final class QueryPacksGetByResourceGroupSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksGet.json */ /** * Sample code: QueryPackGet. @@ -1394,8 +1405,8 @@ public final class QueryPacksGetByResourceGroupSamples { public final class QueryPacksListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksList.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksList.json */ /** * Sample code: QueryPacksList. @@ -1417,8 +1428,8 @@ public final class QueryPacksListSamples { public final class QueryPacksListByResourceGroupSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksListByResourceGroup.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksListByResourceGroup.json */ /** * Sample code: QueryPackListByResourceGroup. @@ -1445,8 +1456,8 @@ import java.util.Map; public final class QueryPacksUpdateTagsSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksUpdateTagsOnly.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksUpdateTagsOnly.json */ /** * Sample code: QueryPackUpdateTagsOnly. @@ -1486,8 +1497,8 @@ import java.util.Arrays; public final class SavedSearchesCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesSavedSearchesCreateOrUpdate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesSavedSearchesCreateOrUpdate.json */ /** * Sample code: SavedSearchCreateOrUpdate. @@ -1519,8 +1530,8 @@ public final class SavedSearchesCreateOrUpdateSamples { public final class SavedSearchesDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesDeleteSavedSearches.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesDeleteSavedSearches.json */ /** * Sample code: SavedSearchesDelete. @@ -1544,8 +1555,8 @@ public final class SavedSearchesDeleteSamples { public final class SavedSearchesGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesSavedSearchesGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesSavedSearchesGet.json */ /** * Sample code: SavedSearchesGet. @@ -1569,8 +1580,8 @@ public final class SavedSearchesGetSamples { public final class SavedSearchesListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * SavedSearchesListByWorkspace.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SavedSearchesListByWorkspace.json */ /** * Sample code: SavedSearchesList. @@ -1592,8 +1603,8 @@ public final class SavedSearchesListByWorkspaceSamples { public final class SchemaGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * SavedSearchesGetSchema.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SavedSearchesGetSchema.json */ /** * Sample code: WorkspacesGetSchema. @@ -1615,8 +1626,8 @@ public final class SchemaGetSamples { public final class SharedKeysOperationGetSharedKeysSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesGetSharedKeys.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesGetSharedKeys.json */ /** * Sample code: SharedKeysList. @@ -1638,8 +1649,8 @@ public final class SharedKeysOperationGetSharedKeysSamples { public final class SharedKeysOperationRegenerateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesRegenerateSharedKeys.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesRegenerateSharedKeys.json */ /** * Sample code: RegenerateSharedKeys. @@ -1664,8 +1675,8 @@ import java.util.Arrays; public final class StorageInsightConfigsCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * StorageInsightsCreateOrUpdate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/StorageInsightsCreateOrUpdate.json */ /** * Sample code: StorageInsightsCreate. @@ -1695,8 +1706,8 @@ public final class StorageInsightConfigsCreateOrUpdateSamples { public final class StorageInsightConfigsDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * StorageInsightsDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/StorageInsightsDelete.json */ /** * Sample code: StorageInsightsDelete. @@ -1719,8 +1730,8 @@ public final class StorageInsightConfigsDeleteSamples { public final class StorageInsightConfigsGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * StorageInsightsGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/StorageInsightsGet.json */ /** * Sample code: StorageInsightsGet. @@ -1743,8 +1754,8 @@ public final class StorageInsightConfigsGetSamples { public final class StorageInsightConfigsListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * StorageInsightsListByWorkspace.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/StorageInsightsListByWorkspace.json */ /** * Sample code: StorageInsightsList. @@ -1758,6 +1769,192 @@ public final class StorageInsightConfigsListByWorkspaceSamples { } ``` +### SummaryLogsOperation_CreateOrUpdate + +```java +import com.azure.resourcemanager.loganalytics.models.RuleDefinition; +import com.azure.resourcemanager.loganalytics.models.RuleTypeEnum; +import java.time.OffsetDateTime; + +/** + * Samples for SummaryLogsOperation CreateOrUpdate. + */ +public final class SummaryLogsOperationCreateOrUpdateSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SummaryLogsUpsert.json + */ + /** + * Sample code: SummaryLogsUpsert. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void summaryLogsUpsert(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.summaryLogsOperations() + .define("summarylogs1") + .withExistingWorkspace("oiautorest6685", "oiautorest6685") + .withRuleType(RuleTypeEnum.USER) + .withRuleDefinition(new RuleDefinition().withQuery("MyTable_CL") + .withBinSize(180) + .withBinDelay(10) + .withBinStartTime(OffsetDateTime.parse("2020-02-03T04:05:06Z"))) + .create(); + } +} +``` + +### SummaryLogsOperation_Delete + +```java +/** + * Samples for SummaryLogsOperation Delete. + */ +public final class SummaryLogsOperationDeleteSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SummaryLogsDelete.json + */ + /** + * Sample code: SummaryLogsDelete. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void summaryLogsDelete(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.summaryLogsOperations() + .delete("oiautorest6685", "oiautorest6685", "summarylogs1", com.azure.core.util.Context.NONE); + } +} +``` + +### SummaryLogsOperation_Get + +```java +/** + * Samples for SummaryLogsOperation Get. + */ +public final class SummaryLogsOperationGetSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SummaryLogsGet.json + */ + /** + * Sample code: SummaryLogsGet. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void summaryLogsGet(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.summaryLogsOperations() + .getWithResponse("oiautorest6685", "oiautorest6685", "summarylogs1", com.azure.core.util.Context.NONE); + } +} +``` + +### SummaryLogsOperation_ListByWorkspace + +```java +/** + * Samples for SummaryLogsOperation ListByWorkspace. + */ +public final class SummaryLogsOperationListByWorkspaceSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SummaryLogsList.json + */ + /** + * Sample code: SummaryLogsListByWorkspace. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void summaryLogsListByWorkspace(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.summaryLogsOperations() + .listByWorkspace("oiautorest6685", "oiautorest6685", com.azure.core.util.Context.NONE); + } +} +``` + +### SummaryLogsOperation_RetryBin + +```java +import com.azure.resourcemanager.loganalytics.models.SummaryLogsRetryBin; +import com.azure.resourcemanager.loganalytics.models.SummaryLogsRetryBinProperties; +import java.time.OffsetDateTime; + +/** + * Samples for SummaryLogsOperation RetryBin. + */ +public final class SummaryLogsOperationRetryBinSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SummaryLogsRetryBin.json + */ + /** + * Sample code: SummaryLogsRetryBin. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void summaryLogsRetryBin(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.summaryLogsOperations() + .retryBin("oiautorest6685", "oiautorest6685", "summarylogs1", + new SummaryLogsRetryBin().withProperties(new SummaryLogsRetryBinProperties() + .withRetryBinStartTime(OffsetDateTime.parse("2020-02-03T04:00:00Z"))), + com.azure.core.util.Context.NONE); + } +} +``` + +### SummaryLogsOperation_Start + +```java +/** + * Samples for SummaryLogsOperation Start. + */ +public final class SummaryLogsOperationStartSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SummaryLogsStart.json + */ + /** + * Sample code: SummaryLogsStart. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void summaryLogsStart(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.summaryLogsOperations() + .start("exampleresourcegroup", "exampleworkspace", "summarylogs3", com.azure.core.util.Context.NONE); + } +} +``` + +### SummaryLogsOperation_Stop + +```java +/** + * Samples for SummaryLogsOperation Stop. + */ +public final class SummaryLogsOperationStopSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SummaryLogsStop.json + */ + /** + * Sample code: SummaryLogsStop. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void summaryLogsStop(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.summaryLogsOperations() + .stopWithResponse("oiautorest6685", "oiautorest6685", "summarylogs1", com.azure.core.util.Context.NONE); + } +} +``` + ### Tables_CancelSearch ```java @@ -1767,8 +1964,8 @@ public final class StorageInsightConfigsListByWorkspaceSamples { public final class TablesCancelSearchSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * TablesSearchCancel.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/TablesSearchCancel.json */ /** * Sample code: TablesSearchCancel. @@ -1797,8 +1994,8 @@ import java.util.Arrays; public final class TablesCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * TablesUpsert.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/TablesUpsert.json */ /** * Sample code: TablesUpsert. @@ -1827,8 +2024,8 @@ public final class TablesCreateOrUpdateSamples { public final class TablesDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * TablesDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/TablesDelete.json */ /** * Sample code: TablesDelete. @@ -1850,8 +2047,8 @@ public final class TablesDeleteSamples { public final class TablesGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * TablesGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/TablesGet.json */ /** * Sample code: TablesGet. @@ -1874,8 +2071,8 @@ public final class TablesGetSamples { public final class TablesListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * TablesList.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/TablesList.json */ /** * Sample code: TablesListByWorkspace. @@ -1897,8 +2094,8 @@ public final class TablesListByWorkspaceSamples { public final class TablesMigrateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * TablesMigrate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/TablesMigrate.json */ /** * Sample code: TablesMigrate. @@ -1927,8 +2124,8 @@ import java.util.Arrays; public final class TablesUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * TablesUpsert.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/TablesUpsert.json */ /** * Sample code: TablesUpsert. @@ -1958,8 +2155,8 @@ public final class TablesUpdateSamples { public final class UsagesListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesListUsages.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesListUsages.json */ /** * Sample code: UsagesList. @@ -1981,8 +2178,8 @@ public final class UsagesListSamples { public final class WorkspacePurgeGetPurgeStatusSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesPurgeOperation.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesPurgeOperation.json */ /** * Sample code: WorkspacePurgeOperation. @@ -2010,8 +2207,8 @@ import java.util.Arrays; public final class WorkspacePurgePurgeSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesPurgeResourceId.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesPurgeResourceId.json */ /** * Sample code: WorkspacePurgeResourceId. @@ -2030,8 +2227,8 @@ public final class WorkspacePurgePurgeSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesPurge.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesPurge.json */ /** * Sample code: WorkspacePurge. @@ -2064,8 +2261,8 @@ import java.util.Map; public final class WorkspacesCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesCreate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesCreate.json */ /** * Sample code: WorkspacesCreate. @@ -2106,8 +2303,8 @@ public final class WorkspacesCreateOrUpdateSamples { public final class WorkspacesDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesDelete.json */ /** * Sample code: WorkspacesDelete. @@ -2120,6 +2317,52 @@ public final class WorkspacesDeleteSamples { } ``` +### Workspaces_Failback + +```java +/** + * Samples for Workspaces Failback. + */ +public final class WorkspacesFailbackSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesFailback.json + */ + /** + * Sample code: WorkspacesFailover. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void workspacesFailover(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.workspaces().failback("oiautorest6685", "oiautorest6685", com.azure.core.util.Context.NONE); + } +} +``` + +### Workspaces_Failover + +```java +/** + * Samples for Workspaces Failover. + */ +public final class WorkspacesFailoverSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesFailover.json + */ + /** + * Sample code: WorkspacesFailover. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void workspacesFailover(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.workspaces().failover("oiautorest6685", "eastus", "oiautorest6685", com.azure.core.util.Context.NONE); + } +} +``` + ### Workspaces_GetByResourceGroup ```java @@ -2129,8 +2372,8 @@ public final class WorkspacesDeleteSamples { public final class WorkspacesGetByResourceGroupSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesGet.json */ /** * Sample code: WorkspaceGet. @@ -2144,6 +2387,32 @@ public final class WorkspacesGetByResourceGroupSamples { } ``` +### Workspaces_GetNsp + +```java +/** + * Samples for Workspaces GetNsp. + */ +public final class WorkspacesGetNspSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/NSPForWorkspaces_Get.json + */ + /** + * Sample code: Get NSP config by name for Scheduled Query Rule. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void + getNSPConfigByNameForScheduledQueryRule(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.workspaces() + .getNspWithResponse("exampleRG", "someWorkspace", "somePerimeterConfiguration", + com.azure.core.util.Context.NONE); + } +} +``` + ### Workspaces_List ```java @@ -2153,8 +2422,8 @@ public final class WorkspacesGetByResourceGroupSamples { public final class WorkspacesListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesSubscriptionList.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesSubscriptionList.json */ /** * Sample code: WorkspacesSubscriptionList. @@ -2176,8 +2445,8 @@ public final class WorkspacesListSamples { public final class WorkspacesListByResourceGroupSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesListByResourceGroup.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesListByResourceGroup.json */ /** * Sample code: WorkspacesGet. @@ -2190,6 +2459,55 @@ public final class WorkspacesListByResourceGroupSamples { } ``` +### Workspaces_ListNsp + +```java +/** + * Samples for Workspaces ListNsp. + */ +public final class WorkspacesListNspSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/NSPForWorkspaces_List.json + */ + /** + * Sample code: List NSP configs by Scheduled Query Rule. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void + listNSPConfigsByScheduledQueryRule(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.workspaces().listNsp("exampleRG", "someWorkspace", com.azure.core.util.Context.NONE); + } +} +``` + +### Workspaces_ReconcileNsp + +```java +/** + * Samples for Workspaces ReconcileNsp. + */ +public final class WorkspacesReconcileNspSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/NSPForWorkspaces_Reconcile.json + */ + /** + * Sample code: Reconcile NSP config for Scheduled Query Rule. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void + reconcileNSPConfigForScheduledQueryRule(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.workspaces() + .reconcileNsp("exampleRG", "someWorkspace", "somePerimeterConfiguration", com.azure.core.util.Context.NONE); + } +} +``` + ### Workspaces_Update ```java @@ -2204,8 +2522,8 @@ import com.azure.resourcemanager.loganalytics.models.WorkspaceSkuNameEnum; public final class WorkspacesUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesUpdate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesUpdate.json */ /** * Sample code: WorkspacesPatch. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml b/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml index eb5b604f5d24..8e25000311ab 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml @@ -14,11 +14,11 @@ com.azure.resourcemanager azure-resourcemanager-loganalytics - 1.2.0-beta.1 + 2.0.0 jar Microsoft Azure SDK for LogAnalytics Management - This package contains Microsoft Azure SDK for LogAnalytics Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. Operational Insights Client. Package tag package-2022-10. + This package contains Microsoft Azure SDK for LogAnalytics Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. Operational Insights Client. Package tag package-2025-07-01. https://github.com/Azure/azure-sdk-for-java @@ -45,7 +45,6 @@ UTF-8 0 0 - false true diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/LogAnalyticsManager.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/LogAnalyticsManager.java index d6bdc947ef43..67e3a361ae94 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/LogAnalyticsManager.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/LogAnalyticsManager.java @@ -22,6 +22,7 @@ import com.azure.core.http.policy.UserAgentPolicy; import com.azure.core.management.profile.AzureProfile; import com.azure.core.util.Configuration; +import com.azure.core.util.CoreUtils; import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.OperationalInsightsManagementClient; import com.azure.resourcemanager.loganalytics.implementation.AvailableServiceTiersImpl; @@ -43,6 +44,7 @@ import com.azure.resourcemanager.loganalytics.implementation.SchemasImpl; import com.azure.resourcemanager.loganalytics.implementation.SharedKeysOperationsImpl; import com.azure.resourcemanager.loganalytics.implementation.StorageInsightConfigsImpl; +import com.azure.resourcemanager.loganalytics.implementation.SummaryLogsOperationsImpl; import com.azure.resourcemanager.loganalytics.implementation.TablesImpl; import com.azure.resourcemanager.loganalytics.implementation.UsagesImpl; import com.azure.resourcemanager.loganalytics.implementation.WorkspacePurgesImpl; @@ -65,6 +67,7 @@ import com.azure.resourcemanager.loganalytics.models.Schemas; import com.azure.resourcemanager.loganalytics.models.SharedKeysOperations; import com.azure.resourcemanager.loganalytics.models.StorageInsightConfigs; +import com.azure.resourcemanager.loganalytics.models.SummaryLogsOperations; import com.azure.resourcemanager.loganalytics.models.Tables; import com.azure.resourcemanager.loganalytics.models.Usages; import com.azure.resourcemanager.loganalytics.models.WorkspacePurges; @@ -73,6 +76,7 @@ import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; @@ -81,14 +85,16 @@ * Operational Insights Client. */ public final class LogAnalyticsManager { - private QueryPacks queryPacks; + private AvailableServiceTiers availableServiceTiers; - private Queries queries; + private Clusters clusters; private DataExports dataExports; private DataSources dataSources; + private Gateways gateways; + private IntelligencePacks intelligencePacks; private LinkedServices linkedServices; @@ -97,33 +103,33 @@ public final class LogAnalyticsManager { private ManagementGroups managementGroups; - private OperationStatuses operationStatuses; + private Operations operations; - private SharedKeysOperations sharedKeysOperations; + private OperationStatuses operationStatuses; - private Usages usages; + private Queries queries; - private StorageInsightConfigs storageInsightConfigs; + private QueryPacks queryPacks; private SavedSearches savedSearches; - private AvailableServiceTiers availableServiceTiers; + private Schemas schemas; - private Gateways gateways; + private SharedKeysOperations sharedKeysOperations; - private Schemas schemas; + private StorageInsightConfigs storageInsightConfigs; - private WorkspacePurges workspacePurges; + private Tables tables; - private Clusters clusters; + private Usages usages; - private Operations operations; + private WorkspacePurges workspacePurges; private Workspaces workspaces; private DeletedWorkspaces deletedWorkspaces; - private Tables tables; + private SummaryLogsOperations summaryLogsOperations; private final OperationalInsightsManagementClient clientObject; @@ -177,6 +183,9 @@ public static Configurable configure() { */ public static final class Configurable { private static final ClientLogger LOGGER = new ClientLogger(Configurable.class); + private static final String SDK_VERSION = "version"; + private static final Map PROPERTIES + = CoreUtils.getProperties("azure-resourcemanager-loganalytics.properties"); private HttpClient httpClient; private HttpLogOptions httpLogOptions; @@ -284,12 +293,14 @@ public LogAnalyticsManager authenticate(TokenCredential credential, AzureProfile Objects.requireNonNull(credential, "'credential' cannot be null."); Objects.requireNonNull(profile, "'profile' cannot be null."); + String clientVersion = PROPERTIES.getOrDefault(SDK_VERSION, "UnknownVersion"); + StringBuilder userAgentBuilder = new StringBuilder(); userAgentBuilder.append("azsdk-java") .append("-") .append("com.azure.resourcemanager.loganalytics") .append("/") - .append("1.1.0"); + .append(clientVersion); if (!Configuration.getGlobalConfiguration().get("AZURE_TELEMETRY_DISABLED", false)) { userAgentBuilder.append(" (") .append(Configuration.getGlobalConfiguration().get("java.version")) @@ -336,27 +347,27 @@ public LogAnalyticsManager authenticate(TokenCredential credential, AzureProfile } /** - * Gets the resource collection API of QueryPacks. It manages LogAnalyticsQueryPack. + * Gets the resource collection API of AvailableServiceTiers. * - * @return Resource collection API of QueryPacks. + * @return Resource collection API of AvailableServiceTiers. */ - public QueryPacks queryPacks() { - if (this.queryPacks == null) { - this.queryPacks = new QueryPacksImpl(clientObject.getQueryPacks(), this); + public AvailableServiceTiers availableServiceTiers() { + if (this.availableServiceTiers == null) { + this.availableServiceTiers = new AvailableServiceTiersImpl(clientObject.getAvailableServiceTiers(), this); } - return queryPacks; + return availableServiceTiers; } /** - * Gets the resource collection API of Queries. It manages LogAnalyticsQueryPackQuery. + * Gets the resource collection API of Clusters. It manages Cluster. * - * @return Resource collection API of Queries. + * @return Resource collection API of Clusters. */ - public Queries queries() { - if (this.queries == null) { - this.queries = new QueriesImpl(clientObject.getQueries(), this); + public Clusters clusters() { + if (this.clusters == null) { + this.clusters = new ClustersImpl(clientObject.getClusters(), this); } - return queries; + return clusters; } /** @@ -383,6 +394,18 @@ public DataSources dataSources() { return dataSources; } + /** + * Gets the resource collection API of Gateways. + * + * @return Resource collection API of Gateways. + */ + public Gateways gateways() { + if (this.gateways == null) { + this.gateways = new GatewaysImpl(clientObject.getGateways(), this); + } + return gateways; + } + /** * Gets the resource collection API of IntelligencePacks. * @@ -432,51 +455,51 @@ public ManagementGroups managementGroups() { } /** - * Gets the resource collection API of OperationStatuses. + * Gets the resource collection API of Operations. * - * @return Resource collection API of OperationStatuses. + * @return Resource collection API of Operations. */ - public OperationStatuses operationStatuses() { - if (this.operationStatuses == null) { - this.operationStatuses = new OperationStatusesImpl(clientObject.getOperationStatuses(), this); + public Operations operations() { + if (this.operations == null) { + this.operations = new OperationsImpl(clientObject.getOperations(), this); } - return operationStatuses; + return operations; } /** - * Gets the resource collection API of SharedKeysOperations. + * Gets the resource collection API of OperationStatuses. * - * @return Resource collection API of SharedKeysOperations. + * @return Resource collection API of OperationStatuses. */ - public SharedKeysOperations sharedKeysOperations() { - if (this.sharedKeysOperations == null) { - this.sharedKeysOperations = new SharedKeysOperationsImpl(clientObject.getSharedKeysOperations(), this); + public OperationStatuses operationStatuses() { + if (this.operationStatuses == null) { + this.operationStatuses = new OperationStatusesImpl(clientObject.getOperationStatuses(), this); } - return sharedKeysOperations; + return operationStatuses; } /** - * Gets the resource collection API of Usages. + * Gets the resource collection API of Queries. It manages LogAnalyticsQueryPackQuery. * - * @return Resource collection API of Usages. + * @return Resource collection API of Queries. */ - public Usages usages() { - if (this.usages == null) { - this.usages = new UsagesImpl(clientObject.getUsages(), this); + public Queries queries() { + if (this.queries == null) { + this.queries = new QueriesImpl(clientObject.getQueries(), this); } - return usages; + return queries; } /** - * Gets the resource collection API of StorageInsightConfigs. It manages StorageInsight. + * Gets the resource collection API of QueryPacks. It manages LogAnalyticsQueryPack. * - * @return Resource collection API of StorageInsightConfigs. + * @return Resource collection API of QueryPacks. */ - public StorageInsightConfigs storageInsightConfigs() { - if (this.storageInsightConfigs == null) { - this.storageInsightConfigs = new StorageInsightConfigsImpl(clientObject.getStorageInsightConfigs(), this); + public QueryPacks queryPacks() { + if (this.queryPacks == null) { + this.queryPacks = new QueryPacksImpl(clientObject.getQueryPacks(), this); } - return storageInsightConfigs; + return queryPacks; } /** @@ -492,75 +515,75 @@ public SavedSearches savedSearches() { } /** - * Gets the resource collection API of AvailableServiceTiers. + * Gets the resource collection API of Schemas. * - * @return Resource collection API of AvailableServiceTiers. + * @return Resource collection API of Schemas. */ - public AvailableServiceTiers availableServiceTiers() { - if (this.availableServiceTiers == null) { - this.availableServiceTiers = new AvailableServiceTiersImpl(clientObject.getAvailableServiceTiers(), this); + public Schemas schemas() { + if (this.schemas == null) { + this.schemas = new SchemasImpl(clientObject.getSchemas(), this); } - return availableServiceTiers; + return schemas; } /** - * Gets the resource collection API of Gateways. + * Gets the resource collection API of SharedKeysOperations. * - * @return Resource collection API of Gateways. + * @return Resource collection API of SharedKeysOperations. */ - public Gateways gateways() { - if (this.gateways == null) { - this.gateways = new GatewaysImpl(clientObject.getGateways(), this); + public SharedKeysOperations sharedKeysOperations() { + if (this.sharedKeysOperations == null) { + this.sharedKeysOperations = new SharedKeysOperationsImpl(clientObject.getSharedKeysOperations(), this); } - return gateways; + return sharedKeysOperations; } /** - * Gets the resource collection API of Schemas. + * Gets the resource collection API of StorageInsightConfigs. It manages StorageInsight. * - * @return Resource collection API of Schemas. + * @return Resource collection API of StorageInsightConfigs. */ - public Schemas schemas() { - if (this.schemas == null) { - this.schemas = new SchemasImpl(clientObject.getSchemas(), this); + public StorageInsightConfigs storageInsightConfigs() { + if (this.storageInsightConfigs == null) { + this.storageInsightConfigs = new StorageInsightConfigsImpl(clientObject.getStorageInsightConfigs(), this); } - return schemas; + return storageInsightConfigs; } /** - * Gets the resource collection API of WorkspacePurges. + * Gets the resource collection API of Tables. It manages Table. * - * @return Resource collection API of WorkspacePurges. + * @return Resource collection API of Tables. */ - public WorkspacePurges workspacePurges() { - if (this.workspacePurges == null) { - this.workspacePurges = new WorkspacePurgesImpl(clientObject.getWorkspacePurges(), this); + public Tables tables() { + if (this.tables == null) { + this.tables = new TablesImpl(clientObject.getTables(), this); } - return workspacePurges; + return tables; } /** - * Gets the resource collection API of Clusters. It manages Cluster. + * Gets the resource collection API of Usages. * - * @return Resource collection API of Clusters. + * @return Resource collection API of Usages. */ - public Clusters clusters() { - if (this.clusters == null) { - this.clusters = new ClustersImpl(clientObject.getClusters(), this); + public Usages usages() { + if (this.usages == null) { + this.usages = new UsagesImpl(clientObject.getUsages(), this); } - return clusters; + return usages; } /** - * Gets the resource collection API of Operations. + * Gets the resource collection API of WorkspacePurges. * - * @return Resource collection API of Operations. + * @return Resource collection API of WorkspacePurges. */ - public Operations operations() { - if (this.operations == null) { - this.operations = new OperationsImpl(clientObject.getOperations(), this); + public WorkspacePurges workspacePurges() { + if (this.workspacePurges == null) { + this.workspacePurges = new WorkspacePurgesImpl(clientObject.getWorkspacePurges(), this); } - return operations; + return workspacePurges; } /** @@ -588,15 +611,15 @@ public DeletedWorkspaces deletedWorkspaces() { } /** - * Gets the resource collection API of Tables. It manages Table. + * Gets the resource collection API of SummaryLogsOperations. It manages SummaryLogs. * - * @return Resource collection API of Tables. + * @return Resource collection API of SummaryLogsOperations. */ - public Tables tables() { - if (this.tables == null) { - this.tables = new TablesImpl(clientObject.getTables(), this); + public SummaryLogsOperations summaryLogsOperations() { + if (this.summaryLogsOperations == null) { + this.summaryLogsOperations = new SummaryLogsOperationsImpl(clientObject.getSummaryLogsOperations(), this); } - return tables; + return summaryLogsOperations; } /** diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/OperationalInsightsManagementClient.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/OperationalInsightsManagementClient.java index 76c429b02fe3..876719a127c7 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/OperationalInsightsManagementClient.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/OperationalInsightsManagementClient.java @@ -25,6 +25,13 @@ public interface OperationalInsightsManagementClient { */ String getEndpoint(); + /** + * Gets Api Version. + * + * @return the apiVersion value. + */ + String getApiVersion(); + /** * Gets The HTTP pipeline to send requests through. * @@ -40,18 +47,18 @@ public interface OperationalInsightsManagementClient { Duration getDefaultPollInterval(); /** - * Gets the QueryPacksClient object to access its operations. + * Gets the AvailableServiceTiersClient object to access its operations. * - * @return the QueryPacksClient object. + * @return the AvailableServiceTiersClient object. */ - QueryPacksClient getQueryPacks(); + AvailableServiceTiersClient getAvailableServiceTiers(); /** - * Gets the QueriesClient object to access its operations. + * Gets the ClustersClient object to access its operations. * - * @return the QueriesClient object. + * @return the ClustersClient object. */ - QueriesClient getQueries(); + ClustersClient getClusters(); /** * Gets the DataExportsClient object to access its operations. @@ -67,6 +74,13 @@ public interface OperationalInsightsManagementClient { */ DataSourcesClient getDataSources(); + /** + * Gets the GatewaysClient object to access its operations. + * + * @return the GatewaysClient object. + */ + GatewaysClient getGateways(); + /** * Gets the IntelligencePacksClient object to access its operations. * @@ -96,32 +110,32 @@ public interface OperationalInsightsManagementClient { ManagementGroupsClient getManagementGroups(); /** - * Gets the OperationStatusesClient object to access its operations. + * Gets the OperationsClient object to access its operations. * - * @return the OperationStatusesClient object. + * @return the OperationsClient object. */ - OperationStatusesClient getOperationStatuses(); + OperationsClient getOperations(); /** - * Gets the SharedKeysOperationsClient object to access its operations. + * Gets the OperationStatusesClient object to access its operations. * - * @return the SharedKeysOperationsClient object. + * @return the OperationStatusesClient object. */ - SharedKeysOperationsClient getSharedKeysOperations(); + OperationStatusesClient getOperationStatuses(); /** - * Gets the UsagesClient object to access its operations. + * Gets the QueriesClient object to access its operations. * - * @return the UsagesClient object. + * @return the QueriesClient object. */ - UsagesClient getUsages(); + QueriesClient getQueries(); /** - * Gets the StorageInsightConfigsClient object to access its operations. + * Gets the QueryPacksClient object to access its operations. * - * @return the StorageInsightConfigsClient object. + * @return the QueryPacksClient object. */ - StorageInsightConfigsClient getStorageInsightConfigs(); + QueryPacksClient getQueryPacks(); /** * Gets the SavedSearchesClient object to access its operations. @@ -131,46 +145,46 @@ public interface OperationalInsightsManagementClient { SavedSearchesClient getSavedSearches(); /** - * Gets the AvailableServiceTiersClient object to access its operations. + * Gets the SchemasClient object to access its operations. * - * @return the AvailableServiceTiersClient object. + * @return the SchemasClient object. */ - AvailableServiceTiersClient getAvailableServiceTiers(); + SchemasClient getSchemas(); /** - * Gets the GatewaysClient object to access its operations. + * Gets the SharedKeysOperationsClient object to access its operations. * - * @return the GatewaysClient object. + * @return the SharedKeysOperationsClient object. */ - GatewaysClient getGateways(); + SharedKeysOperationsClient getSharedKeysOperations(); /** - * Gets the SchemasClient object to access its operations. + * Gets the StorageInsightConfigsClient object to access its operations. * - * @return the SchemasClient object. + * @return the StorageInsightConfigsClient object. */ - SchemasClient getSchemas(); + StorageInsightConfigsClient getStorageInsightConfigs(); /** - * Gets the WorkspacePurgesClient object to access its operations. + * Gets the TablesClient object to access its operations. * - * @return the WorkspacePurgesClient object. + * @return the TablesClient object. */ - WorkspacePurgesClient getWorkspacePurges(); + TablesClient getTables(); /** - * Gets the ClustersClient object to access its operations. + * Gets the UsagesClient object to access its operations. * - * @return the ClustersClient object. + * @return the UsagesClient object. */ - ClustersClient getClusters(); + UsagesClient getUsages(); /** - * Gets the OperationsClient object to access its operations. + * Gets the WorkspacePurgesClient object to access its operations. * - * @return the OperationsClient object. + * @return the WorkspacePurgesClient object. */ - OperationsClient getOperations(); + WorkspacePurgesClient getWorkspacePurges(); /** * Gets the WorkspacesClient object to access its operations. @@ -187,9 +201,9 @@ public interface OperationalInsightsManagementClient { DeletedWorkspacesClient getDeletedWorkspaces(); /** - * Gets the TablesClient object to access its operations. + * Gets the SummaryLogsOperationsClient object to access its operations. * - * @return the TablesClient object. + * @return the SummaryLogsOperationsClient object. */ - TablesClient getTables(); + SummaryLogsOperationsClient getSummaryLogsOperations(); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/SummaryLogsOperationsClient.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/SummaryLogsOperationsClient.java new file mode 100644 index 000000000000..e00c3ef2b116 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/SummaryLogsOperationsClient.java @@ -0,0 +1,354 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.fluent; + +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.Response; +import com.azure.core.management.polling.PollResult; +import com.azure.core.util.Context; +import com.azure.core.util.polling.SyncPoller; +import com.azure.resourcemanager.loganalytics.fluent.models.SummaryLogsInner; +import com.azure.resourcemanager.loganalytics.models.SummaryLogsRetryBin; + +/** + * An instance of this class provides access to all the operations defined in SummaryLogsOperationsClient. + */ +public interface SummaryLogsOperationsClient { + /** + * Gets all summary rules for the specified Log Analytics workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return all summary rules for the specified Log Analytics workspace as paginated response with + * {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable listByWorkspace(String resourceGroupName, String workspaceName); + + /** + * Gets all summary rules for the specified Log Analytics workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return all summary rules for the specified Log Analytics workspace as paginated response with + * {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable listByWorkspace(String resourceGroupName, String workspaceName, Context context); + + /** + * Creates or updates Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to update summary rules properties. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of workspace data summary rules definition. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, SummaryLogsInner> beginCreateOrUpdate(String resourceGroupName, + String workspaceName, String summaryLogsName, SummaryLogsInner parameters); + + /** + * Creates or updates Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to update summary rules properties. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of workspace data summary rules definition. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, SummaryLogsInner> beginCreateOrUpdate(String resourceGroupName, + String workspaceName, String summaryLogsName, SummaryLogsInner parameters, Context context); + + /** + * Creates or updates Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to update summary rules properties. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return workspace data summary rules definition. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + SummaryLogsInner createOrUpdate(String resourceGroupName, String workspaceName, String summaryLogsName, + SummaryLogsInner parameters); + + /** + * Creates or updates Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to update summary rules properties. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return workspace data summary rules definition. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + SummaryLogsInner createOrUpdate(String resourceGroupName, String workspaceName, String summaryLogsName, + SummaryLogsInner parameters, Context context); + + /** + * Gets Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return log Analytics workspace Summary rules along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Response getWithResponse(String resourceGroupName, String workspaceName, String summaryLogsName, + Context context); + + /** + * Gets Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return log Analytics workspace Summary rules. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + SummaryLogsInner get(String resourceGroupName, String workspaceName, String summaryLogsName); + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, Void> beginDelete(String resourceGroupName, String workspaceName, + String summaryLogsName); + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, Void> beginDelete(String resourceGroupName, String workspaceName, + String summaryLogsName, Context context); + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + void delete(String resourceGroupName, String workspaceName, String summaryLogsName); + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + void delete(String resourceGroupName, String workspaceName, String summaryLogsName, Context context); + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, Void> beginStart(String resourceGroupName, String workspaceName, + String summaryLogsName); + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, Void> beginStart(String resourceGroupName, String workspaceName, + String summaryLogsName, Context context); + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + void start(String resourceGroupName, String workspaceName, String summaryLogsName); + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + void start(String resourceGroupName, String workspaceName, String summaryLogsName, Context context); + + /** + * Stops an active Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Response stopWithResponse(String resourceGroupName, String workspaceName, String summaryLogsName, + Context context); + + /** + * Stops an active Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + void stop(String resourceGroupName, String workspaceName, String summaryLogsName); + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, Void> beginRetryBin(String resourceGroupName, String workspaceName, + String summaryLogsName, SummaryLogsRetryBin parameters); + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, Void> beginRetryBin(String resourceGroupName, String workspaceName, + String summaryLogsName, SummaryLogsRetryBin parameters, Context context); + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + void retryBin(String resourceGroupName, String workspaceName, String summaryLogsName, + SummaryLogsRetryBin parameters); + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + void retryBin(String resourceGroupName, String workspaceName, String summaryLogsName, + SummaryLogsRetryBin parameters, Context context); +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/WorkspacesClient.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/WorkspacesClient.java index 9762af2104eb..03ec9dd954ce 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/WorkspacesClient.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/WorkspacesClient.java @@ -11,6 +11,7 @@ import com.azure.core.management.polling.PollResult; import com.azure.core.util.Context; import com.azure.core.util.polling.SyncPoller; +import com.azure.resourcemanager.loganalytics.fluent.models.NetworkSecurityPerimeterConfigurationInner; import com.azure.resourcemanager.loganalytics.fluent.models.WorkspaceInner; import com.azure.resourcemanager.loganalytics.models.WorkspacePatch; @@ -248,4 +249,259 @@ Response updateWithResponse(String resourceGroupName, String wor */ @ServiceMethod(returns = ReturnType.SINGLE) WorkspaceInner update(String resourceGroupName, String workspaceName, WorkspacePatch parameters); + + /** + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, Void> beginFailover(String resourceGroupName, String location, String workspaceName); + + /** + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, Void> beginFailover(String resourceGroupName, String location, String workspaceName, + Context context); + + /** + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + void failover(String resourceGroupName, String location, String workspaceName); + + /** + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + void failover(String resourceGroupName, String location, String workspaceName, Context context); + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, Void> beginFailback(String resourceGroupName, String workspaceName); + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, Void> beginFailback(String resourceGroupName, String workspaceName, Context context); + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + void failback(String resourceGroupName, String workspaceName); + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + void failback(String resourceGroupName, String workspaceName, Context context); + + /** + * Gets a list of NSP configurations for specified workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of NSP configurations for specified workspace as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable listNsp(String resourceGroupName, String workspaceName); + + /** + * Gets a list of NSP configurations for specified workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of NSP configurations for specified workspace as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable listNsp(String resourceGroupName, String workspaceName, + Context context); + + /** + * Gets a network security perimeter configuration. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a network security perimeter configuration along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Response getNspWithResponse(String resourceGroupName, + String workspaceName, String networkSecurityPerimeterConfigurationName, Context context); + + /** + * Gets a network security perimeter configuration. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a network security perimeter configuration. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + NetworkSecurityPerimeterConfigurationInner getNsp(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName); + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, Void> beginReconcileNsp(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName); + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, Void> beginReconcileNsp(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName, Context context); + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + void reconcileNsp(String resourceGroupName, String workspaceName, String networkSecurityPerimeterConfigurationName); + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + void reconcileNsp(String resourceGroupName, String workspaceName, String networkSecurityPerimeterConfigurationName, + Context context); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/ClusterInner.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/ClusterInner.java index dca539d1283f..695778d797e5 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/ClusterInner.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/ClusterInner.java @@ -13,10 +13,12 @@ import com.azure.resourcemanager.loganalytics.models.BillingType; import com.azure.resourcemanager.loganalytics.models.CapacityReservationProperties; import com.azure.resourcemanager.loganalytics.models.ClusterEntityStatus; +import com.azure.resourcemanager.loganalytics.models.ClusterReplicationProperties; import com.azure.resourcemanager.loganalytics.models.ClusterSku; import com.azure.resourcemanager.loganalytics.models.KeyVaultProperties; import com.azure.resourcemanager.loganalytics.models.ManagedServiceIdentity; import java.io.IOException; +import java.time.OffsetDateTime; import java.util.List; import java.util.Map; @@ -279,7 +281,7 @@ public ClusterInner withKeyVaultProperties(KeyVaultProperties keyVaultProperties * * @return the lastModifiedDate value. */ - public String lastModifiedDate() { + public OffsetDateTime lastModifiedDate() { return this.innerProperties() == null ? null : this.innerProperties().lastModifiedDate(); } @@ -288,7 +290,7 @@ public String lastModifiedDate() { * * @return the createdDate value. */ - public String createdDate() { + public OffsetDateTime createdDate() { return this.innerProperties() == null ? null : this.innerProperties().createdDate(); } @@ -338,6 +340,29 @@ public ClusterInner withCapacityReservationProperties(CapacityReservationPropert return this; } + /** + * Get the replication property: Cluster's replication properties. + * + * @return the replication value. + */ + public ClusterReplicationProperties replication() { + return this.innerProperties() == null ? null : this.innerProperties().replication(); + } + + /** + * Set the replication property: Cluster's replication properties. + * + * @param replication the replication value to set. + * @return the ClusterInner object itself. + */ + public ClusterInner withReplication(ClusterReplicationProperties replication) { + if (this.innerProperties() == null) { + this.innerProperties = new ClusterProperties(); + } + this.innerProperties().withReplication(replication); + return this; + } + /** * Validates the instance. * diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/ClusterProperties.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/ClusterProperties.java index 4e19d868af64..4e83811ad839 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/ClusterProperties.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/ClusterProperties.java @@ -5,6 +5,7 @@ package com.azure.resourcemanager.loganalytics.fluent.models; import com.azure.core.annotation.Fluent; +import com.azure.core.util.CoreUtils; import com.azure.json.JsonReader; import com.azure.json.JsonSerializable; import com.azure.json.JsonToken; @@ -13,8 +14,10 @@ import com.azure.resourcemanager.loganalytics.models.BillingType; import com.azure.resourcemanager.loganalytics.models.CapacityReservationProperties; import com.azure.resourcemanager.loganalytics.models.ClusterEntityStatus; +import com.azure.resourcemanager.loganalytics.models.ClusterReplicationProperties; import com.azure.resourcemanager.loganalytics.models.KeyVaultProperties; import java.io.IOException; +import java.time.OffsetDateTime; import java.util.List; /** @@ -58,12 +61,12 @@ public final class ClusterProperties implements JsonSerializable writer.writeJson(element)); jsonWriter.writeJsonField("capacityReservationProperties", this.capacityReservationProperties); + jsonWriter.writeJsonField("replication", this.replication); return jsonWriter.writeEndObject(); } @@ -308,9 +340,11 @@ public static ClusterProperties fromJson(JsonReader jsonReader) throws IOExcepti } else if ("keyVaultProperties".equals(fieldName)) { deserializedClusterProperties.keyVaultProperties = KeyVaultProperties.fromJson(reader); } else if ("lastModifiedDate".equals(fieldName)) { - deserializedClusterProperties.lastModifiedDate = reader.getString(); + deserializedClusterProperties.lastModifiedDate = reader + .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); } else if ("createdDate".equals(fieldName)) { - deserializedClusterProperties.createdDate = reader.getString(); + deserializedClusterProperties.createdDate = reader + .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); } else if ("associatedWorkspaces".equals(fieldName)) { List associatedWorkspaces = reader.readArray(reader1 -> AssociatedWorkspace.fromJson(reader1)); @@ -318,6 +352,8 @@ public static ClusterProperties fromJson(JsonReader jsonReader) throws IOExcepti } else if ("capacityReservationProperties".equals(fieldName)) { deserializedClusterProperties.capacityReservationProperties = CapacityReservationProperties.fromJson(reader); + } else if ("replication".equals(fieldName)) { + deserializedClusterProperties.replication = ClusterReplicationProperties.fromJson(reader); } else { reader.skipChildren(); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/LogAnalyticsQueryPackInner.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/LogAnalyticsQueryPackInner.java index e5fc73ff7755..855631fc4208 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/LogAnalyticsQueryPackInner.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/LogAnalyticsQueryPackInner.java @@ -5,11 +5,12 @@ package com.azure.resourcemanager.loganalytics.fluent.models; import com.azure.core.annotation.Fluent; +import com.azure.core.management.Resource; +import com.azure.core.management.SystemData; import com.azure.core.util.logging.ClientLogger; import com.azure.json.JsonReader; import com.azure.json.JsonToken; import com.azure.json.JsonWriter; -import com.azure.resourcemanager.loganalytics.models.QueryPacksResource; import java.io.IOException; import java.time.OffsetDateTime; import java.util.Map; @@ -18,12 +19,17 @@ * An Log Analytics QueryPack definition. */ @Fluent -public final class LogAnalyticsQueryPackInner extends QueryPacksResource { +public final class LogAnalyticsQueryPackInner extends Resource { /* * Properties that define a Log Analytics QueryPack resource. */ private LogAnalyticsQueryPackProperties innerProperties = new LogAnalyticsQueryPackProperties(); + /* + * Azure Resource Manager metadata containing createdBy and modifiedBy information. + */ + private SystemData systemData; + /* * The type of the resource. */ @@ -54,6 +60,15 @@ private LogAnalyticsQueryPackProperties innerProperties() { return this.innerProperties; } + /** + * Get the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information. + * + * @return the systemData value. + */ + public SystemData systemData() { + return this.systemData; + } + /** * Get the type property: The type of the resource. * @@ -145,7 +160,6 @@ public String provisioningState() { * * @throws IllegalArgumentException thrown if the instance is not valid. */ - @Override public void validate() { if (innerProperties() == null) { throw LOGGER.atError() @@ -200,6 +214,8 @@ public static LogAnalyticsQueryPackInner fromJson(JsonReader jsonReader) throws } else if ("properties".equals(fieldName)) { deserializedLogAnalyticsQueryPackInner.innerProperties = LogAnalyticsQueryPackProperties.fromJson(reader); + } else if ("systemData".equals(fieldName)) { + deserializedLogAnalyticsQueryPackInner.systemData = SystemData.fromJson(reader); } else { reader.skipChildren(); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/LogAnalyticsQueryPackQueryInner.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/LogAnalyticsQueryPackQueryInner.java index 2d3af3ceef01..baf421ce5d1b 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/LogAnalyticsQueryPackQueryInner.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/LogAnalyticsQueryPackQueryInner.java @@ -5,11 +5,11 @@ package com.azure.resourcemanager.loganalytics.fluent.models; import com.azure.core.annotation.Fluent; +import com.azure.core.management.ProxyResource; import com.azure.core.management.SystemData; import com.azure.json.JsonReader; import com.azure.json.JsonToken; import com.azure.json.JsonWriter; -import com.azure.resourcemanager.loganalytics.models.AzureResourceProperties; import com.azure.resourcemanager.loganalytics.models.LogAnalyticsQueryPackQueryPropertiesRelated; import java.io.IOException; import java.time.OffsetDateTime; @@ -20,29 +20,29 @@ * A Log Analytics QueryPack-Query definition. */ @Fluent -public final class LogAnalyticsQueryPackQueryInner extends AzureResourceProperties { +public final class LogAnalyticsQueryPackQueryInner extends ProxyResource { /* * Properties that define an Log Analytics QueryPack-Query resource. */ private LogAnalyticsQueryPackQueryProperties innerProperties; /* - * Read only system data + * Azure Resource Manager metadata containing createdBy and modifiedBy information. */ private SystemData systemData; /* - * Azure resource type + * The type of the resource. */ private String type; /* - * Azure resource name + * The name of the resource. */ private String name; /* - * Azure resource Id + * Fully qualified resource Id for the resource. */ private String id; @@ -62,17 +62,16 @@ private LogAnalyticsQueryPackQueryProperties innerProperties() { } /** - * Get the systemData property: Read only system data. + * Get the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information. * * @return the systemData value. */ - @Override public SystemData systemData() { return this.systemData; } /** - * Get the type property: Azure resource type. + * Get the type property: The type of the resource. * * @return the type value. */ @@ -82,7 +81,7 @@ public String type() { } /** - * Get the name property: Azure resource name. + * Get the name property: The name of the resource. * * @return the name value. */ @@ -92,7 +91,7 @@ public String name() { } /** - * Get the id property: Azure resource Id. + * Get the id property: Fully qualified resource Id for the resource. * * @return the id value. */ @@ -280,7 +279,6 @@ public LogAnalyticsQueryPackQueryInner withProperties(Object properties) { * * @throws IllegalArgumentException thrown if the instance is not valid. */ - @Override public void validate() { if (innerProperties() != null) { innerProperties().validate(); @@ -303,6 +301,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { * @param jsonReader The JsonReader being read. * @return An instance of LogAnalyticsQueryPackQueryInner if the JsonReader was pointing to an instance of it, or * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. * @throws IOException If an error occurs while reading the LogAnalyticsQueryPackQueryInner. */ public static LogAnalyticsQueryPackQueryInner fromJson(JsonReader jsonReader) throws IOException { @@ -319,11 +318,11 @@ public static LogAnalyticsQueryPackQueryInner fromJson(JsonReader jsonReader) th deserializedLogAnalyticsQueryPackQueryInner.name = reader.getString(); } else if ("type".equals(fieldName)) { deserializedLogAnalyticsQueryPackQueryInner.type = reader.getString(); - } else if ("systemData".equals(fieldName)) { - deserializedLogAnalyticsQueryPackQueryInner.systemData = SystemData.fromJson(reader); } else if ("properties".equals(fieldName)) { deserializedLogAnalyticsQueryPackQueryInner.innerProperties = LogAnalyticsQueryPackQueryProperties.fromJson(reader); + } else if ("systemData".equals(fieldName)) { + deserializedLogAnalyticsQueryPackQueryInner.systemData = SystemData.fromJson(reader); } else { reader.skipChildren(); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/LogAnalyticsQueryPackQueryProperties.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/LogAnalyticsQueryPackQueryProperties.java index ef7f75297643..81de1a33625d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/LogAnalyticsQueryPackQueryProperties.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/LogAnalyticsQueryPackQueryProperties.java @@ -270,7 +270,9 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeJsonField("related", this.related); jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeArray(element, (writer1, element1) -> writer1.writeString(element1))); - jsonWriter.writeUntypedField("properties", this.properties); + if (this.properties != null) { + jsonWriter.writeUntypedField("properties", this.properties); + } return jsonWriter.writeEndObject(); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/NetworkSecurityPerimeterConfigurationInner.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/NetworkSecurityPerimeterConfigurationInner.java new file mode 100644 index 000000000000..737dec497890 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/NetworkSecurityPerimeterConfigurationInner.java @@ -0,0 +1,169 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.fluent.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.management.ProxyResource; +import com.azure.core.management.SystemData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeterConfigurationProperties; +import java.io.IOException; + +/** + * Network security perimeter (NSP) configuration resource. + */ +@Fluent +public final class NetworkSecurityPerimeterConfigurationInner extends ProxyResource { + /* + * Network security configuration properties. + */ + private NetworkSecurityPerimeterConfigurationProperties properties; + + /* + * Azure Resource Manager metadata containing createdBy and modifiedBy information. + */ + private SystemData systemData; + + /* + * The type of the resource. + */ + private String type; + + /* + * The name of the resource. + */ + private String name; + + /* + * Fully qualified resource Id for the resource. + */ + private String id; + + /** + * Creates an instance of NetworkSecurityPerimeterConfigurationInner class. + */ + public NetworkSecurityPerimeterConfigurationInner() { + } + + /** + * Get the properties property: Network security configuration properties. + * + * @return the properties value. + */ + public NetworkSecurityPerimeterConfigurationProperties properties() { + return this.properties; + } + + /** + * Set the properties property: Network security configuration properties. + * + * @param properties the properties value to set. + * @return the NetworkSecurityPerimeterConfigurationInner object itself. + */ + public NetworkSecurityPerimeterConfigurationInner + withProperties(NetworkSecurityPerimeterConfigurationProperties properties) { + this.properties = properties; + return this; + } + + /** + * Get the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information. + * + * @return the systemData value. + */ + public SystemData systemData() { + return this.systemData; + } + + /** + * Get the type property: The type of the resource. + * + * @return the type value. + */ + @Override + public String type() { + return this.type; + } + + /** + * Get the name property: The name of the resource. + * + * @return the name value. + */ + @Override + public String name() { + return this.name; + } + + /** + * Get the id property: Fully qualified resource Id for the resource. + * + * @return the id value. + */ + @Override + public String id() { + return this.id; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (properties() != null) { + properties().validate(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("properties", this.properties); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of NetworkSecurityPerimeterConfigurationInner from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of NetworkSecurityPerimeterConfigurationInner if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the NetworkSecurityPerimeterConfigurationInner. + */ + public static NetworkSecurityPerimeterConfigurationInner fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + NetworkSecurityPerimeterConfigurationInner deserializedNetworkSecurityPerimeterConfigurationInner + = new NetworkSecurityPerimeterConfigurationInner(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("id".equals(fieldName)) { + deserializedNetworkSecurityPerimeterConfigurationInner.id = reader.getString(); + } else if ("name".equals(fieldName)) { + deserializedNetworkSecurityPerimeterConfigurationInner.name = reader.getString(); + } else if ("type".equals(fieldName)) { + deserializedNetworkSecurityPerimeterConfigurationInner.type = reader.getString(); + } else if ("properties".equals(fieldName)) { + deserializedNetworkSecurityPerimeterConfigurationInner.properties + = NetworkSecurityPerimeterConfigurationProperties.fromJson(reader); + } else if ("systemData".equals(fieldName)) { + deserializedNetworkSecurityPerimeterConfigurationInner.systemData = SystemData.fromJson(reader); + } else { + reader.skipChildren(); + } + } + + return deserializedNetworkSecurityPerimeterConfigurationInner; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/SummaryLogsInner.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/SummaryLogsInner.java new file mode 100644 index 000000000000..dac9c5b8294c --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/SummaryLogsInner.java @@ -0,0 +1,279 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.fluent.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.management.ProxyResource; +import com.azure.core.management.SystemData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import com.azure.resourcemanager.loganalytics.models.ProvisioningStateEnum; +import com.azure.resourcemanager.loganalytics.models.RuleDefinition; +import com.azure.resourcemanager.loganalytics.models.RuleTypeEnum; +import com.azure.resourcemanager.loganalytics.models.StatusCodeEnum; +import java.io.IOException; + +/** + * Workspace data summary rules definition. + */ +@Fluent +public final class SummaryLogsInner extends ProxyResource { + /* + * Summary rule properties. + */ + private SummaryLogsProperties innerProperties; + + /* + * Azure Resource Manager metadata containing createdBy and modifiedBy information. + */ + private SystemData systemData; + + /* + * The type of the resource. + */ + private String type; + + /* + * The name of the resource. + */ + private String name; + + /* + * Fully qualified resource Id for the resource. + */ + private String id; + + /** + * Creates an instance of SummaryLogsInner class. + */ + public SummaryLogsInner() { + } + + /** + * Get the innerProperties property: Summary rule properties. + * + * @return the innerProperties value. + */ + private SummaryLogsProperties innerProperties() { + return this.innerProperties; + } + + /** + * Get the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information. + * + * @return the systemData value. + */ + public SystemData systemData() { + return this.systemData; + } + + /** + * Get the type property: The type of the resource. + * + * @return the type value. + */ + @Override + public String type() { + return this.type; + } + + /** + * Get the name property: The name of the resource. + * + * @return the name value. + */ + @Override + public String name() { + return this.name; + } + + /** + * Get the id property: Fully qualified resource Id for the resource. + * + * @return the id value. + */ + @Override + public String id() { + return this.id; + } + + /** + * Get the ruleType property: SummaryRules rule type: User. + * + * @return the ruleType value. + */ + public RuleTypeEnum ruleType() { + return this.innerProperties() == null ? null : this.innerProperties().ruleType(); + } + + /** + * Set the ruleType property: SummaryRules rule type: User. + * + * @param ruleType the ruleType value to set. + * @return the SummaryLogsInner object itself. + */ + public SummaryLogsInner withRuleType(RuleTypeEnum ruleType) { + if (this.innerProperties() == null) { + this.innerProperties = new SummaryLogsProperties(); + } + this.innerProperties().withRuleType(ruleType); + return this; + } + + /** + * Get the displayName property: The display name of the Summary rule. + * + * @return the displayName value. + */ + public String displayName() { + return this.innerProperties() == null ? null : this.innerProperties().displayName(); + } + + /** + * Set the displayName property: The display name of the Summary rule. + * + * @param displayName the displayName value to set. + * @return the SummaryLogsInner object itself. + */ + public SummaryLogsInner withDisplayName(String displayName) { + if (this.innerProperties() == null) { + this.innerProperties = new SummaryLogsProperties(); + } + this.innerProperties().withDisplayName(displayName); + return this; + } + + /** + * Get the description property: The description of the Summary rule. + * + * @return the description value. + */ + public String description() { + return this.innerProperties() == null ? null : this.innerProperties().description(); + } + + /** + * Set the description property: The description of the Summary rule. + * + * @param description the description value to set. + * @return the SummaryLogsInner object itself. + */ + public SummaryLogsInner withDescription(String description) { + if (this.innerProperties() == null) { + this.innerProperties = new SummaryLogsProperties(); + } + this.innerProperties().withDescription(description); + return this; + } + + /** + * Get the isActive property: Indicates if Summary rule is active. If not, Summary rule execution stops. + * + * @return the isActive value. + */ + public Boolean isActive() { + return this.innerProperties() == null ? null : this.innerProperties().isActive(); + } + + /** + * Get the statusCode property: Indicates the reason for rule deactivation. + * + * @return the statusCode value. + */ + public StatusCodeEnum statusCode() { + return this.innerProperties() == null ? null : this.innerProperties().statusCode(); + } + + /** + * Get the provisioningState property: Summary rule is in provisioning state. If set to 'updating' or 'deleting', + * indicates a resource lock due to an ongoing operation, preventing any update to the Summary rule until the + * operation is complete. + * + * @return the provisioningState value. + */ + public ProvisioningStateEnum provisioningState() { + return this.innerProperties() == null ? null : this.innerProperties().provisioningState(); + } + + /** + * Get the ruleDefinition property: Rule definition parameters. + * + * @return the ruleDefinition value. + */ + public RuleDefinition ruleDefinition() { + return this.innerProperties() == null ? null : this.innerProperties().ruleDefinition(); + } + + /** + * Set the ruleDefinition property: Rule definition parameters. + * + * @param ruleDefinition the ruleDefinition value to set. + * @return the SummaryLogsInner object itself. + */ + public SummaryLogsInner withRuleDefinition(RuleDefinition ruleDefinition) { + if (this.innerProperties() == null) { + this.innerProperties = new SummaryLogsProperties(); + } + this.innerProperties().withRuleDefinition(ruleDefinition); + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (innerProperties() != null) { + innerProperties().validate(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("properties", this.innerProperties); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of SummaryLogsInner from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of SummaryLogsInner if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the SummaryLogsInner. + */ + public static SummaryLogsInner fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + SummaryLogsInner deserializedSummaryLogsInner = new SummaryLogsInner(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("id".equals(fieldName)) { + deserializedSummaryLogsInner.id = reader.getString(); + } else if ("name".equals(fieldName)) { + deserializedSummaryLogsInner.name = reader.getString(); + } else if ("type".equals(fieldName)) { + deserializedSummaryLogsInner.type = reader.getString(); + } else if ("properties".equals(fieldName)) { + deserializedSummaryLogsInner.innerProperties = SummaryLogsProperties.fromJson(reader); + } else if ("systemData".equals(fieldName)) { + deserializedSummaryLogsInner.systemData = SystemData.fromJson(reader); + } else { + reader.skipChildren(); + } + } + + return deserializedSummaryLogsInner; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/SummaryLogsProperties.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/SummaryLogsProperties.java new file mode 100644 index 000000000000..0f151e746cdb --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/SummaryLogsProperties.java @@ -0,0 +1,236 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.fluent.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import com.azure.resourcemanager.loganalytics.models.ProvisioningStateEnum; +import com.azure.resourcemanager.loganalytics.models.RuleDefinition; +import com.azure.resourcemanager.loganalytics.models.RuleTypeEnum; +import com.azure.resourcemanager.loganalytics.models.StatusCodeEnum; +import java.io.IOException; + +/** + * Summary rule properties. + */ +@Fluent +public final class SummaryLogsProperties implements JsonSerializable { + /* + * SummaryRules rule type: User. + */ + private RuleTypeEnum ruleType; + + /* + * The display name of the Summary rule. + */ + private String displayName; + + /* + * The description of the Summary rule. + */ + private String description; + + /* + * Indicates if Summary rule is active. If not, Summary rule execution stops. + */ + private Boolean isActive; + + /* + * Indicates the reason for rule deactivation. + */ + private StatusCodeEnum statusCode; + + /* + * Summary rule is in provisioning state. If set to 'updating' or 'deleting', indicates a resource lock due to an + * ongoing operation, preventing any update to the Summary rule until the operation is complete. + */ + private ProvisioningStateEnum provisioningState; + + /* + * Rule definition parameters. + */ + private RuleDefinition ruleDefinition; + + /** + * Creates an instance of SummaryLogsProperties class. + */ + public SummaryLogsProperties() { + } + + /** + * Get the ruleType property: SummaryRules rule type: User. + * + * @return the ruleType value. + */ + public RuleTypeEnum ruleType() { + return this.ruleType; + } + + /** + * Set the ruleType property: SummaryRules rule type: User. + * + * @param ruleType the ruleType value to set. + * @return the SummaryLogsProperties object itself. + */ + public SummaryLogsProperties withRuleType(RuleTypeEnum ruleType) { + this.ruleType = ruleType; + return this; + } + + /** + * Get the displayName property: The display name of the Summary rule. + * + * @return the displayName value. + */ + public String displayName() { + return this.displayName; + } + + /** + * Set the displayName property: The display name of the Summary rule. + * + * @param displayName the displayName value to set. + * @return the SummaryLogsProperties object itself. + */ + public SummaryLogsProperties withDisplayName(String displayName) { + this.displayName = displayName; + return this; + } + + /** + * Get the description property: The description of the Summary rule. + * + * @return the description value. + */ + public String description() { + return this.description; + } + + /** + * Set the description property: The description of the Summary rule. + * + * @param description the description value to set. + * @return the SummaryLogsProperties object itself. + */ + public SummaryLogsProperties withDescription(String description) { + this.description = description; + return this; + } + + /** + * Get the isActive property: Indicates if Summary rule is active. If not, Summary rule execution stops. + * + * @return the isActive value. + */ + public Boolean isActive() { + return this.isActive; + } + + /** + * Get the statusCode property: Indicates the reason for rule deactivation. + * + * @return the statusCode value. + */ + public StatusCodeEnum statusCode() { + return this.statusCode; + } + + /** + * Get the provisioningState property: Summary rule is in provisioning state. If set to 'updating' or 'deleting', + * indicates a resource lock due to an ongoing operation, preventing any update to the Summary rule until the + * operation is complete. + * + * @return the provisioningState value. + */ + public ProvisioningStateEnum provisioningState() { + return this.provisioningState; + } + + /** + * Get the ruleDefinition property: Rule definition parameters. + * + * @return the ruleDefinition value. + */ + public RuleDefinition ruleDefinition() { + return this.ruleDefinition; + } + + /** + * Set the ruleDefinition property: Rule definition parameters. + * + * @param ruleDefinition the ruleDefinition value to set. + * @return the SummaryLogsProperties object itself. + */ + public SummaryLogsProperties withRuleDefinition(RuleDefinition ruleDefinition) { + this.ruleDefinition = ruleDefinition; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (ruleDefinition() != null) { + ruleDefinition().validate(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("ruleType", this.ruleType == null ? null : this.ruleType.toString()); + jsonWriter.writeStringField("displayName", this.displayName); + jsonWriter.writeStringField("description", this.description); + jsonWriter.writeJsonField("ruleDefinition", this.ruleDefinition); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of SummaryLogsProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of SummaryLogsProperties if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the SummaryLogsProperties. + */ + public static SummaryLogsProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + SummaryLogsProperties deserializedSummaryLogsProperties = new SummaryLogsProperties(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("ruleType".equals(fieldName)) { + deserializedSummaryLogsProperties.ruleType = RuleTypeEnum.fromString(reader.getString()); + } else if ("displayName".equals(fieldName)) { + deserializedSummaryLogsProperties.displayName = reader.getString(); + } else if ("description".equals(fieldName)) { + deserializedSummaryLogsProperties.description = reader.getString(); + } else if ("isActive".equals(fieldName)) { + deserializedSummaryLogsProperties.isActive = reader.getNullable(JsonReader::getBoolean); + } else if ("statusCode".equals(fieldName)) { + deserializedSummaryLogsProperties.statusCode = StatusCodeEnum.fromString(reader.getString()); + } else if ("provisioningState".equals(fieldName)) { + deserializedSummaryLogsProperties.provisioningState + = ProvisioningStateEnum.fromString(reader.getString()); + } else if ("ruleDefinition".equals(fieldName)) { + deserializedSummaryLogsProperties.ruleDefinition = RuleDefinition.fromJson(reader); + } else { + reader.skipChildren(); + } + } + + return deserializedSummaryLogsProperties; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/TableInner.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/TableInner.java index 4923dec7fdff..f9163289ea32 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/TableInner.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/TableInner.java @@ -6,6 +6,7 @@ import com.azure.core.annotation.Fluent; import com.azure.core.management.ProxyResource; +import com.azure.core.management.SystemData; import com.azure.json.JsonReader; import com.azure.json.JsonToken; import com.azure.json.JsonWriter; @@ -14,7 +15,6 @@ import com.azure.resourcemanager.loganalytics.models.ResultStatistics; import com.azure.resourcemanager.loganalytics.models.Schema; import com.azure.resourcemanager.loganalytics.models.SearchResults; -import com.azure.resourcemanager.loganalytics.models.SystemDataAutoGenerated; import com.azure.resourcemanager.loganalytics.models.TablePlanEnum; import java.io.IOException; @@ -31,7 +31,7 @@ public final class TableInner extends ProxyResource { /* * Metadata pertaining to creation and last modification of the resource. */ - private SystemDataAutoGenerated systemData; + private SystemData systemData; /* * The type of the resource. @@ -68,7 +68,7 @@ private TableProperties innerProperties() { * * @return the systemData value. */ - public SystemDataAutoGenerated systemData() { + public SystemData systemData() { return this.systemData; } @@ -103,8 +103,9 @@ public String id() { } /** - * Get the retentionInDays property: The table retention in days, between 4 and 730. Setting this property to -1 - * will default to the workspace retention. + * Get the retentionInDays property: In Analytics table: the tables analytics retention in days, between 4 and 730. + * Setting this property to -1 will default to the workspace retention. In Basic and Auxiliary table: read only + * property. * * @return the retentionInDays value. */ @@ -113,8 +114,9 @@ public Integer retentionInDays() { } /** - * Set the retentionInDays property: The table retention in days, between 4 and 730. Setting this property to -1 - * will default to the workspace retention. + * Set the retentionInDays property: In Analytics table: the tables analytics retention in days, between 4 and 730. + * Setting this property to -1 will default to the workspace retention. In Basic and Auxiliary table: read only + * property. * * @param retentionInDays the retentionInDays value to set. * @return the TableInner object itself. @@ -129,7 +131,7 @@ public TableInner withRetentionInDays(Integer retentionInDays) { /** * Get the totalRetentionInDays property: The table total retention in days, between 4 and 4383. Setting this - * property to -1 will default to table retention. + * property to -1 will default to retentionInDays. * * @return the totalRetentionInDays value. */ @@ -139,7 +141,7 @@ public Integer totalRetentionInDays() { /** * Set the totalRetentionInDays property: The table total retention in days, between 4 and 4383. Setting this - * property to -1 will default to table retention. + * property to -1 will default to retentionInDays. * * @param totalRetentionInDays the totalRetentionInDays value to set. * @return the TableInner object itself. @@ -153,7 +155,7 @@ public TableInner withTotalRetentionInDays(Integer totalRetentionInDays) { } /** - * Get the archiveRetentionInDays property: The table data archive retention in days. Calculated as + * Get the archiveRetentionInDays property: The tables long-term retention in days. Calculated as * (totalRetentionInDays-retentionInDays). * * @return the archiveRetentionInDays value. @@ -312,9 +314,6 @@ public void validate() { if (innerProperties() != null) { innerProperties().validate(); } - if (systemData() != null) { - systemData().validate(); - } } /** @@ -352,7 +351,7 @@ public static TableInner fromJson(JsonReader jsonReader) throws IOException { } else if ("properties".equals(fieldName)) { deserializedTableInner.innerProperties = TableProperties.fromJson(reader); } else if ("systemData".equals(fieldName)) { - deserializedTableInner.systemData = SystemDataAutoGenerated.fromJson(reader); + deserializedTableInner.systemData = SystemData.fromJson(reader); } else { reader.skipChildren(); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/TableProperties.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/TableProperties.java index 224a110120ed..f3c825511b70 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/TableProperties.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/TableProperties.java @@ -23,19 +23,19 @@ @Fluent public final class TableProperties implements JsonSerializable { /* - * The table retention in days, between 4 and 730. Setting this property to -1 will default to the workspace - * retention. + * In Analytics table: the tables analytics retention in days, between 4 and 730. Setting this property to -1 will + * default to the workspace retention. In Basic and Auxiliary table: read only property. */ private Integer retentionInDays; /* - * The table total retention in days, between 4 and 4383. Setting this property to -1 will default to table - * retention. + * The table total retention in days, between 4 and 4383. Setting this property to -1 will default to + * retentionInDays. */ private Integer totalRetentionInDays; /* - * The table data archive retention in days. Calculated as (totalRetentionInDays-retentionInDays) + * The tables long-term retention in days. Calculated as (totalRetentionInDays-retentionInDays). */ private Integer archiveRetentionInDays; @@ -92,8 +92,9 @@ public TableProperties() { } /** - * Get the retentionInDays property: The table retention in days, between 4 and 730. Setting this property to -1 - * will default to the workspace retention. + * Get the retentionInDays property: In Analytics table: the tables analytics retention in days, between 4 and 730. + * Setting this property to -1 will default to the workspace retention. In Basic and Auxiliary table: read only + * property. * * @return the retentionInDays value. */ @@ -102,8 +103,9 @@ public Integer retentionInDays() { } /** - * Set the retentionInDays property: The table retention in days, between 4 and 730. Setting this property to -1 - * will default to the workspace retention. + * Set the retentionInDays property: In Analytics table: the tables analytics retention in days, between 4 and 730. + * Setting this property to -1 will default to the workspace retention. In Basic and Auxiliary table: read only + * property. * * @param retentionInDays the retentionInDays value to set. * @return the TableProperties object itself. @@ -115,7 +117,7 @@ public TableProperties withRetentionInDays(Integer retentionInDays) { /** * Get the totalRetentionInDays property: The table total retention in days, between 4 and 4383. Setting this - * property to -1 will default to table retention. + * property to -1 will default to retentionInDays. * * @return the totalRetentionInDays value. */ @@ -125,7 +127,7 @@ public Integer totalRetentionInDays() { /** * Set the totalRetentionInDays property: The table total retention in days, between 4 and 4383. Setting this - * property to -1 will default to table retention. + * property to -1 will default to retentionInDays. * * @param totalRetentionInDays the totalRetentionInDays value to set. * @return the TableProperties object itself. @@ -136,7 +138,7 @@ public TableProperties withTotalRetentionInDays(Integer totalRetentionInDays) { } /** - * Get the archiveRetentionInDays property: The table data archive retention in days. Calculated as + * Get the archiveRetentionInDays property: The tables long-term retention in days. Calculated as * (totalRetentionInDays-retentionInDays). * * @return the archiveRetentionInDays value. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/WorkspaceInner.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/WorkspaceInner.java index 629b221fc494..65c697daf679 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/WorkspaceInner.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/WorkspaceInner.java @@ -6,18 +6,21 @@ import com.azure.core.annotation.Fluent; import com.azure.core.management.Resource; +import com.azure.core.management.SystemData; import com.azure.json.JsonReader; import com.azure.json.JsonToken; import com.azure.json.JsonWriter; import com.azure.resourcemanager.loganalytics.models.Identity; import com.azure.resourcemanager.loganalytics.models.PrivateLinkScopedResource; import com.azure.resourcemanager.loganalytics.models.PublicNetworkAccessType; -import com.azure.resourcemanager.loganalytics.models.SystemDataAutoGenerated; import com.azure.resourcemanager.loganalytics.models.WorkspaceCapping; import com.azure.resourcemanager.loganalytics.models.WorkspaceEntityStatus; +import com.azure.resourcemanager.loganalytics.models.WorkspaceFailoverProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceFeatures; +import com.azure.resourcemanager.loganalytics.models.WorkspaceReplicationProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceSku; import java.io.IOException; +import java.time.OffsetDateTime; import java.util.List; import java.util.Map; @@ -39,7 +42,7 @@ public final class WorkspaceInner extends Resource { /* * Metadata pertaining to creation and last modification of the resource. */ - private SystemDataAutoGenerated systemData; + private SystemData systemData; /* * The etag of the workspace. @@ -101,7 +104,7 @@ public WorkspaceInner withIdentity(Identity identity) { * * @return the systemData value. */ - public SystemDataAutoGenerated systemData() { + public SystemData systemData() { return this.systemData; } @@ -267,7 +270,7 @@ public WorkspaceInner withWorkspaceCapping(WorkspaceCapping workspaceCapping) { * * @return the createdDate value. */ - public String createdDate() { + public OffsetDateTime createdDate() { return this.innerProperties() == null ? null : this.innerProperties().createdDate(); } @@ -276,7 +279,7 @@ public String createdDate() { * * @return the modifiedDate value. */ - public String modifiedDate() { + public OffsetDateTime modifiedDate() { return this.innerProperties() == null ? null : this.innerProperties().modifiedDate(); } @@ -408,6 +411,52 @@ public WorkspaceInner withDefaultDataCollectionRuleResourceId(String defaultData return this; } + /** + * Get the replication property: workspace replication properties. + * + * @return the replication value. + */ + public WorkspaceReplicationProperties replication() { + return this.innerProperties() == null ? null : this.innerProperties().replication(); + } + + /** + * Set the replication property: workspace replication properties. + * + * @param replication the replication value to set. + * @return the WorkspaceInner object itself. + */ + public WorkspaceInner withReplication(WorkspaceReplicationProperties replication) { + if (this.innerProperties() == null) { + this.innerProperties = new WorkspaceProperties(); + } + this.innerProperties().withReplication(replication); + return this; + } + + /** + * Get the failover property: workspace failover properties. + * + * @return the failover value. + */ + public WorkspaceFailoverProperties failover() { + return this.innerProperties() == null ? null : this.innerProperties().failover(); + } + + /** + * Set the failover property: workspace failover properties. + * + * @param failover the failover value to set. + * @return the WorkspaceInner object itself. + */ + public WorkspaceInner withFailover(WorkspaceFailoverProperties failover) { + if (this.innerProperties() == null) { + this.innerProperties = new WorkspaceProperties(); + } + this.innerProperties().withFailover(failover); + return this; + } + /** * Validates the instance. * @@ -420,9 +469,6 @@ public void validate() { if (identity() != null) { identity().validate(); } - if (systemData() != null) { - systemData().validate(); - } } /** @@ -471,7 +517,7 @@ public static WorkspaceInner fromJson(JsonReader jsonReader) throws IOException } else if ("identity".equals(fieldName)) { deserializedWorkspaceInner.identity = Identity.fromJson(reader); } else if ("systemData".equals(fieldName)) { - deserializedWorkspaceInner.systemData = SystemDataAutoGenerated.fromJson(reader); + deserializedWorkspaceInner.systemData = SystemData.fromJson(reader); } else if ("etag".equals(fieldName)) { deserializedWorkspaceInner.etag = reader.getString(); } else { diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/WorkspaceProperties.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/WorkspaceProperties.java index 53c89225a8c1..a951ec0ccf06 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/WorkspaceProperties.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/fluent/models/WorkspaceProperties.java @@ -5,6 +5,7 @@ package com.azure.resourcemanager.loganalytics.fluent.models; import com.azure.core.annotation.Fluent; +import com.azure.core.util.CoreUtils; import com.azure.json.JsonReader; import com.azure.json.JsonSerializable; import com.azure.json.JsonToken; @@ -13,9 +14,12 @@ import com.azure.resourcemanager.loganalytics.models.PublicNetworkAccessType; import com.azure.resourcemanager.loganalytics.models.WorkspaceCapping; import com.azure.resourcemanager.loganalytics.models.WorkspaceEntityStatus; +import com.azure.resourcemanager.loganalytics.models.WorkspaceFailoverProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceFeatures; +import com.azure.resourcemanager.loganalytics.models.WorkspaceReplicationProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceSku; import java.io.IOException; +import java.time.OffsetDateTime; import java.util.List; /** @@ -52,12 +56,12 @@ public final class WorkspaceProperties implements JsonSerializable CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); } else if ("modifiedDate".equals(fieldName)) { - deserializedWorkspaceProperties.modifiedDate = reader.getString(); + deserializedWorkspaceProperties.modifiedDate = reader + .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); } else if ("publicNetworkAccessForIngestion".equals(fieldName)) { deserializedWorkspaceProperties.publicNetworkAccessForIngestion = PublicNetworkAccessType.fromString(reader.getString()); @@ -394,6 +458,10 @@ public static WorkspaceProperties fromJson(JsonReader jsonReader) throws IOExcep deserializedWorkspaceProperties.features = WorkspaceFeatures.fromJson(reader); } else if ("defaultDataCollectionRuleResourceId".equals(fieldName)) { deserializedWorkspaceProperties.defaultDataCollectionRuleResourceId = reader.getString(); + } else if ("replication".equals(fieldName)) { + deserializedWorkspaceProperties.replication = WorkspaceReplicationProperties.fromJson(reader); + } else if ("failover".equals(fieldName)) { + deserializedWorkspaceProperties.failover = WorkspaceFailoverProperties.fromJson(reader); } else { reader.skipChildren(); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/AvailableServiceTiersClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/AvailableServiceTiersClientImpl.java index bf7d14fc433d..79cc76334190 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/AvailableServiceTiersClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/AvailableServiceTiersClientImpl.java @@ -21,6 +21,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.AvailableServiceTiersClient; import com.azure.resourcemanager.loganalytics.fluent.models.AvailableServiceTierInner; import java.util.List; @@ -56,7 +57,7 @@ public final class AvailableServiceTiersClientImpl implements AvailableServiceTi * by the proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientAvailableServiceTiers") public interface AvailableServiceTiersService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/availableServiceTiers") @@ -66,6 +67,15 @@ Mono>> listByWorkspace(@HostParam("$hos @PathParam("subscriptionId") String subscriptionId, @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/availableServiceTiers") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response> listByWorkspaceSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); } /** @@ -97,51 +107,13 @@ private Mono>> listByWorkspaceWithRespo if (workspaceName == null) { return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.listByWorkspace(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, apiVersion, accept, context)) + resourceGroupName, workspaceName, this.client.getApiVersion(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets the available service tiers for the workspace. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the available service tiers for the workspace along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> listByWorkspaceWithResponseAsync(String resourceGroupName, - String workspaceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.listByWorkspace(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - workspaceName, apiVersion, accept, context); - } - /** * Gets the available service tiers for the workspace. * @@ -172,7 +144,27 @@ private Mono> listByWorkspaceAsync(String resour @ServiceMethod(returns = ReturnType.SINGLE) public Response> listByWorkspaceWithResponse(String resourceGroupName, String workspaceName, Context context) { - return listByWorkspaceWithResponseAsync(resourceGroupName, workspaceName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.listByWorkspaceSync(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, workspaceName, this.client.getApiVersion(), accept, context); } /** @@ -189,4 +181,6 @@ public Response> listByWorkspaceWithResponse(Str public List listByWorkspace(String resourceGroupName, String workspaceName) { return listByWorkspaceWithResponse(resourceGroupName, workspaceName, Context.NONE).getValue(); } + + private static final ClientLogger LOGGER = new ClientLogger(AvailableServiceTiersClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/ClusterImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/ClusterImpl.java index d8419d40e0e5..39cc9a799e6f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/ClusterImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/ClusterImpl.java @@ -13,9 +13,11 @@ import com.azure.resourcemanager.loganalytics.models.Cluster; import com.azure.resourcemanager.loganalytics.models.ClusterEntityStatus; import com.azure.resourcemanager.loganalytics.models.ClusterPatch; +import com.azure.resourcemanager.loganalytics.models.ClusterReplicationProperties; import com.azure.resourcemanager.loganalytics.models.ClusterSku; import com.azure.resourcemanager.loganalytics.models.KeyVaultProperties; import com.azure.resourcemanager.loganalytics.models.ManagedServiceIdentity; +import java.time.OffsetDateTime; import java.util.Collections; import java.util.List; import java.util.Map; @@ -82,11 +84,11 @@ public KeyVaultProperties keyVaultProperties() { return this.innerModel().keyVaultProperties(); } - public String lastModifiedDate() { + public OffsetDateTime lastModifiedDate() { return this.innerModel().lastModifiedDate(); } - public String createdDate() { + public OffsetDateTime createdDate() { return this.innerModel().createdDate(); } @@ -103,6 +105,10 @@ public CapacityReservationProperties capacityReservationProperties() { return this.innerModel().capacityReservationProperties(); } + public ClusterReplicationProperties replication() { + return this.innerModel().replication(); + } + public Region region() { return Region.fromName(this.regionName()); } @@ -276,7 +282,12 @@ public ClusterImpl withCapacityReservationProperties(CapacityReservationProperti return this; } + public ClusterImpl withReplication(ClusterReplicationProperties replication) { + this.innerModel().withReplication(replication); + return this; + } + private boolean isInCreateMode() { - return this.innerModel().id() == null; + return this.innerModel() == null || this.innerModel().id() == null; } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/ClustersClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/ClustersClientImpl.java index 019b3c86f818..bd4e395d2728 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/ClustersClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/ClustersClientImpl.java @@ -28,8 +28,10 @@ import com.azure.core.http.rest.RestProxy; import com.azure.core.management.exception.ManagementException; import com.azure.core.management.polling.PollResult; +import com.azure.core.util.BinaryData; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.polling.PollerFlux; import com.azure.core.util.polling.SyncPoller; import com.azure.resourcemanager.loganalytics.fluent.ClustersClient; @@ -69,7 +71,7 @@ public final class ClustersClientImpl implements ClustersClient { * service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientClusters") public interface ClustersService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/clusters") @@ -79,6 +81,14 @@ Mono> listByResourceGroup(@HostParam("$host") String @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/clusters") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByResourceGroupSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/providers/Microsoft.OperationalInsights/clusters") @ExpectedResponses({ 200 }) @@ -87,9 +97,17 @@ Mono> list(@HostParam("$host") String endpoint, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/providers/Microsoft.OperationalInsights/clusters") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listSync(@HostParam("$host") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/clusters/{clusterName}") - @ExpectedResponses({ 200, 201, 202 }) + @ExpectedResponses({ 200, 202 }) @UnexpectedResponseExceptionType(ManagementException.class) Mono>> createOrUpdate(@HostParam("$host") String endpoint, @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, @@ -97,6 +115,16 @@ Mono>> createOrUpdate(@HostParam("$host") String endpo @BodyParam("application/json") ClusterInner parameters, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/clusters/{clusterName}") + @ExpectedResponses({ 200, 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response createOrUpdateSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @PathParam("clusterName") String clusterName, + @BodyParam("application/json") ClusterInner parameters, @HeaderParam("Accept") String accept, + Context context); + @Headers({ "Content-Type: application/json" }) @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/clusters/{clusterName}") @ExpectedResponses({ 200, 202, 204 }) @@ -106,6 +134,15 @@ Mono>> delete(@HostParam("$host") String endpoint, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/clusters/{clusterName}") + @ExpectedResponses({ 200, 202, 204 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response deleteSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("clusterName") String clusterName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/clusters/{clusterName}") @ExpectedResponses({ 200 }) @@ -116,15 +153,34 @@ Mono> getByResourceGroup(@HostParam("$host") String endpo @PathParam("clusterName") String clusterName, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) - @Patch("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/clusters/{clusterName}") + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/clusters/{clusterName}") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) + Response getByResourceGroupSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, + @PathParam("clusterName") String clusterName, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Patch("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/clusters/{clusterName}") + @ExpectedResponses({ 200, 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) Mono>> update(@HostParam("$host") String endpoint, @PathParam("resourceGroupName") String resourceGroupName, @PathParam("clusterName") String clusterName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @BodyParam("application/json") ClusterPatch parameters, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Patch("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/clusters/{clusterName}") + @ExpectedResponses({ 200, 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response updateSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("clusterName") String clusterName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @BodyParam("application/json") ClusterPatch parameters, @HeaderParam("Accept") String accept, + Context context); + @Headers({ "Content-Type: application/json" }) @Get("{nextLink}") @ExpectedResponses({ 200 }) @@ -133,12 +189,27 @@ Mono> listByResourceGroupNext( @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByResourceGroupNextSync( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("{nextLink}") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) Mono> listNext(@PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listNextSync(@PathParam(value = "nextLink", encoded = true) String nextLink, + @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); } /** @@ -165,11 +236,10 @@ private Mono> listByResourceGroupSinglePageAsync(Str return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.listByResourceGroup(this.client.getEndpoint(), resourceGroupName, - apiVersion, this.client.getSubscriptionId(), accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -179,36 +249,15 @@ private Mono> listByResourceGroupSinglePageAsync(Str * Gets Log Analytics clusters in a resource group. * * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return log Analytics clusters in a resource group along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return log Analytics clusters in a resource group as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByResourceGroupSinglePageAsync(String resourceGroupName, - Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2022-10-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service - .listByResourceGroup(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listByResourceGroupAsync(String resourceGroupName) { + return new PagedFlux<>(() -> listByResourceGroupSinglePageAsync(resourceGroupName), + nextLink -> listByResourceGroupNextSinglePageAsync(nextLink)); } /** @@ -218,12 +267,29 @@ private Mono> listByResourceGroupSinglePageAsync(Str * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return log Analytics clusters in a resource group as paginated response with {@link PagedFlux}. + * @return log Analytics clusters in a resource group along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByResourceGroupAsync(String resourceGroupName) { - return new PagedFlux<>(() -> listByResourceGroupSinglePageAsync(resourceGroupName), - nextLink -> listByResourceGroupNextSinglePageAsync(nextLink)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByResourceGroupSinglePage(String resourceGroupName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listByResourceGroupSync(this.client.getEndpoint(), resourceGroupName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -234,12 +300,29 @@ private PagedFlux listByResourceGroupAsync(String resourceGroupNam * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return log Analytics clusters in a resource group as paginated response with {@link PagedFlux}. + * @return log Analytics clusters in a resource group along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByResourceGroupAsync(String resourceGroupName, Context context) { - return new PagedFlux<>(() -> listByResourceGroupSinglePageAsync(resourceGroupName, context), - nextLink -> listByResourceGroupNextSinglePageAsync(nextLink, context)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByResourceGroupSinglePage(String resourceGroupName, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listByResourceGroupSync(this.client.getEndpoint(), resourceGroupName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -253,7 +336,8 @@ private PagedFlux listByResourceGroupAsync(String resourceGroupNam */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByResourceGroup(String resourceGroupName) { - return new PagedIterable<>(listByResourceGroupAsync(resourceGroupName)); + return new PagedIterable<>(() -> listByResourceGroupSinglePage(resourceGroupName), + nextLink -> listByResourceGroupNextSinglePage(nextLink)); } /** @@ -268,7 +352,8 @@ public PagedIterable listByResourceGroup(String resourceGroupName) */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByResourceGroup(String resourceGroupName, Context context) { - return new PagedIterable<>(listByResourceGroupAsync(resourceGroupName, context)); + return new PagedIterable<>(() -> listByResourceGroupSinglePage(resourceGroupName, context), + nextLink -> listByResourceGroupNextSinglePage(nextLink, context)); } /** @@ -289,11 +374,10 @@ private Mono> listSinglePageAsync() { return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - accept, context)) + .withContext(context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -302,29 +386,13 @@ private Mono> listSinglePageAsync() { /** * Gets the Log Analytics clusters in a subscription. * - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the Log Analytics clusters in a subscription along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return the Log Analytics clusters in a subscription as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSinglePageAsync(Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2022-10-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listAsync() { + return new PagedFlux<>(() -> listSinglePageAsync(), nextLink -> listNextSinglePageAsync(nextLink)); } /** @@ -332,11 +400,25 @@ private Mono> listSinglePageAsync(Context context) { * * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the Log Analytics clusters in a subscription as paginated response with {@link PagedFlux}. + * @return the Log Analytics clusters in a subscription along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync() { - return new PagedFlux<>(() -> listSinglePageAsync(), nextLink -> listNextSinglePageAsync(nextLink)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage() { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -346,12 +428,25 @@ private PagedFlux listAsync() { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the Log Analytics clusters in a subscription as paginated response with {@link PagedFlux}. + * @return the Log Analytics clusters in a subscription along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync(Context context) { - return new PagedFlux<>(() -> listSinglePageAsync(context), - nextLink -> listNextSinglePageAsync(nextLink, context)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage(Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -363,7 +458,7 @@ private PagedFlux listAsync(Context context) { */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list() { - return new PagedIterable<>(listAsync()); + return new PagedIterable<>(() -> listSinglePage(), nextLink -> listNextSinglePage(nextLink)); } /** @@ -377,7 +472,7 @@ public PagedIterable list() { */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list(Context context) { - return new PagedIterable<>(listAsync(context)); + return new PagedIterable<>(() -> listSinglePage(context), nextLink -> listNextSinglePage(nextLink, context)); } /** @@ -415,11 +510,10 @@ private Mono>> createOrUpdateWithResponseAsync(String } else { parameters.validate(); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), clusterName, parameters, accept, context)) + .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, + this.client.getApiVersion(), this.client.getSubscriptionId(), clusterName, parameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -429,41 +523,41 @@ private Mono>> createOrUpdateWithResponseAsync(String * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param clusterName The name of the Log Analytics cluster. * @param parameters The parameters required to create or update a Log Analytics cluster. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Log Analytics cluster resource container along with {@link Response} on successful - * completion of {@link Mono}. + * @return the top level Log Analytics cluster resource container along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> createOrUpdateWithResponseAsync(String resourceGroupName, - String clusterName, ClusterInner parameters, Context context) { + private Response createOrUpdateWithResponse(String resourceGroupName, String clusterName, + ClusterInner parameters) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); } if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } if (clusterName == null) { - return Mono.error(new IllegalArgumentException("Parameter clusterName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter clusterName is required and cannot be null.")); } if (parameters == null) { - return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); } else { parameters.validate(); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), clusterName, parameters, accept, context); + return service.createOrUpdateSync(this.client.getEndpoint(), resourceGroupName, this.client.getApiVersion(), + this.client.getSubscriptionId(), clusterName, parameters, accept, Context.NONE); } /** @@ -472,18 +566,42 @@ private Mono>> createOrUpdateWithResponseAsync(String * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param clusterName The name of the Log Analytics cluster. * @param parameters The parameters required to create or update a Log Analytics cluster. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of the top level Log Analytics cluster resource container. + * @return the top level Log Analytics cluster resource container along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, ClusterInner> beginCreateOrUpdateAsync(String resourceGroupName, - String clusterName, ClusterInner parameters) { - Mono>> mono - = createOrUpdateWithResponseAsync(resourceGroupName, clusterName, parameters); - return this.client.getLroResult(mono, this.client.getHttpPipeline(), - ClusterInner.class, ClusterInner.class, this.client.getContext()); + @ServiceMethod(returns = ReturnType.SINGLE) + private Response createOrUpdateWithResponse(String resourceGroupName, String clusterName, + ClusterInner parameters, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (clusterName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter clusterName is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.createOrUpdateSync(this.client.getEndpoint(), resourceGroupName, this.client.getApiVersion(), + this.client.getSubscriptionId(), clusterName, parameters, accept, context); } /** @@ -492,7 +610,6 @@ private PollerFlux, ClusterInner> beginCreateOrUpdateAs * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param clusterName The name of the Log Analytics cluster. * @param parameters The parameters required to create or update a Log Analytics cluster. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. @@ -500,12 +617,11 @@ private PollerFlux, ClusterInner> beginCreateOrUpdateAs */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) private PollerFlux, ClusterInner> beginCreateOrUpdateAsync(String resourceGroupName, - String clusterName, ClusterInner parameters, Context context) { - context = this.client.mergeContext(context); + String clusterName, ClusterInner parameters) { Mono>> mono - = createOrUpdateWithResponseAsync(resourceGroupName, clusterName, parameters, context); + = createOrUpdateWithResponseAsync(resourceGroupName, clusterName, parameters); return this.client.getLroResult(mono, this.client.getHttpPipeline(), - ClusterInner.class, ClusterInner.class, context); + ClusterInner.class, ClusterInner.class, this.client.getContext()); } /** @@ -522,7 +638,9 @@ private PollerFlux, ClusterInner> beginCreateOrUpdateAs @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, ClusterInner> beginCreateOrUpdate(String resourceGroupName, String clusterName, ClusterInner parameters) { - return this.beginCreateOrUpdateAsync(resourceGroupName, clusterName, parameters).getSyncPoller(); + Response response = createOrUpdateWithResponse(resourceGroupName, clusterName, parameters); + return this.client.getLroResult(response, ClusterInner.class, ClusterInner.class, + Context.NONE); } /** @@ -540,7 +658,9 @@ public SyncPoller, ClusterInner> beginCreateOrUpdate(St @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, ClusterInner> beginCreateOrUpdate(String resourceGroupName, String clusterName, ClusterInner parameters, Context context) { - return this.beginCreateOrUpdateAsync(resourceGroupName, clusterName, parameters, context).getSyncPoller(); + Response response = createOrUpdateWithResponse(resourceGroupName, clusterName, parameters, context); + return this.client.getLroResult(response, ClusterInner.class, ClusterInner.class, + context); } /** @@ -561,25 +681,6 @@ private Mono createOrUpdateAsync(String resourceGroupName, String .flatMap(this.client::getLroFinalResultOrError); } - /** - * Create or update a Log Analytics cluster. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param clusterName The name of the Log Analytics cluster. - * @param parameters The parameters required to create or update a Log Analytics cluster. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Log Analytics cluster resource container on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono createOrUpdateAsync(String resourceGroupName, String clusterName, - ClusterInner parameters, Context context) { - return beginCreateOrUpdateAsync(resourceGroupName, clusterName, parameters, context).last() - .flatMap(this.client::getLroFinalResultOrError); - } - /** * Create or update a Log Analytics cluster. * @@ -593,7 +694,7 @@ private Mono createOrUpdateAsync(String resourceGroupName, String */ @ServiceMethod(returns = ReturnType.SINGLE) public ClusterInner createOrUpdate(String resourceGroupName, String clusterName, ClusterInner parameters) { - return createOrUpdateAsync(resourceGroupName, clusterName, parameters).block(); + return beginCreateOrUpdate(resourceGroupName, clusterName, parameters).getFinalResult(); } /** @@ -611,7 +712,7 @@ public ClusterInner createOrUpdate(String resourceGroupName, String clusterName, @ServiceMethod(returns = ReturnType.SINGLE) public ClusterInner createOrUpdate(String resourceGroupName, String clusterName, ClusterInner parameters, Context context) { - return createOrUpdateAsync(resourceGroupName, clusterName, parameters, context).block(); + return beginCreateOrUpdate(resourceGroupName, clusterName, parameters, context).getFinalResult(); } /** @@ -641,11 +742,10 @@ private Mono>> deleteWithResponseAsync(String resource return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.delete(this.client.getEndpoint(), resourceGroupName, clusterName, - apiVersion, this.client.getSubscriptionId(), accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -654,35 +754,34 @@ private Mono>> deleteWithResponseAsync(String resource * * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param clusterName Name of the Log Analytics Cluster. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. + * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> deleteWithResponseAsync(String resourceGroupName, String clusterName, - Context context) { + private Response deleteWithResponse(String resourceGroupName, String clusterName) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); } if (clusterName == null) { - return Mono.error(new IllegalArgumentException("Parameter clusterName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter clusterName is required and cannot be null.")); } if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), resourceGroupName, clusterName, apiVersion, - this.client.getSubscriptionId(), accept, context); + return service.deleteSync(this.client.getEndpoint(), resourceGroupName, clusterName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, Context.NONE); } /** @@ -690,16 +789,35 @@ private Mono>> deleteWithResponseAsync(String resource * * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param clusterName Name of the Log Analytics Cluster. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of long-running operation. + * @return the response body along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, Void> beginDeleteAsync(String resourceGroupName, String clusterName) { - Mono>> mono = deleteWithResponseAsync(resourceGroupName, clusterName); - return this.client.getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, - this.client.getContext()); + @ServiceMethod(returns = ReturnType.SINGLE) + private Response deleteWithResponse(String resourceGroupName, String clusterName, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (clusterName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter clusterName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.deleteSync(this.client.getEndpoint(), resourceGroupName, clusterName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); } /** @@ -707,19 +825,16 @@ private PollerFlux, Void> beginDeleteAsync(String resourceGroup * * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param clusterName Name of the Log Analytics Cluster. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return the {@link PollerFlux} for polling of long-running operation. */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, Void> beginDeleteAsync(String resourceGroupName, String clusterName, - Context context) { - context = this.client.mergeContext(context); - Mono>> mono = deleteWithResponseAsync(resourceGroupName, clusterName, context); + private PollerFlux, Void> beginDeleteAsync(String resourceGroupName, String clusterName) { + Mono>> mono = deleteWithResponseAsync(resourceGroupName, clusterName); return this.client.getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, - context); + this.client.getContext()); } /** @@ -734,7 +849,8 @@ private PollerFlux, Void> beginDeleteAsync(String resourceGroup */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, Void> beginDelete(String resourceGroupName, String clusterName) { - return this.beginDeleteAsync(resourceGroupName, clusterName).getSyncPoller(); + Response response = deleteWithResponse(resourceGroupName, clusterName); + return this.client.getLroResult(response, Void.class, Void.class, Context.NONE); } /** @@ -751,7 +867,8 @@ public SyncPoller, Void> beginDelete(String resourceGroupName, @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, Void> beginDelete(String resourceGroupName, String clusterName, Context context) { - return this.beginDeleteAsync(resourceGroupName, clusterName, context).getSyncPoller(); + Response response = deleteWithResponse(resourceGroupName, clusterName, context); + return this.client.getLroResult(response, Void.class, Void.class, context); } /** @@ -769,23 +886,6 @@ private Mono deleteAsync(String resourceGroupName, String clusterName) { return beginDeleteAsync(resourceGroupName, clusterName).last().flatMap(this.client::getLroFinalResultOrError); } - /** - * Deletes a cluster instance. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param clusterName Name of the Log Analytics Cluster. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return A {@link Mono} that completes when a successful response is received. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono deleteAsync(String resourceGroupName, String clusterName, Context context) { - return beginDeleteAsync(resourceGroupName, clusterName, context).last() - .flatMap(this.client::getLroFinalResultOrError); - } - /** * Deletes a cluster instance. * @@ -797,7 +897,7 @@ private Mono deleteAsync(String resourceGroupName, String clusterName, Con */ @ServiceMethod(returns = ReturnType.SINGLE) public void delete(String resourceGroupName, String clusterName) { - deleteAsync(resourceGroupName, clusterName).block(); + beginDelete(resourceGroupName, clusterName).getFinalResult(); } /** @@ -812,7 +912,7 @@ public void delete(String resourceGroupName, String clusterName) { */ @ServiceMethod(returns = ReturnType.SINGLE) public void delete(String resourceGroupName, String clusterName, Context context) { - deleteAsync(resourceGroupName, clusterName, context).block(); + beginDelete(resourceGroupName, clusterName, context).getFinalResult(); } /** @@ -843,50 +943,14 @@ private Mono> getByResourceGroupWithResponseAsync(String if (clusterName == null) { return Mono.error(new IllegalArgumentException("Parameter clusterName is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.getByResourceGroup(this.client.getEndpoint(), - this.client.getSubscriptionId(), resourceGroupName, apiVersion, clusterName, accept, context)) + .withContext( + context -> service.getByResourceGroup(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, this.client.getApiVersion(), clusterName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets a Log Analytics cluster instance. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param clusterName Name of the Log Analytics Cluster. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a Log Analytics cluster instance along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getByResourceGroupWithResponseAsync(String resourceGroupName, - String clusterName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (clusterName == null) { - return Mono.error(new IllegalArgumentException("Parameter clusterName is required and cannot be null.")); - } - final String apiVersion = "2022-10-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.getByResourceGroup(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - apiVersion, clusterName, accept, context); - } - /** * Gets a Log Analytics cluster instance. * @@ -917,7 +981,27 @@ private Mono getByResourceGroupAsync(String resourceGroupName, Str @ServiceMethod(returns = ReturnType.SINGLE) public Response getByResourceGroupWithResponse(String resourceGroupName, String clusterName, Context context) { - return getByResourceGroupWithResponseAsync(resourceGroupName, clusterName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (clusterName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter clusterName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getByResourceGroupSync(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, this.client.getApiVersion(), clusterName, accept, context); } /** @@ -970,11 +1054,10 @@ private Mono>> updateWithResponseAsync(String resource } else { parameters.validate(); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.update(this.client.getEndpoint(), resourceGroupName, clusterName, - apiVersion, this.client.getSubscriptionId(), parameters, accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), parameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -984,41 +1067,41 @@ private Mono>> updateWithResponseAsync(String resource * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param clusterName Name of the Log Analytics Cluster. * @param parameters The parameters required to patch a Log Analytics cluster. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Log Analytics cluster resource container along with {@link Response} on successful - * completion of {@link Mono}. + * @return the top level Log Analytics cluster resource container along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> updateWithResponseAsync(String resourceGroupName, String clusterName, - ClusterPatch parameters, Context context) { + private Response updateWithResponse(String resourceGroupName, String clusterName, + ClusterPatch parameters) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); } if (clusterName == null) { - return Mono.error(new IllegalArgumentException("Parameter clusterName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter clusterName is required and cannot be null.")); } if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } if (parameters == null) { - return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); } else { parameters.validate(); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.update(this.client.getEndpoint(), resourceGroupName, clusterName, apiVersion, - this.client.getSubscriptionId(), parameters, accept, context); + return service.updateSync(this.client.getEndpoint(), resourceGroupName, clusterName, + this.client.getApiVersion(), this.client.getSubscriptionId(), parameters, accept, Context.NONE); } /** @@ -1027,17 +1110,42 @@ private Mono>> updateWithResponseAsync(String resource * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param clusterName Name of the Log Analytics Cluster. * @param parameters The parameters required to patch a Log Analytics cluster. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of the top level Log Analytics cluster resource container. + * @return the top level Log Analytics cluster resource container along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, ClusterInner> beginUpdateAsync(String resourceGroupName, - String clusterName, ClusterPatch parameters) { - Mono>> mono = updateWithResponseAsync(resourceGroupName, clusterName, parameters); - return this.client.getLroResult(mono, this.client.getHttpPipeline(), - ClusterInner.class, ClusterInner.class, this.client.getContext()); + @ServiceMethod(returns = ReturnType.SINGLE) + private Response updateWithResponse(String resourceGroupName, String clusterName, + ClusterPatch parameters, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (clusterName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter clusterName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.updateSync(this.client.getEndpoint(), resourceGroupName, clusterName, + this.client.getApiVersion(), this.client.getSubscriptionId(), parameters, accept, context); } /** @@ -1046,7 +1154,6 @@ private PollerFlux, ClusterInner> beginUpdateAsync(Stri * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param clusterName Name of the Log Analytics Cluster. * @param parameters The parameters required to patch a Log Analytics cluster. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. @@ -1054,12 +1161,10 @@ private PollerFlux, ClusterInner> beginUpdateAsync(Stri */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) private PollerFlux, ClusterInner> beginUpdateAsync(String resourceGroupName, - String clusterName, ClusterPatch parameters, Context context) { - context = this.client.mergeContext(context); - Mono>> mono - = updateWithResponseAsync(resourceGroupName, clusterName, parameters, context); + String clusterName, ClusterPatch parameters) { + Mono>> mono = updateWithResponseAsync(resourceGroupName, clusterName, parameters); return this.client.getLroResult(mono, this.client.getHttpPipeline(), - ClusterInner.class, ClusterInner.class, context); + ClusterInner.class, ClusterInner.class, this.client.getContext()); } /** @@ -1076,7 +1181,9 @@ private PollerFlux, ClusterInner> beginUpdateAsync(Stri @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, ClusterInner> beginUpdate(String resourceGroupName, String clusterName, ClusterPatch parameters) { - return this.beginUpdateAsync(resourceGroupName, clusterName, parameters).getSyncPoller(); + Response response = updateWithResponse(resourceGroupName, clusterName, parameters); + return this.client.getLroResult(response, ClusterInner.class, ClusterInner.class, + Context.NONE); } /** @@ -1094,7 +1201,9 @@ public SyncPoller, ClusterInner> beginUpdate(String res @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, ClusterInner> beginUpdate(String resourceGroupName, String clusterName, ClusterPatch parameters, Context context) { - return this.beginUpdateAsync(resourceGroupName, clusterName, parameters, context).getSyncPoller(); + Response response = updateWithResponse(resourceGroupName, clusterName, parameters, context); + return this.client.getLroResult(response, ClusterInner.class, ClusterInner.class, + context); } /** @@ -1114,25 +1223,6 @@ private Mono updateAsync(String resourceGroupName, String clusterN .flatMap(this.client::getLroFinalResultOrError); } - /** - * Updates a Log Analytics cluster. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param clusterName Name of the Log Analytics Cluster. - * @param parameters The parameters required to patch a Log Analytics cluster. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Log Analytics cluster resource container on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono updateAsync(String resourceGroupName, String clusterName, ClusterPatch parameters, - Context context) { - return beginUpdateAsync(resourceGroupName, clusterName, parameters, context).last() - .flatMap(this.client::getLroFinalResultOrError); - } - /** * Updates a Log Analytics cluster. * @@ -1146,7 +1236,7 @@ private Mono updateAsync(String resourceGroupName, String clusterN */ @ServiceMethod(returns = ReturnType.SINGLE) public ClusterInner update(String resourceGroupName, String clusterName, ClusterPatch parameters) { - return updateAsync(resourceGroupName, clusterName, parameters).block(); + return beginUpdate(resourceGroupName, clusterName, parameters).getFinalResult(); } /** @@ -1163,7 +1253,7 @@ public ClusterInner update(String resourceGroupName, String clusterName, Cluster */ @ServiceMethod(returns = ReturnType.SINGLE) public ClusterInner update(String resourceGroupName, String clusterName, ClusterPatch parameters, Context context) { - return updateAsync(resourceGroupName, clusterName, parameters, context).block(); + return beginUpdate(resourceGroupName, clusterName, parameters, context).getFinalResult(); } /** @@ -1173,7 +1263,7 @@ public ClusterInner update(String resourceGroupName, String clusterName, Cluster * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list clusters operation response along with {@link PagedResponse} on successful completion of + * @return log Analytics clusters in a resource group along with {@link PagedResponse} on successful completion of * {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) @@ -1194,6 +1284,33 @@ private Mono> listByResourceGroupNextSinglePageAsync .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return log Analytics clusters in a resource group along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByResourceGroupNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByResourceGroupNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + /** * Get the next page of items. * @@ -1202,23 +1319,24 @@ private Mono> listByResourceGroupNextSinglePageAsync * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list clusters operation response along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return log Analytics clusters in a resource group along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByResourceGroupNextSinglePageAsync(String nextLink, Context context) { + private PagedResponse listByResourceGroupNextSinglePage(String nextLink, Context context) { if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); } if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.listByResourceGroupNext(nextLink, this.client.getEndpoint(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + Response res + = service.listByResourceGroupNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -1228,7 +1346,7 @@ private Mono> listByResourceGroupNextSinglePageAsync * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list clusters operation response along with {@link PagedResponse} on successful completion of + * @return the Log Analytics clusters in a subscription along with {@link PagedResponse} on successful completion of * {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) @@ -1247,6 +1365,33 @@ private Mono> listNextSinglePageAsync(String nextLin .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the Log Analytics clusters in a subscription along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + /** * Get the next page of items. * @@ -1255,22 +1400,24 @@ private Mono> listNextSinglePageAsync(String nextLin * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list clusters operation response along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return the Log Analytics clusters in a subscription along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listNextSinglePageAsync(String nextLink, Context context) { + private PagedResponse listNextSinglePage(String nextLink, Context context) { if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); } if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.listNext(nextLink, this.client.getEndpoint(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + Response res = service.listNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } + + private static final ClientLogger LOGGER = new ClientLogger(ClustersClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/DataExportsClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/DataExportsClientImpl.java index cc3f35ee6341..30251c939268 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/DataExportsClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/DataExportsClientImpl.java @@ -28,6 +28,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.DataExportsClient; import com.azure.resourcemanager.loganalytics.fluent.models.DataExportInner; import com.azure.resourcemanager.loganalytics.models.DataExportListResult; @@ -63,7 +64,7 @@ public final class DataExportsClientImpl implements DataExportsClient { * proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientDataExports") public interface DataExportsService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataExports") @@ -74,6 +75,15 @@ Mono> listByWorkspace(@HostParam("$host") String @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataExports") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByWorkspaceSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataExports/{dataExportName}") @ExpectedResponses({ 200, 201 }) @@ -85,6 +95,17 @@ Mono> createOrUpdate(@HostParam("$host") String endpoi @BodyParam("application/json") DataExportInner parameters, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataExports/{dataExportName}") + @ExpectedResponses({ 200, 201 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response createOrUpdateSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("dataExportName") String dataExportName, @QueryParam("api-version") String apiVersion, + @BodyParam("application/json") DataExportInner parameters, @HeaderParam("Accept") String accept, + Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataExports/{dataExportName}") @ExpectedResponses({ 200 }) @@ -95,6 +116,16 @@ Mono> get(@HostParam("$host") String endpoint, @PathParam("dataExportName") String dataExportName, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataExports/{dataExportName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("dataExportName") String dataExportName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataExports/{dataExportName}") @ExpectedResponses({ 200, 404 }) @@ -104,6 +135,16 @@ Mono> delete(@HostParam("$host") String endpoint, @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, @PathParam("dataExportName") String dataExportName, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataExports/{dataExportName}") + @ExpectedResponses({ 200, 404 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response deleteSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("dataExportName") String dataExportName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, Context context); } /** @@ -135,11 +176,10 @@ private Mono> listByWorkspaceSinglePageAsync(Stri if (workspaceName == null) { return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.listByWorkspace(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, apiVersion, accept, context)) + resourceGroupName, workspaceName, this.client.getApiVersion(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), null, null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -150,39 +190,14 @@ private Mono> listByWorkspaceSinglePageAsync(Stri * * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list data exports along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return result of the request to list data exports as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByWorkspaceSinglePageAsync(String resourceGroupName, - String workspaceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service - .listByWorkspace(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - workspaceName, apiVersion, accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), null, null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName) { + return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName)); } /** @@ -193,11 +208,34 @@ private Mono> listByWorkspaceSinglePageAsync(Stri * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list data exports as paginated response with {@link PagedFlux}. + * @return result of the request to list data exports along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName) { - return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceSinglePage(String resourceGroupName, String workspaceName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -209,12 +247,35 @@ private PagedFlux listByWorkspaceAsync(String resourceGroupName * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list data exports as paginated response with {@link PagedFlux}. + * @return result of the request to list data exports along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName, + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceSinglePage(String resourceGroupName, String workspaceName, Context context) { - return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName, context)); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -229,7 +290,7 @@ private PagedFlux listByWorkspaceAsync(String resourceGroupName */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName) { - return new PagedIterable<>(listByWorkspaceAsync(resourceGroupName, workspaceName)); + return new PagedIterable<>(() -> listByWorkspaceSinglePage(resourceGroupName, workspaceName)); } /** @@ -246,7 +307,7 @@ public PagedIterable listByWorkspace(String resourceGroupName, @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName, Context context) { - return new PagedIterable<>(listByWorkspaceAsync(resourceGroupName, workspaceName, context)); + return new PagedIterable<>(() -> listByWorkspaceSinglePage(resourceGroupName, workspaceName, context)); } /** @@ -288,61 +349,14 @@ private Mono> createOrUpdateWithResponseAsync(String r } else { parameters.validate(); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, dataExportName, apiVersion, parameters, accept, context)) + resourceGroupName, workspaceName, dataExportName, this.client.getApiVersion(), parameters, accept, + context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Create or update a data export. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param dataExportName The data export rule name. - * @param parameters The parameters required to create or update a data export. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level data export resource container along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> createOrUpdateWithResponseAsync(String resourceGroupName, - String workspaceName, String dataExportName, DataExportInner parameters, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (dataExportName == null) { - return Mono.error(new IllegalArgumentException("Parameter dataExportName is required and cannot be null.")); - } - if (parameters == null) { - return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); - } else { - parameters.validate(); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.createOrUpdate(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - workspaceName, dataExportName, apiVersion, parameters, accept, context); - } - /** * Create or update a data export. * @@ -378,8 +392,37 @@ private Mono createOrUpdateAsync(String resourceGroupName, Stri @ServiceMethod(returns = ReturnType.SINGLE) public Response createOrUpdateWithResponse(String resourceGroupName, String workspaceName, String dataExportName, DataExportInner parameters, Context context) { - return createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, dataExportName, parameters, context) - .block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (dataExportName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter dataExportName is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.createOrUpdateSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, dataExportName, this.client.getApiVersion(), parameters, accept, context); } /** @@ -433,54 +476,13 @@ private Mono> getWithResponseAsync(String resourceGrou if (dataExportName == null) { return Mono.error(new IllegalArgumentException("Parameter dataExportName is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, dataExportName, apiVersion, accept, context)) + resourceGroupName, workspaceName, dataExportName, this.client.getApiVersion(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets a data export instance. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param dataExportName The data export rule name. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a data export instance along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getWithResponseAsync(String resourceGroupName, String workspaceName, - String dataExportName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (dataExportName == null) { - return Mono.error(new IllegalArgumentException("Parameter dataExportName is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, workspaceName, - dataExportName, apiVersion, accept, context); - } - /** * Gets a data export instance. * @@ -513,7 +515,31 @@ private Mono getAsync(String resourceGroupName, String workspac @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(String resourceGroupName, String workspaceName, String dataExportName, Context context) { - return getWithResponseAsync(resourceGroupName, workspaceName, dataExportName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (dataExportName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter dataExportName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, dataExportName, this.client.getApiVersion(), accept, context); } /** @@ -564,54 +590,13 @@ private Mono> deleteWithResponseAsync(String resourceGroupName, S if (dataExportName == null) { return Mono.error(new IllegalArgumentException("Parameter dataExportName is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, dataExportName, apiVersion, accept, context)) + resourceGroupName, workspaceName, dataExportName, this.client.getApiVersion(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Deletes the specified data export in a given workspace.. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param dataExportName The data export rule name. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> deleteWithResponseAsync(String resourceGroupName, String workspaceName, - String dataExportName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (dataExportName == null) { - return Mono.error(new IllegalArgumentException("Parameter dataExportName is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - workspaceName, dataExportName, apiVersion, accept, context); - } - /** * Deletes the specified data export in a given workspace.. * @@ -644,7 +629,31 @@ private Mono deleteAsync(String resourceGroupName, String workspaceName, S @ServiceMethod(returns = ReturnType.SINGLE) public Response deleteWithResponse(String resourceGroupName, String workspaceName, String dataExportName, Context context) { - return deleteWithResponseAsync(resourceGroupName, workspaceName, dataExportName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (dataExportName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter dataExportName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.deleteSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, dataExportName, this.client.getApiVersion(), accept, context); } /** @@ -661,4 +670,6 @@ public Response deleteWithResponse(String resourceGroupName, String worksp public void delete(String resourceGroupName, String workspaceName, String dataExportName) { deleteWithResponse(resourceGroupName, workspaceName, dataExportName, Context.NONE); } + + private static final ClientLogger LOGGER = new ClientLogger(DataExportsClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/DataSourcesClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/DataSourcesClientImpl.java index 79fcd6463169..f1f8487cacb5 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/DataSourcesClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/DataSourcesClientImpl.java @@ -28,6 +28,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.DataSourcesClient; import com.azure.resourcemanager.loganalytics.fluent.models.DataSourceInner; import com.azure.resourcemanager.loganalytics.models.DataSourceListResult; @@ -63,7 +64,7 @@ public final class DataSourcesClientImpl implements DataSourcesClient { * proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientDataSources") public interface DataSourcesService { @Headers({ "Content-Type: application/json" }) @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataSources/{dataSourceName}") @@ -76,6 +77,17 @@ Mono> createOrUpdate(@HostParam("$host") String endpoi @BodyParam("application/json") DataSourceInner parameters, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataSources/{dataSourceName}") + @ExpectedResponses({ 200, 201 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response createOrUpdateSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("dataSourceName") String dataSourceName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, + @BodyParam("application/json") DataSourceInner parameters, @HeaderParam("Accept") String accept, + Context context); + @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataSources/{dataSourceName}") @ExpectedResponses({ 200, 204 }) @@ -85,6 +97,15 @@ Mono> delete(@HostParam("$host") String endpoint, @PathParam("dataSourceName") String dataSourceName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, Context context); + @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) + @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataSources/{dataSourceName}") + @ExpectedResponses({ 200, 204 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response deleteSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("dataSourceName") String dataSourceName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataSources/{dataSourceName}") @ExpectedResponses({ 200 }) @@ -94,6 +115,15 @@ Mono> get(@HostParam("$host") String endpoint, @PathParam("dataSourceName") String dataSourceName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataSources/{dataSourceName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("dataSourceName") String dataSourceName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataSources") @ExpectedResponses({ 200 }) @@ -104,6 +134,16 @@ Mono> listByWorkspace(@HostParam("$host") String @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/dataSources") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByWorkspaceSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("$filter") String filter, @QueryParam("$skiptoken") String skiptoken, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("{nextLink}") @ExpectedResponses({ 200 }) @@ -111,6 +151,14 @@ Mono> listByWorkspace(@HostParam("$host") String Mono> listByWorkspaceNext( @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByWorkspaceNextSync( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @HeaderParam("Accept") String accept, Context context); } /** @@ -151,60 +199,14 @@ private Mono> createOrUpdateWithResponseAsync(String r } else { parameters.validate(); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, workspaceName, - dataSourceName, apiVersion, this.client.getSubscriptionId(), parameters, accept, context)) + dataSourceName, this.client.getApiVersion(), this.client.getSubscriptionId(), parameters, accept, + context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Create or update a data source. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param dataSourceName The name of the datasource resource. - * @param parameters The parameters required to create or update a datasource. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return datasources under OMS Workspace along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> createOrUpdateWithResponseAsync(String resourceGroupName, - String workspaceName, String dataSourceName, DataSourceInner parameters, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (dataSourceName == null) { - return Mono.error(new IllegalArgumentException("Parameter dataSourceName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (parameters == null) { - return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); - } else { - parameters.validate(); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, workspaceName, dataSourceName, - apiVersion, this.client.getSubscriptionId(), parameters, accept, context); - } - /** * Create or update a data source. * @@ -240,8 +242,37 @@ private Mono createOrUpdateAsync(String resourceGroupName, Stri @ServiceMethod(returns = ReturnType.SINGLE) public Response createOrUpdateWithResponse(String resourceGroupName, String workspaceName, String dataSourceName, DataSourceInner parameters, Context context) { - return createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, dataSourceName, parameters, context) - .block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (dataSourceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter dataSourceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.createOrUpdateSync(this.client.getEndpoint(), resourceGroupName, workspaceName, dataSourceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), parameters, accept, context); } /** @@ -295,52 +326,12 @@ private Mono> deleteWithResponseAsync(String resourceGroupName, S return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; return FluxUtil .withContext(context -> service.delete(this.client.getEndpoint(), resourceGroupName, workspaceName, - dataSourceName, apiVersion, this.client.getSubscriptionId(), context)) + dataSourceName, this.client.getApiVersion(), this.client.getSubscriptionId(), context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Deletes a data source instance. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param dataSourceName Name of the datasource. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> deleteWithResponseAsync(String resourceGroupName, String workspaceName, - String dataSourceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (dataSourceName == null) { - return Mono.error(new IllegalArgumentException("Parameter dataSourceName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), resourceGroupName, workspaceName, dataSourceName, apiVersion, - this.client.getSubscriptionId(), context); - } - /** * Deletes a data source instance. * @@ -373,7 +364,30 @@ private Mono deleteAsync(String resourceGroupName, String workspaceName, S @ServiceMethod(returns = ReturnType.SINGLE) public Response deleteWithResponse(String resourceGroupName, String workspaceName, String dataSourceName, Context context) { - return deleteWithResponseAsync(resourceGroupName, workspaceName, dataSourceName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (dataSourceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter dataSourceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + return service.deleteSync(this.client.getEndpoint(), resourceGroupName, workspaceName, dataSourceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), context); } /** @@ -423,54 +437,13 @@ private Mono> getWithResponseAsync(String resourceGrou return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.get(this.client.getEndpoint(), resourceGroupName, workspaceName, - dataSourceName, apiVersion, this.client.getSubscriptionId(), accept, context)) + dataSourceName, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets a datasource instance. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param dataSourceName Name of the datasource. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a datasource instance along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getWithResponseAsync(String resourceGroupName, String workspaceName, - String dataSourceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (dataSourceName == null) { - return Mono.error(new IllegalArgumentException("Parameter dataSourceName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), resourceGroupName, workspaceName, dataSourceName, apiVersion, - this.client.getSubscriptionId(), accept, context); - } - /** * Gets a datasource instance. * @@ -503,7 +476,31 @@ private Mono getAsync(String resourceGroupName, String workspac @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(String resourceGroupName, String workspaceName, String dataSourceName, Context context) { - return getWithResponseAsync(resourceGroupName, workspaceName, dataSourceName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (dataSourceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter dataSourceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getSync(this.client.getEndpoint(), resourceGroupName, workspaceName, dataSourceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); } /** @@ -556,11 +553,10 @@ private Mono> listByWorkspaceSinglePageAsync(Stri return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.listByWorkspace(this.client.getEndpoint(), resourceGroupName, workspaceName, - filter, skiptoken, apiVersion, this.client.getSubscriptionId(), accept, context)) + filter, skiptoken, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -573,42 +569,18 @@ private Mono> listByWorkspaceSinglePageAsync(Stri * @param workspaceName The name of the workspace. * @param filter The filter to apply on the operation. * @param skiptoken Starting point of the collection of data source instances. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the first page of data source instances in a workspace with the link to the next page along with - * {@link PagedResponse} on successful completion of {@link Mono}. + * @return the first page of data source instances in a workspace with the link to the next page as paginated + * response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByWorkspaceSinglePageAsync(String resourceGroupName, - String workspaceName, String filter, String skiptoken, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (filter == null) { - return Mono.error(new IllegalArgumentException("Parameter filter is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service - .listByWorkspace(this.client.getEndpoint(), resourceGroupName, workspaceName, filter, skiptoken, apiVersion, - this.client.getSubscriptionId(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName, + String filter, String skiptoken) { + return new PagedFlux<>( + () -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName, filter, skiptoken), + nextLink -> listByWorkspaceNextSinglePageAsync(nextLink)); } /** @@ -617,7 +589,6 @@ private Mono> listByWorkspaceSinglePageAsync(Stri * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. * @param filter The filter to apply on the operation. - * @param skiptoken Starting point of the collection of data source instances. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. @@ -626,7 +597,8 @@ private Mono> listByWorkspaceSinglePageAsync(Stri */ @ServiceMethod(returns = ReturnType.COLLECTION) private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName, - String filter, String skiptoken) { + String filter) { + final String skiptoken = null; return new PagedFlux<>( () -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName, filter, skiptoken), nextLink -> listByWorkspaceNextSinglePageAsync(nextLink)); @@ -638,19 +610,44 @@ private PagedFlux listByWorkspaceAsync(String resourceGroupName * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. * @param filter The filter to apply on the operation. + * @param skiptoken Starting point of the collection of data source instances. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the first page of data source instances in a workspace with the link to the next page as paginated - * response with {@link PagedFlux}. + * @return the first page of data source instances in a workspace with the link to the next page along with + * {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName, - String filter) { - final String skiptoken = null; - return new PagedFlux<>( - () -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName, filter, skiptoken), - nextLink -> listByWorkspaceNextSinglePageAsync(nextLink)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceSinglePage(String resourceGroupName, String workspaceName, + String filter, String skiptoken) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (filter == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter filter is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceSync(this.client.getEndpoint(), resourceGroupName, workspaceName, filter, + skiptoken, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -664,15 +661,40 @@ private PagedFlux listByWorkspaceAsync(String resourceGroupName * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the first page of data source instances in a workspace with the link to the next page as paginated - * response with {@link PagedFlux}. + * @return the first page of data source instances in a workspace with the link to the next page along with + * {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName, + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceSinglePage(String resourceGroupName, String workspaceName, String filter, String skiptoken, Context context) { - return new PagedFlux<>( - () -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName, filter, skiptoken, context), - nextLink -> listByWorkspaceNextSinglePageAsync(nextLink, context)); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (filter == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter filter is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceSync(this.client.getEndpoint(), resourceGroupName, workspaceName, filter, + skiptoken, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -691,7 +713,8 @@ private PagedFlux listByWorkspaceAsync(String resourceGroupName public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName, String filter) { final String skiptoken = null; - return new PagedIterable<>(listByWorkspaceAsync(resourceGroupName, workspaceName, filter, skiptoken)); + return new PagedIterable<>(() -> listByWorkspaceSinglePage(resourceGroupName, workspaceName, filter, skiptoken), + nextLink -> listByWorkspaceNextSinglePage(nextLink)); } /** @@ -711,7 +734,9 @@ public PagedIterable listByWorkspace(String resourceGroupName, @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName, String filter, String skiptoken, Context context) { - return new PagedIterable<>(listByWorkspaceAsync(resourceGroupName, workspaceName, filter, skiptoken, context)); + return new PagedIterable<>( + () -> listByWorkspaceSinglePage(resourceGroupName, workspaceName, filter, skiptoken, context), + nextLink -> listByWorkspaceNextSinglePage(nextLink, context)); } /** @@ -721,8 +746,8 @@ public PagedIterable listByWorkspace(String resourceGroupName, * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list data source by workspace operation response along with {@link PagedResponse} on successful - * completion of {@link Mono}. + * @return the first page of data source instances in a workspace with the link to the next page along with + * {@link PagedResponse} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> listByWorkspaceNextSinglePageAsync(String nextLink) { @@ -741,6 +766,34 @@ private Mono> listByWorkspaceNextSinglePageAsync( .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the first page of data source instances in a workspace with the link to the next page along with + * {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + /** * Get the next page of items. * @@ -749,22 +802,26 @@ private Mono> listByWorkspaceNextSinglePageAsync( * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list data source by workspace operation response along with {@link PagedResponse} on successful - * completion of {@link Mono}. + * @return the first page of data source instances in a workspace with the link to the next page along with + * {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByWorkspaceNextSinglePageAsync(String nextLink, Context context) { + private PagedResponse listByWorkspaceNextSinglePage(String nextLink, Context context) { if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); } if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.listByWorkspaceNext(nextLink, this.client.getEndpoint(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + Response res + = service.listByWorkspaceNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } + + private static final ClientLogger LOGGER = new ClientLogger(DataSourcesClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/DeletedWorkspacesClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/DeletedWorkspacesClientImpl.java index 69fc3b58644c..41aa645c5021 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/DeletedWorkspacesClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/DeletedWorkspacesClientImpl.java @@ -25,6 +25,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.DeletedWorkspacesClient; import com.azure.resourcemanager.loganalytics.fluent.models.WorkspaceInner; import com.azure.resourcemanager.loganalytics.models.WorkspaceListResult; @@ -60,7 +61,7 @@ public final class DeletedWorkspacesClientImpl implements DeletedWorkspacesClien * the proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientDeletedWorkspaces") public interface DeletedWorkspacesService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/providers/Microsoft.OperationalInsights/deletedWorkspaces") @@ -70,6 +71,14 @@ Mono> list(@HostParam("$host") String endpoint, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/providers/Microsoft.OperationalInsights/deletedWorkspaces") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listSync(@HostParam("$host") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/deletedWorkspaces") @ExpectedResponses({ 200 }) @@ -77,6 +86,14 @@ Mono> list(@HostParam("$host") String endpoint, Mono> listByResourceGroup(@HostParam("$host") String endpoint, @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/deletedWorkspaces") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByResourceGroupSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); } /** @@ -97,11 +114,10 @@ private Mono> listSinglePageAsync() { return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - accept, context)) + .withContext(context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), null, null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -110,29 +126,14 @@ private Mono> listSinglePageAsync() { /** * Gets recently deleted workspaces in a subscription, available for recovery. * - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return recently deleted workspaces in a subscription, available for recovery along with {@link PagedResponse} on - * successful completion of {@link Mono}. + * @return recently deleted workspaces in a subscription, available for recovery as paginated response with + * {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSinglePageAsync(Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2022-10-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), null, null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listAsync() { + return new PagedFlux<>(() -> listSinglePageAsync()); } /** @@ -140,12 +141,25 @@ private Mono> listSinglePageAsync(Context context) * * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return recently deleted workspaces in a subscription, available for recovery as paginated response with - * {@link PagedFlux}. + * @return recently deleted workspaces in a subscription, available for recovery along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync() { - return new PagedFlux<>(() -> listSinglePageAsync()); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage() { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -155,12 +169,25 @@ private PagedFlux listAsync() { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return recently deleted workspaces in a subscription, available for recovery as paginated response with - * {@link PagedFlux}. + * @return recently deleted workspaces in a subscription, available for recovery along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync(Context context) { - return new PagedFlux<>(() -> listSinglePageAsync(context)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage(Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -173,7 +200,7 @@ private PagedFlux listAsync(Context context) { */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list() { - return new PagedIterable<>(listAsync()); + return new PagedIterable<>(() -> listSinglePage()); } /** @@ -188,7 +215,7 @@ public PagedIterable list() { */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list(Context context) { - return new PagedIterable<>(listAsync(context)); + return new PagedIterable<>(() -> listSinglePage(context)); } /** @@ -215,11 +242,10 @@ private Mono> listByResourceGroupSinglePageAsync(S return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.listByResourceGroup(this.client.getEndpoint(), resourceGroupName, - apiVersion, this.client.getSubscriptionId(), accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), null, null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -229,36 +255,15 @@ private Mono> listByResourceGroupSinglePageAsync(S * Gets recently deleted workspaces in a resource group, available for recovery. * * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return recently deleted workspaces in a resource group, available for recovery along with {@link PagedResponse} - * on successful completion of {@link Mono}. + * @return recently deleted workspaces in a resource group, available for recovery as paginated response with + * {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByResourceGroupSinglePageAsync(String resourceGroupName, - Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2022-10-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service - .listByResourceGroup(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), null, null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listByResourceGroupAsync(String resourceGroupName) { + return new PagedFlux<>(() -> listByResourceGroupSinglePageAsync(resourceGroupName)); } /** @@ -268,12 +273,29 @@ private Mono> listByResourceGroupSinglePageAsync(S * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return recently deleted workspaces in a resource group, available for recovery as paginated response with - * {@link PagedFlux}. + * @return recently deleted workspaces in a resource group, available for recovery along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByResourceGroupAsync(String resourceGroupName) { - return new PagedFlux<>(() -> listByResourceGroupSinglePageAsync(resourceGroupName)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByResourceGroupSinglePage(String resourceGroupName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listByResourceGroupSync(this.client.getEndpoint(), + resourceGroupName, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -284,12 +306,29 @@ private PagedFlux listByResourceGroupAsync(String resourceGroupN * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return recently deleted workspaces in a resource group, available for recovery as paginated response with - * {@link PagedFlux}. + * @return recently deleted workspaces in a resource group, available for recovery along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByResourceGroupAsync(String resourceGroupName, Context context) { - return new PagedFlux<>(() -> listByResourceGroupSinglePageAsync(resourceGroupName, context)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByResourceGroupSinglePage(String resourceGroupName, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listByResourceGroupSync(this.client.getEndpoint(), + resourceGroupName, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -304,7 +343,7 @@ private PagedFlux listByResourceGroupAsync(String resourceGroupN */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByResourceGroup(String resourceGroupName) { - return new PagedIterable<>(listByResourceGroupAsync(resourceGroupName)); + return new PagedIterable<>(() -> listByResourceGroupSinglePage(resourceGroupName)); } /** @@ -320,6 +359,8 @@ public PagedIterable listByResourceGroup(String resourceGroupNam */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByResourceGroup(String resourceGroupName, Context context) { - return new PagedIterable<>(listByResourceGroupAsync(resourceGroupName, context)); + return new PagedIterable<>(() -> listByResourceGroupSinglePage(resourceGroupName, context)); } + + private static final ClientLogger LOGGER = new ClientLogger(DeletedWorkspacesClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/GatewaysClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/GatewaysClientImpl.java index cc9b1d782cc7..def0f096476d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/GatewaysClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/GatewaysClientImpl.java @@ -20,6 +20,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.GatewaysClient; import reactor.core.publisher.Mono; @@ -52,7 +53,7 @@ public final class GatewaysClientImpl implements GatewaysClient { * service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientGateways") public interface GatewaysService { @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/gateways/{gatewayId}") @@ -62,6 +63,15 @@ Mono> delete(@HostParam("$host") String endpoint, @PathParam("subscriptionId") String subscriptionId, @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, @PathParam("gatewayId") String gatewayId, @QueryParam("api-version") String apiVersion, Context context); + + @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) + @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/gateways/{gatewayId}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response deleteSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("gatewayId") String gatewayId, @QueryParam("api-version") String apiVersion, Context context); } /** @@ -96,52 +106,12 @@ private Mono> deleteWithResponseAsync(String resourceGroupName, S if (gatewayId == null) { return Mono.error(new IllegalArgumentException("Parameter gatewayId is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; return FluxUtil .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, gatewayId, apiVersion, context)) + resourceGroupName, workspaceName, gatewayId, this.client.getApiVersion(), context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Delete a Log Analytics gateway. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param gatewayId The Log Analytics gateway Id. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> deleteWithResponseAsync(String resourceGroupName, String workspaceName, - String gatewayId, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (gatewayId == null) { - return Mono.error(new IllegalArgumentException("Parameter gatewayId is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - workspaceName, gatewayId, apiVersion, context); - } - /** * Delete a Log Analytics gateway. * @@ -173,7 +143,30 @@ private Mono deleteAsync(String resourceGroupName, String workspaceName, S @ServiceMethod(returns = ReturnType.SINGLE) public Response deleteWithResponse(String resourceGroupName, String workspaceName, String gatewayId, Context context) { - return deleteWithResponseAsync(resourceGroupName, workspaceName, gatewayId, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (gatewayId == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter gatewayId is required and cannot be null.")); + } + return service.deleteSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, gatewayId, this.client.getApiVersion(), context); } /** @@ -190,4 +183,6 @@ public Response deleteWithResponse(String resourceGroupName, String worksp public void delete(String resourceGroupName, String workspaceName, String gatewayId) { deleteWithResponse(resourceGroupName, workspaceName, gatewayId, Context.NONE); } + + private static final ClientLogger LOGGER = new ClientLogger(GatewaysClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/IntelligencePacksClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/IntelligencePacksClientImpl.java index adf553c5c7b2..34dd79cae562 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/IntelligencePacksClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/IntelligencePacksClientImpl.java @@ -22,6 +22,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.IntelligencePacksClient; import com.azure.resourcemanager.loganalytics.fluent.models.IntelligencePackInner; import java.util.List; @@ -57,7 +58,7 @@ public final class IntelligencePacksClientImpl implements IntelligencePacksClien * the proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientIntelligencePacks") public interface IntelligencePacksService { @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) @Post("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/intelligencePacks/{intelligencePackName}/Disable") @@ -69,6 +70,16 @@ Mono> disable(@HostParam("$host") String endpoint, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, Context context); + @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/intelligencePacks/{intelligencePackName}/Disable") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response disableSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("intelligencePackName") String intelligencePackName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + Context context); + @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) @Post("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/intelligencePacks/{intelligencePackName}/Enable") @ExpectedResponses({ 200 }) @@ -79,6 +90,16 @@ Mono> enable(@HostParam("$host") String endpoint, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, Context context); + @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/intelligencePacks/{intelligencePackName}/Enable") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response enableSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("intelligencePackName") String intelligencePackName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/intelligencePacks") @ExpectedResponses({ 200 }) @@ -87,6 +108,15 @@ Mono>> list(@HostParam("$host") String endp @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/intelligencePacks") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response> listSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); } /** @@ -122,53 +152,12 @@ private Mono> disableWithResponseAsync(String resourceGroupName, return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; return FluxUtil .withContext(context -> service.disable(this.client.getEndpoint(), resourceGroupName, workspaceName, - intelligencePackName, apiVersion, this.client.getSubscriptionId(), context)) + intelligencePackName, this.client.getApiVersion(), this.client.getSubscriptionId(), context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Disables an intelligence pack for a given workspace. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param intelligencePackName The name of the intelligence pack to be disabled. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> disableWithResponseAsync(String resourceGroupName, String workspaceName, - String intelligencePackName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (intelligencePackName == null) { - return Mono - .error(new IllegalArgumentException("Parameter intelligencePackName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - context = this.client.mergeContext(context); - return service.disable(this.client.getEndpoint(), resourceGroupName, workspaceName, intelligencePackName, - apiVersion, this.client.getSubscriptionId(), context); - } - /** * Disables an intelligence pack for a given workspace. * @@ -201,7 +190,30 @@ private Mono disableAsync(String resourceGroupName, String workspaceName, @ServiceMethod(returns = ReturnType.SINGLE) public Response disableWithResponse(String resourceGroupName, String workspaceName, String intelligencePackName, Context context) { - return disableWithResponseAsync(resourceGroupName, workspaceName, intelligencePackName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (intelligencePackName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter intelligencePackName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + return service.disableSync(this.client.getEndpoint(), resourceGroupName, workspaceName, intelligencePackName, + this.client.getApiVersion(), this.client.getSubscriptionId(), context); } /** @@ -252,53 +264,12 @@ private Mono> enableWithResponseAsync(String resourceGroupName, S return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; return FluxUtil .withContext(context -> service.enable(this.client.getEndpoint(), resourceGroupName, workspaceName, - intelligencePackName, apiVersion, this.client.getSubscriptionId(), context)) + intelligencePackName, this.client.getApiVersion(), this.client.getSubscriptionId(), context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Enables an intelligence pack for a given workspace. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param intelligencePackName The name of the intelligence pack to be enabled. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> enableWithResponseAsync(String resourceGroupName, String workspaceName, - String intelligencePackName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (intelligencePackName == null) { - return Mono - .error(new IllegalArgumentException("Parameter intelligencePackName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - context = this.client.mergeContext(context); - return service.enable(this.client.getEndpoint(), resourceGroupName, workspaceName, intelligencePackName, - apiVersion, this.client.getSubscriptionId(), context); - } - /** * Enables an intelligence pack for a given workspace. * @@ -331,7 +302,30 @@ private Mono enableAsync(String resourceGroupName, String workspaceName, S @ServiceMethod(returns = ReturnType.SINGLE) public Response enableWithResponse(String resourceGroupName, String workspaceName, String intelligencePackName, Context context) { - return enableWithResponseAsync(resourceGroupName, workspaceName, intelligencePackName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (intelligencePackName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter intelligencePackName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + return service.enableSync(this.client.getEndpoint(), resourceGroupName, workspaceName, intelligencePackName, + this.client.getApiVersion(), this.client.getSubscriptionId(), context); } /** @@ -377,50 +371,13 @@ private Mono>> listWithResponseAsync(String return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.list(this.client.getEndpoint(), resourceGroupName, workspaceName, - apiVersion, this.client.getSubscriptionId(), accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Lists all the intelligence packs possible and whether they are enabled or disabled for a given workspace. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return array of IntelligencePack along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> listWithResponseAsync(String resourceGroupName, - String workspaceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.list(this.client.getEndpoint(), resourceGroupName, workspaceName, apiVersion, - this.client.getSubscriptionId(), accept, context); - } - /** * Lists all the intelligence packs possible and whether they are enabled or disabled for a given workspace. * @@ -450,7 +407,27 @@ private Mono> listAsync(String resourceGroupName, St @ServiceMethod(returns = ReturnType.SINGLE) public Response> listWithResponse(String resourceGroupName, String workspaceName, Context context) { - return listWithResponseAsync(resourceGroupName, workspaceName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.listSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); } /** @@ -467,4 +444,6 @@ public Response> listWithResponse(String resourceGro public List list(String resourceGroupName, String workspaceName) { return listWithResponse(resourceGroupName, workspaceName, Context.NONE).getValue(); } + + private static final ClientLogger LOGGER = new ClientLogger(IntelligencePacksClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/LinkedServicesClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/LinkedServicesClientImpl.java index fd4b651ecddc..bf10d55b3740 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/LinkedServicesClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/LinkedServicesClientImpl.java @@ -27,8 +27,10 @@ import com.azure.core.http.rest.RestProxy; import com.azure.core.management.exception.ManagementException; import com.azure.core.management.polling.PollResult; +import com.azure.core.util.BinaryData; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.polling.PollerFlux; import com.azure.core.util.polling.SyncPoller; import com.azure.resourcemanager.loganalytics.fluent.LinkedServicesClient; @@ -68,7 +70,7 @@ public final class LinkedServicesClientImpl implements LinkedServicesClient { * proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientLinkedServices") public interface LinkedServicesService { @Headers({ "Content-Type: application/json" }) @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedServices/{linkedServiceName}") @@ -81,6 +83,17 @@ Mono>> createOrUpdate(@HostParam("$host") String endpo @BodyParam("application/json") LinkedServiceInner parameters, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedServices/{linkedServiceName}") + @ExpectedResponses({ 200, 201, 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response createOrUpdateSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("linkedServiceName") String linkedServiceName, + @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + @BodyParam("application/json") LinkedServiceInner parameters, @HeaderParam("Accept") String accept, + Context context); + @Headers({ "Content-Type: application/json" }) @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedServices/{linkedServiceName}") @ExpectedResponses({ 200, 202, 204 }) @@ -90,6 +103,15 @@ Mono>> delete(@HostParam("$host") String endpoint, @PathParam("linkedServiceName") String linkedServiceName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedServices/{linkedServiceName}") + @ExpectedResponses({ 200, 202, 204 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response deleteSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("linkedServiceName") String linkedServiceName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedServices/{linkedServiceName}") @ExpectedResponses({ 200 }) @@ -99,6 +121,15 @@ Mono> get(@HostParam("$host") String endpoint, @PathParam("linkedServiceName") String linkedServiceName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedServices/{linkedServiceName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("linkedServiceName") String linkedServiceName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedServices") @ExpectedResponses({ 200 }) @@ -107,6 +138,15 @@ Mono> listByWorkspace(@HostParam("$host") Stri @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedServices") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByWorkspaceSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); } /** @@ -149,11 +189,11 @@ private Mono>> createOrUpdateWithResponseAsync(String } else { parameters.validate(); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, workspaceName, - linkedServiceName, this.client.getSubscriptionId(), apiVersion, parameters, accept, context)) + linkedServiceName, this.client.getSubscriptionId(), this.client.getApiVersion(), parameters, accept, + context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -164,45 +204,46 @@ private Mono>> createOrUpdateWithResponseAsync(String * @param workspaceName The name of the workspace. * @param linkedServiceName Name of the linkedServices resource. * @param parameters The parameters required to create or update a linked service. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Linked service resource container along with {@link Response} on successful completion of - * {@link Mono}. + * @return the top level Linked service resource container along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> createOrUpdateWithResponseAsync(String resourceGroupName, - String workspaceName, String linkedServiceName, LinkedServiceInner parameters, Context context) { + private Response createOrUpdateWithResponse(String resourceGroupName, String workspaceName, + String linkedServiceName, LinkedServiceInner parameters) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); } if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); } if (linkedServiceName == null) { - return Mono - .error(new IllegalArgumentException("Parameter linkedServiceName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter linkedServiceName is required and cannot be null.")); } if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } if (parameters == null) { - return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); } else { parameters.validate(); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, workspaceName, linkedServiceName, - this.client.getSubscriptionId(), apiVersion, parameters, accept, context); + return service.createOrUpdateSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + linkedServiceName, this.client.getSubscriptionId(), this.client.getApiVersion(), parameters, accept, + Context.NONE); } /** @@ -212,18 +253,47 @@ private Mono>> createOrUpdateWithResponseAsync(String * @param workspaceName The name of the workspace. * @param linkedServiceName Name of the linkedServices resource. * @param parameters The parameters required to create or update a linked service. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of the top level Linked service resource container. + * @return the top level Linked service resource container along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, LinkedServiceInner> beginCreateOrUpdateAsync( - String resourceGroupName, String workspaceName, String linkedServiceName, LinkedServiceInner parameters) { - Mono>> mono - = createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, linkedServiceName, parameters); - return this.client.getLroResult(mono, this.client.getHttpPipeline(), - LinkedServiceInner.class, LinkedServiceInner.class, this.client.getContext()); + @ServiceMethod(returns = ReturnType.SINGLE) + private Response createOrUpdateWithResponse(String resourceGroupName, String workspaceName, + String linkedServiceName, LinkedServiceInner parameters, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (linkedServiceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter linkedServiceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.createOrUpdateSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + linkedServiceName, this.client.getSubscriptionId(), this.client.getApiVersion(), parameters, accept, + context); } /** @@ -233,7 +303,6 @@ private PollerFlux, LinkedServiceInner> beginCrea * @param workspaceName The name of the workspace. * @param linkedServiceName Name of the linkedServices resource. * @param parameters The parameters required to create or update a linked service. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. @@ -241,13 +310,11 @@ private PollerFlux, LinkedServiceInner> beginCrea */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) private PollerFlux, LinkedServiceInner> beginCreateOrUpdateAsync( - String resourceGroupName, String workspaceName, String linkedServiceName, LinkedServiceInner parameters, - Context context) { - context = this.client.mergeContext(context); + String resourceGroupName, String workspaceName, String linkedServiceName, LinkedServiceInner parameters) { Mono>> mono - = createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, linkedServiceName, parameters, context); + = createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, linkedServiceName, parameters); return this.client.getLroResult(mono, this.client.getHttpPipeline(), - LinkedServiceInner.class, LinkedServiceInner.class, context); + LinkedServiceInner.class, LinkedServiceInner.class, this.client.getContext()); } /** @@ -265,8 +332,10 @@ private PollerFlux, LinkedServiceInner> beginCrea @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, LinkedServiceInner> beginCreateOrUpdate(String resourceGroupName, String workspaceName, String linkedServiceName, LinkedServiceInner parameters) { - return this.beginCreateOrUpdateAsync(resourceGroupName, workspaceName, linkedServiceName, parameters) - .getSyncPoller(); + Response response + = createOrUpdateWithResponse(resourceGroupName, workspaceName, linkedServiceName, parameters); + return this.client.getLroResult(response, LinkedServiceInner.class, + LinkedServiceInner.class, Context.NONE); } /** @@ -285,8 +354,10 @@ public SyncPoller, LinkedServiceInner> beginCreat @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, LinkedServiceInner> beginCreateOrUpdate(String resourceGroupName, String workspaceName, String linkedServiceName, LinkedServiceInner parameters, Context context) { - return this.beginCreateOrUpdateAsync(resourceGroupName, workspaceName, linkedServiceName, parameters, context) - .getSyncPoller(); + Response response + = createOrUpdateWithResponse(resourceGroupName, workspaceName, linkedServiceName, parameters, context); + return this.client.getLroResult(response, LinkedServiceInner.class, + LinkedServiceInner.class, context); } /** @@ -308,26 +379,6 @@ private Mono createOrUpdateAsync(String resourceGroupName, S .flatMap(this.client::getLroFinalResultOrError); } - /** - * Create or update a linked service. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param linkedServiceName Name of the linkedServices resource. - * @param parameters The parameters required to create or update a linked service. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Linked service resource container on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono createOrUpdateAsync(String resourceGroupName, String workspaceName, - String linkedServiceName, LinkedServiceInner parameters, Context context) { - return beginCreateOrUpdateAsync(resourceGroupName, workspaceName, linkedServiceName, parameters, context).last() - .flatMap(this.client::getLroFinalResultOrError); - } - /** * Create or update a linked service. * @@ -343,7 +394,7 @@ private Mono createOrUpdateAsync(String resourceGroupName, S @ServiceMethod(returns = ReturnType.SINGLE) public LinkedServiceInner createOrUpdate(String resourceGroupName, String workspaceName, String linkedServiceName, LinkedServiceInner parameters) { - return createOrUpdateAsync(resourceGroupName, workspaceName, linkedServiceName, parameters).block(); + return beginCreateOrUpdate(resourceGroupName, workspaceName, linkedServiceName, parameters).getFinalResult(); } /** @@ -362,7 +413,8 @@ public LinkedServiceInner createOrUpdate(String resourceGroupName, String worksp @ServiceMethod(returns = ReturnType.SINGLE) public LinkedServiceInner createOrUpdate(String resourceGroupName, String workspaceName, String linkedServiceName, LinkedServiceInner parameters, Context context) { - return createOrUpdateAsync(resourceGroupName, workspaceName, linkedServiceName, parameters, context).block(); + return beginCreateOrUpdate(resourceGroupName, workspaceName, linkedServiceName, parameters, context) + .getFinalResult(); } /** @@ -399,11 +451,10 @@ private Mono>> deleteWithResponseAsync(String resource return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.delete(this.client.getEndpoint(), resourceGroupName, workspaceName, - linkedServiceName, apiVersion, this.client.getSubscriptionId(), accept, context)) + linkedServiceName, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -413,40 +464,39 @@ private Mono>> deleteWithResponseAsync(String resource * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. * @param linkedServiceName Name of the linked service. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Linked service resource container along with {@link Response} on successful completion of - * {@link Mono}. + * @return the top level Linked service resource container along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> deleteWithResponseAsync(String resourceGroupName, String workspaceName, - String linkedServiceName, Context context) { + private Response deleteWithResponse(String resourceGroupName, String workspaceName, + String linkedServiceName) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); } if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); } if (linkedServiceName == null) { - return Mono - .error(new IllegalArgumentException("Parameter linkedServiceName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter linkedServiceName is required and cannot be null.")); } if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), resourceGroupName, workspaceName, linkedServiceName, - apiVersion, this.client.getSubscriptionId(), accept, context); + return service.deleteSync(this.client.getEndpoint(), resourceGroupName, workspaceName, linkedServiceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, Context.NONE); } /** @@ -455,18 +505,40 @@ private Mono>> deleteWithResponseAsync(String resource * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. * @param linkedServiceName Name of the linked service. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of the top level Linked service resource container. + * @return the top level Linked service resource container along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, LinkedServiceInner> beginDeleteAsync(String resourceGroupName, - String workspaceName, String linkedServiceName) { - Mono>> mono - = deleteWithResponseAsync(resourceGroupName, workspaceName, linkedServiceName); - return this.client.getLroResult(mono, this.client.getHttpPipeline(), - LinkedServiceInner.class, LinkedServiceInner.class, this.client.getContext()); + @ServiceMethod(returns = ReturnType.SINGLE) + private Response deleteWithResponse(String resourceGroupName, String workspaceName, + String linkedServiceName, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (linkedServiceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter linkedServiceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.deleteSync(this.client.getEndpoint(), resourceGroupName, workspaceName, linkedServiceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); } /** @@ -475,7 +547,6 @@ private PollerFlux, LinkedServiceInner> beginDele * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. * @param linkedServiceName Name of the linked service. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. @@ -483,12 +554,11 @@ private PollerFlux, LinkedServiceInner> beginDele */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) private PollerFlux, LinkedServiceInner> beginDeleteAsync(String resourceGroupName, - String workspaceName, String linkedServiceName, Context context) { - context = this.client.mergeContext(context); + String workspaceName, String linkedServiceName) { Mono>> mono - = deleteWithResponseAsync(resourceGroupName, workspaceName, linkedServiceName, context); + = deleteWithResponseAsync(resourceGroupName, workspaceName, linkedServiceName); return this.client.getLroResult(mono, this.client.getHttpPipeline(), - LinkedServiceInner.class, LinkedServiceInner.class, context); + LinkedServiceInner.class, LinkedServiceInner.class, this.client.getContext()); } /** @@ -505,7 +575,9 @@ private PollerFlux, LinkedServiceInner> beginDele @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, LinkedServiceInner> beginDelete(String resourceGroupName, String workspaceName, String linkedServiceName) { - return this.beginDeleteAsync(resourceGroupName, workspaceName, linkedServiceName).getSyncPoller(); + Response response = deleteWithResponse(resourceGroupName, workspaceName, linkedServiceName); + return this.client.getLroResult(response, LinkedServiceInner.class, + LinkedServiceInner.class, Context.NONE); } /** @@ -523,7 +595,10 @@ public SyncPoller, LinkedServiceInner> beginDelet @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, LinkedServiceInner> beginDelete(String resourceGroupName, String workspaceName, String linkedServiceName, Context context) { - return this.beginDeleteAsync(resourceGroupName, workspaceName, linkedServiceName, context).getSyncPoller(); + Response response + = deleteWithResponse(resourceGroupName, workspaceName, linkedServiceName, context); + return this.client.getLroResult(response, LinkedServiceInner.class, + LinkedServiceInner.class, context); } /** @@ -544,25 +619,6 @@ private Mono deleteAsync(String resourceGroupName, String wo .flatMap(this.client::getLroFinalResultOrError); } - /** - * Deletes a linked service instance. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param linkedServiceName Name of the linked service. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Linked service resource container on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono deleteAsync(String resourceGroupName, String workspaceName, - String linkedServiceName, Context context) { - return beginDeleteAsync(resourceGroupName, workspaceName, linkedServiceName, context).last() - .flatMap(this.client::getLroFinalResultOrError); - } - /** * Deletes a linked service instance. * @@ -576,7 +632,7 @@ private Mono deleteAsync(String resourceGroupName, String wo */ @ServiceMethod(returns = ReturnType.SINGLE) public LinkedServiceInner delete(String resourceGroupName, String workspaceName, String linkedServiceName) { - return deleteAsync(resourceGroupName, workspaceName, linkedServiceName).block(); + return beginDelete(resourceGroupName, workspaceName, linkedServiceName).getFinalResult(); } /** @@ -594,7 +650,7 @@ public LinkedServiceInner delete(String resourceGroupName, String workspaceName, @ServiceMethod(returns = ReturnType.SINGLE) public LinkedServiceInner delete(String resourceGroupName, String workspaceName, String linkedServiceName, Context context) { - return deleteAsync(resourceGroupName, workspaceName, linkedServiceName, context).block(); + return beginDelete(resourceGroupName, workspaceName, linkedServiceName, context).getFinalResult(); } /** @@ -630,55 +686,13 @@ private Mono> getWithResponseAsync(String resourceG return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.get(this.client.getEndpoint(), resourceGroupName, workspaceName, - linkedServiceName, apiVersion, this.client.getSubscriptionId(), accept, context)) + linkedServiceName, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets a linked service instance. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param linkedServiceName Name of the linked service. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a linked service instance along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getWithResponseAsync(String resourceGroupName, String workspaceName, - String linkedServiceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (linkedServiceName == null) { - return Mono - .error(new IllegalArgumentException("Parameter linkedServiceName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), resourceGroupName, workspaceName, linkedServiceName, apiVersion, - this.client.getSubscriptionId(), accept, context); - } - /** * Gets a linked service instance. * @@ -712,7 +726,31 @@ private Mono getAsync(String resourceGroupName, String works @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(String resourceGroupName, String workspaceName, String linkedServiceName, Context context) { - return getWithResponseAsync(resourceGroupName, workspaceName, linkedServiceName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (linkedServiceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter linkedServiceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getSync(this.client.getEndpoint(), resourceGroupName, workspaceName, linkedServiceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); } /** @@ -760,11 +798,10 @@ private Mono> listByWorkspaceSinglePageAsync(S return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.listByWorkspace(this.client.getEndpoint(), resourceGroupName, workspaceName, - apiVersion, this.client.getSubscriptionId(), accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), null, null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -775,39 +812,14 @@ private Mono> listByWorkspaceSinglePageAsync(S * * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the linked services instances in a workspace along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return the linked services instances in a workspace as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByWorkspaceSinglePageAsync(String resourceGroupName, - String workspaceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service - .listByWorkspace(this.client.getEndpoint(), resourceGroupName, workspaceName, apiVersion, - this.client.getSubscriptionId(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), null, null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName) { + return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName)); } /** @@ -818,11 +830,35 @@ private Mono> listByWorkspaceSinglePageAsync(S * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the linked services instances in a workspace as paginated response with {@link PagedFlux}. + * @return the linked services instances in a workspace along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName) { - return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceSinglePage(String resourceGroupName, + String workspaceName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -834,12 +870,35 @@ private PagedFlux listByWorkspaceAsync(String resourceGroupN * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the linked services instances in a workspace as paginated response with {@link PagedFlux}. + * @return the linked services instances in a workspace along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName, + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceSinglePage(String resourceGroupName, String workspaceName, Context context) { - return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName, context)); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -854,7 +913,7 @@ private PagedFlux listByWorkspaceAsync(String resourceGroupN */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName) { - return new PagedIterable<>(listByWorkspaceAsync(resourceGroupName, workspaceName)); + return new PagedIterable<>(() -> listByWorkspaceSinglePage(resourceGroupName, workspaceName)); } /** @@ -871,6 +930,8 @@ public PagedIterable listByWorkspace(String resourceGroupNam @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName, Context context) { - return new PagedIterable<>(listByWorkspaceAsync(resourceGroupName, workspaceName, context)); + return new PagedIterable<>(() -> listByWorkspaceSinglePage(resourceGroupName, workspaceName, context)); } + + private static final ClientLogger LOGGER = new ClientLogger(LinkedServicesClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/LinkedStorageAccountsClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/LinkedStorageAccountsClientImpl.java index 14c65e99b288..4fc3b5dbc3fe 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/LinkedStorageAccountsClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/LinkedStorageAccountsClientImpl.java @@ -28,6 +28,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.LinkedStorageAccountsClient; import com.azure.resourcemanager.loganalytics.fluent.models.LinkedStorageAccountsResourceInner; import com.azure.resourcemanager.loganalytics.models.DataSourceType; @@ -64,7 +65,7 @@ public final class LinkedStorageAccountsClientImpl implements LinkedStorageAccou * by the proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientLinkedStorageAccounts") public interface LinkedStorageAccountsService { @Headers({ "Content-Type: application/json" }) @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedStorageAccounts/{dataSourceType}") @@ -77,6 +78,17 @@ Mono> createOrUpdate(@HostParam("$h @BodyParam("application/json") LinkedStorageAccountsResourceInner parameters, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedStorageAccounts/{dataSourceType}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response createOrUpdateSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("dataSourceType") DataSourceType dataSourceType, + @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + @BodyParam("application/json") LinkedStorageAccountsResourceInner parameters, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedStorageAccounts/{dataSourceType}") @ExpectedResponses({ 200 }) @@ -86,6 +98,15 @@ Mono> delete(@HostParam("$host") String endpoint, @PathParam("dataSourceType") DataSourceType dataSourceType, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, Context context); + @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) + @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedStorageAccounts/{dataSourceType}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response deleteSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("dataSourceType") DataSourceType dataSourceType, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedStorageAccounts/{dataSourceType}") @ExpectedResponses({ 200 }) @@ -95,6 +116,15 @@ Mono> get(@HostParam("$host") Strin @PathParam("dataSourceType") DataSourceType dataSourceType, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedStorageAccounts/{dataSourceType}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("dataSourceType") DataSourceType dataSourceType, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedStorageAccounts") @ExpectedResponses({ 200 }) @@ -103,6 +133,15 @@ Mono> listByWorkspace(@HostParam("$hos @PathParam("subscriptionId") String subscriptionId, @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, @PathParam("workspaceName") String workspaceName, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/linkedStorageAccounts") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByWorkspaceSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, + @PathParam("workspaceName") String workspaceName, @HeaderParam("Accept") String accept, Context context); } /** @@ -145,63 +184,14 @@ private Mono> createOrUpdateWithRes } else { parameters.validate(); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, workspaceName, - dataSourceType, this.client.getSubscriptionId(), apiVersion, parameters, accept, context)) + dataSourceType, this.client.getSubscriptionId(), this.client.getApiVersion(), parameters, accept, + context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Create or Update a link relation between current workspace and a group of storage accounts of a specific data - * source type. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param dataSourceType Linked storage accounts type. - * @param parameters The parameters required to create or update linked storage accounts. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return linked storage accounts top level resource container along with {@link Response} on successful completion - * of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> createOrUpdateWithResponseAsync(String resourceGroupName, - String workspaceName, DataSourceType dataSourceType, LinkedStorageAccountsResourceInner parameters, - Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (dataSourceType == null) { - return Mono.error(new IllegalArgumentException("Parameter dataSourceType is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (parameters == null) { - return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); - } else { - parameters.validate(); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, workspaceName, dataSourceType, - this.client.getSubscriptionId(), apiVersion, parameters, accept, context); - } - /** * Create or Update a link relation between current workspace and a group of storage accounts of a specific data * source type. @@ -240,8 +230,37 @@ private Mono createOrUpdateAsync(String reso public Response createOrUpdateWithResponse(String resourceGroupName, String workspaceName, DataSourceType dataSourceType, LinkedStorageAccountsResourceInner parameters, Context context) { - return createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, dataSourceType, parameters, context) - .block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (dataSourceType == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter dataSourceType is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.createOrUpdateSync(this.client.getEndpoint(), resourceGroupName, workspaceName, dataSourceType, + this.client.getSubscriptionId(), this.client.getApiVersion(), parameters, accept, context); } /** @@ -296,52 +315,12 @@ private Mono> deleteWithResponseAsync(String resourceGroupName, S return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; return FluxUtil .withContext(context -> service.delete(this.client.getEndpoint(), resourceGroupName, workspaceName, - dataSourceType, apiVersion, this.client.getSubscriptionId(), context)) + dataSourceType, this.client.getApiVersion(), this.client.getSubscriptionId(), context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Deletes all linked storage accounts of a specific data source type associated with the specified workspace. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param dataSourceType Linked storage accounts type. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> deleteWithResponseAsync(String resourceGroupName, String workspaceName, - DataSourceType dataSourceType, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (dataSourceType == null) { - return Mono.error(new IllegalArgumentException("Parameter dataSourceType is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), resourceGroupName, workspaceName, dataSourceType, apiVersion, - this.client.getSubscriptionId(), context); - } - /** * Deletes all linked storage accounts of a specific data source type associated with the specified workspace. * @@ -374,7 +353,30 @@ private Mono deleteAsync(String resourceGroupName, String workspaceName, D @ServiceMethod(returns = ReturnType.SINGLE) public Response deleteWithResponse(String resourceGroupName, String workspaceName, DataSourceType dataSourceType, Context context) { - return deleteWithResponseAsync(resourceGroupName, workspaceName, dataSourceType, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (dataSourceType == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter dataSourceType is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + return service.deleteSync(this.client.getEndpoint(), resourceGroupName, workspaceName, dataSourceType, + this.client.getApiVersion(), this.client.getSubscriptionId(), context); } /** @@ -425,55 +427,13 @@ private Mono> getWithResponseAsync( return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.get(this.client.getEndpoint(), resourceGroupName, workspaceName, - dataSourceType, apiVersion, this.client.getSubscriptionId(), accept, context)) + dataSourceType, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets all linked storage account of a specific data source type associated with the specified workspace. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param dataSourceType Linked storage accounts type. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return all linked storage account of a specific data source type associated with the specified workspace along - * with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getWithResponseAsync(String resourceGroupName, - String workspaceName, DataSourceType dataSourceType, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (dataSourceType == null) { - return Mono.error(new IllegalArgumentException("Parameter dataSourceType is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), resourceGroupName, workspaceName, dataSourceType, apiVersion, - this.client.getSubscriptionId(), accept, context); - } - /** * Gets all linked storage account of a specific data source type associated with the specified workspace. * @@ -509,7 +469,31 @@ private Mono getAsync(String resourceGroupNa @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(String resourceGroupName, String workspaceName, DataSourceType dataSourceType, Context context) { - return getWithResponseAsync(resourceGroupName, workspaceName, dataSourceType, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (dataSourceType == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter dataSourceType is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getSync(this.client.getEndpoint(), resourceGroupName, workspaceName, dataSourceType, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); } /** @@ -559,11 +543,10 @@ public LinkedStorageAccountsResourceInner get(String resourceGroupName, String w if (workspaceName == null) { return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.listByWorkspace(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, apiVersion, workspaceName, accept, context)) + resourceGroupName, this.client.getApiVersion(), workspaceName, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), null, null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -575,39 +558,16 @@ public LinkedStorageAccountsResourceInner get(String resourceGroupName, String w * * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return all linked storage accounts associated with the specified workspace, storage accounts will be sorted by - * their data source type along with {@link PagedResponse} on successful completion of {@link Mono}. + * their data source type as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> - listByWorkspaceSinglePageAsync(String resourceGroupName, String workspaceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service - .listByWorkspace(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, apiVersion, - workspaceName, accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), null, null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listByWorkspaceAsync(String resourceGroupName, + String workspaceName) { + return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName)); } /** @@ -620,12 +580,35 @@ public LinkedStorageAccountsResourceInner get(String resourceGroupName, String w * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return all linked storage accounts associated with the specified workspace, storage accounts will be sorted by - * their data source type as paginated response with {@link PagedFlux}. + * their data source type along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByWorkspaceAsync(String resourceGroupName, + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceSinglePage(String resourceGroupName, String workspaceName) { - return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName)); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + this.client.getApiVersion(), workspaceName, accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -639,12 +622,35 @@ private PagedFlux listByWorkspaceAsync(Strin * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return all linked storage accounts associated with the specified workspace, storage accounts will be sorted by - * their data source type as paginated response with {@link PagedFlux}. + * their data source type along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByWorkspaceAsync(String resourceGroupName, + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceSinglePage(String resourceGroupName, String workspaceName, Context context) { - return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName, context)); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + this.client.getApiVersion(), workspaceName, accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -662,7 +668,7 @@ private PagedFlux listByWorkspaceAsync(Strin @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName) { - return new PagedIterable<>(listByWorkspaceAsync(resourceGroupName, workspaceName)); + return new PagedIterable<>(() -> listByWorkspaceSinglePage(resourceGroupName, workspaceName)); } /** @@ -681,6 +687,8 @@ public PagedIterable listByWorkspace(String @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName, Context context) { - return new PagedIterable<>(listByWorkspaceAsync(resourceGroupName, workspaceName, context)); + return new PagedIterable<>(() -> listByWorkspaceSinglePage(resourceGroupName, workspaceName, context)); } + + private static final ClientLogger LOGGER = new ClientLogger(LinkedStorageAccountsClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/LogAnalyticsQueryPackImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/LogAnalyticsQueryPackImpl.java index 96d8b006e861..f2dfcbe42f25 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/LogAnalyticsQueryPackImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/LogAnalyticsQueryPackImpl.java @@ -5,6 +5,7 @@ package com.azure.resourcemanager.loganalytics.implementation; import com.azure.core.management.Region; +import com.azure.core.management.SystemData; import com.azure.core.util.Context; import com.azure.resourcemanager.loganalytics.fluent.models.LogAnalyticsQueryPackInner; import com.azure.resourcemanager.loganalytics.models.LogAnalyticsQueryPack; @@ -44,6 +45,10 @@ public Map tags() { } } + public SystemData systemData() { + return this.innerModel().systemData(); + } + public String queryPackId() { return this.innerModel().queryPackId(); } @@ -179,6 +184,6 @@ public LogAnalyticsQueryPackImpl withTags(Map tags) { } private boolean isInCreateMode() { - return this.innerModel().id() == null; + return this.innerModel() == null || this.innerModel().id() == null; } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/ManagementGroupsClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/ManagementGroupsClientImpl.java index 411b94fc8e02..e7b959814944 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/ManagementGroupsClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/ManagementGroupsClientImpl.java @@ -25,6 +25,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.ManagementGroupsClient; import com.azure.resourcemanager.loganalytics.fluent.models.ManagementGroupInner; import com.azure.resourcemanager.loganalytics.models.WorkspaceListManagementGroupsResult; @@ -60,7 +61,7 @@ public final class ManagementGroupsClientImpl implements ManagementGroupsClient * proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientManagementGroups") public interface ManagementGroupsService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/managementGroups") @@ -70,6 +71,15 @@ Mono> list(@HostParam("$host") Str @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/managementGroups") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); } /** @@ -101,11 +111,10 @@ private Mono> listSinglePageAsync(String res return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.list(this.client.getEndpoint(), resourceGroupName, workspaceName, - apiVersion, this.client.getSubscriptionId(), accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), null, null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -116,39 +125,14 @@ private Mono> listSinglePageAsync(String res * * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of management groups connected to a workspace along with {@link PagedResponse} on successful - * completion of {@link Mono}. + * @return a list of management groups connected to a workspace as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSinglePageAsync(String resourceGroupName, - String workspaceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service - .list(this.client.getEndpoint(), resourceGroupName, workspaceName, apiVersion, - this.client.getSubscriptionId(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), null, null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listAsync(String resourceGroupName, String workspaceName) { + return new PagedFlux<>(() -> listSinglePageAsync(resourceGroupName, workspaceName)); } /** @@ -159,11 +143,34 @@ private Mono> listSinglePageAsync(String res * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of management groups connected to a workspace as paginated response with {@link PagedFlux}. + * @return a list of management groups connected to a workspace along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync(String resourceGroupName, String workspaceName) { - return new PagedFlux<>(() -> listSinglePageAsync(resourceGroupName, workspaceName)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage(String resourceGroupName, String workspaceName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listSync(this.client.getEndpoint(), resourceGroupName, workspaceName, this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -175,11 +182,35 @@ private PagedFlux listAsync(String resourceGroupName, Stri * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of management groups connected to a workspace as paginated response with {@link PagedFlux}. + * @return a list of management groups connected to a workspace along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync(String resourceGroupName, String workspaceName, Context context) { - return new PagedFlux<>(() -> listSinglePageAsync(resourceGroupName, workspaceName, context)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage(String resourceGroupName, String workspaceName, + Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listSync(this.client.getEndpoint(), resourceGroupName, workspaceName, this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -194,7 +225,7 @@ private PagedFlux listAsync(String resourceGroupName, Stri */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list(String resourceGroupName, String workspaceName) { - return new PagedIterable<>(listAsync(resourceGroupName, workspaceName)); + return new PagedIterable<>(() -> listSinglePage(resourceGroupName, workspaceName)); } /** @@ -210,6 +241,8 @@ public PagedIterable list(String resourceGroupName, String */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list(String resourceGroupName, String workspaceName, Context context) { - return new PagedIterable<>(listAsync(resourceGroupName, workspaceName, context)); + return new PagedIterable<>(() -> listSinglePage(resourceGroupName, workspaceName, context)); } + + private static final ClientLogger LOGGER = new ClientLogger(ManagementGroupsClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/NetworkSecurityPerimeterConfigurationImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/NetworkSecurityPerimeterConfigurationImpl.java new file mode 100644 index 000000000000..ae651a8b7628 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/NetworkSecurityPerimeterConfigurationImpl.java @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.implementation; + +import com.azure.core.management.SystemData; +import com.azure.resourcemanager.loganalytics.fluent.models.NetworkSecurityPerimeterConfigurationInner; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeterConfiguration; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeterConfigurationProperties; + +public final class NetworkSecurityPerimeterConfigurationImpl implements NetworkSecurityPerimeterConfiguration { + private NetworkSecurityPerimeterConfigurationInner innerObject; + + private final com.azure.resourcemanager.loganalytics.LogAnalyticsManager serviceManager; + + NetworkSecurityPerimeterConfigurationImpl(NetworkSecurityPerimeterConfigurationInner innerObject, + com.azure.resourcemanager.loganalytics.LogAnalyticsManager serviceManager) { + this.innerObject = innerObject; + this.serviceManager = serviceManager; + } + + public String id() { + return this.innerModel().id(); + } + + public String name() { + return this.innerModel().name(); + } + + public String type() { + return this.innerModel().type(); + } + + public NetworkSecurityPerimeterConfigurationProperties properties() { + return this.innerModel().properties(); + } + + public SystemData systemData() { + return this.innerModel().systemData(); + } + + public NetworkSecurityPerimeterConfigurationInner innerModel() { + return this.innerObject; + } + + private com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager() { + return this.serviceManager; + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/OperationStatusesClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/OperationStatusesClientImpl.java index f0da81820b4d..9f3f7c2ae27c 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/OperationStatusesClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/OperationStatusesClientImpl.java @@ -21,6 +21,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.OperationStatusesClient; import com.azure.resourcemanager.loganalytics.fluent.models.OperationStatusInner; import reactor.core.publisher.Mono; @@ -55,7 +56,7 @@ public final class OperationStatusesClientImpl implements OperationStatusesClien * the proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientOperationStatuses") public interface OperationStatusesService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/providers/Microsoft.OperationalInsights/locations/{location}/operationStatuses/{asyncOperationId}") @@ -65,6 +66,15 @@ Mono> get(@HostParam("$host") String endpoint, @PathParam("location") String location, @PathParam("asyncOperationId") String asyncOperationId, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/providers/Microsoft.OperationalInsights/locations/{location}/operationStatuses/{asyncOperationId}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getSync(@HostParam("$host") String endpoint, + @PathParam("location") String location, @PathParam("asyncOperationId") String asyncOperationId, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); } /** @@ -95,51 +105,13 @@ private Mono> getWithResponseAsync(String locatio return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.get(this.client.getEndpoint(), location, asyncOperationId, apiVersion, - this.client.getSubscriptionId(), accept, context)) + .withContext(context -> service.get(this.client.getEndpoint(), location, asyncOperationId, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Get the status of a long running azure asynchronous operation. - * - * @param location The region name of operation. - * @param asyncOperationId The operation Id. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the status of a long running azure asynchronous operation along with {@link Response} on successful - * completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getWithResponseAsync(String location, String asyncOperationId, - Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (location == null) { - return Mono.error(new IllegalArgumentException("Parameter location is required and cannot be null.")); - } - if (asyncOperationId == null) { - return Mono - .error(new IllegalArgumentException("Parameter asyncOperationId is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), location, asyncOperationId, apiVersion, - this.client.getSubscriptionId(), accept, context); - } - /** * Get the status of a long running azure asynchronous operation. * @@ -168,7 +140,27 @@ private Mono getAsync(String location, String asyncOperati */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(String location, String asyncOperationId, Context context) { - return getWithResponseAsync(location, asyncOperationId, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (location == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter location is required and cannot be null.")); + } + if (asyncOperationId == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter asyncOperationId is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getSync(this.client.getEndpoint(), location, asyncOperationId, this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, context); } /** @@ -185,4 +177,6 @@ public Response getWithResponse(String location, String as public OperationStatusInner get(String location, String asyncOperationId) { return getWithResponse(location, asyncOperationId, Context.NONE).getValue(); } + + private static final ClientLogger LOGGER = new ClientLogger(OperationStatusesClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/OperationalInsightsManagementClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/OperationalInsightsManagementClientImpl.java index d0f29df2b257..558e2b218eee 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/OperationalInsightsManagementClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/OperationalInsightsManagementClientImpl.java @@ -15,12 +15,15 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.management.polling.PollResult; import com.azure.core.management.polling.PollerFactory; +import com.azure.core.management.polling.SyncPollerFactory; +import com.azure.core.util.BinaryData; import com.azure.core.util.Context; import com.azure.core.util.CoreUtils; import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.polling.AsyncPollResponse; import com.azure.core.util.polling.LongRunningOperationStatus; import com.azure.core.util.polling.PollerFlux; +import com.azure.core.util.polling.SyncPoller; import com.azure.core.util.serializer.SerializerAdapter; import com.azure.core.util.serializer.SerializerEncoding; import com.azure.resourcemanager.loganalytics.fluent.AvailableServiceTiersClient; @@ -42,6 +45,7 @@ import com.azure.resourcemanager.loganalytics.fluent.SchemasClient; import com.azure.resourcemanager.loganalytics.fluent.SharedKeysOperationsClient; import com.azure.resourcemanager.loganalytics.fluent.StorageInsightConfigsClient; +import com.azure.resourcemanager.loganalytics.fluent.SummaryLogsOperationsClient; import com.azure.resourcemanager.loganalytics.fluent.TablesClient; import com.azure.resourcemanager.loganalytics.fluent.UsagesClient; import com.azure.resourcemanager.loganalytics.fluent.WorkspacePurgesClient; @@ -88,6 +92,20 @@ public String getEndpoint() { return this.endpoint; } + /** + * Api Version. + */ + private final String apiVersion; + + /** + * Gets Api Version. + * + * @return the apiVersion value. + */ + public String getApiVersion() { + return this.apiVersion; + } + /** * The HTTP pipeline to send requests through. */ @@ -131,31 +149,31 @@ public Duration getDefaultPollInterval() { } /** - * The QueryPacksClient object to access its operations. + * The AvailableServiceTiersClient object to access its operations. */ - private final QueryPacksClient queryPacks; + private final AvailableServiceTiersClient availableServiceTiers; /** - * Gets the QueryPacksClient object to access its operations. + * Gets the AvailableServiceTiersClient object to access its operations. * - * @return the QueryPacksClient object. + * @return the AvailableServiceTiersClient object. */ - public QueryPacksClient getQueryPacks() { - return this.queryPacks; + public AvailableServiceTiersClient getAvailableServiceTiers() { + return this.availableServiceTiers; } /** - * The QueriesClient object to access its operations. + * The ClustersClient object to access its operations. */ - private final QueriesClient queries; + private final ClustersClient clusters; /** - * Gets the QueriesClient object to access its operations. + * Gets the ClustersClient object to access its operations. * - * @return the QueriesClient object. + * @return the ClustersClient object. */ - public QueriesClient getQueries() { - return this.queries; + public ClustersClient getClusters() { + return this.clusters; } /** @@ -186,6 +204,20 @@ public DataSourcesClient getDataSources() { return this.dataSources; } + /** + * The GatewaysClient object to access its operations. + */ + private final GatewaysClient gateways; + + /** + * Gets the GatewaysClient object to access its operations. + * + * @return the GatewaysClient object. + */ + public GatewaysClient getGateways() { + return this.gateways; + } + /** * The IntelligencePacksClient object to access its operations. */ @@ -243,59 +275,59 @@ public ManagementGroupsClient getManagementGroups() { } /** - * The OperationStatusesClient object to access its operations. + * The OperationsClient object to access its operations. */ - private final OperationStatusesClient operationStatuses; + private final OperationsClient operations; /** - * Gets the OperationStatusesClient object to access its operations. + * Gets the OperationsClient object to access its operations. * - * @return the OperationStatusesClient object. + * @return the OperationsClient object. */ - public OperationStatusesClient getOperationStatuses() { - return this.operationStatuses; + public OperationsClient getOperations() { + return this.operations; } /** - * The SharedKeysOperationsClient object to access its operations. + * The OperationStatusesClient object to access its operations. */ - private final SharedKeysOperationsClient sharedKeysOperations; + private final OperationStatusesClient operationStatuses; /** - * Gets the SharedKeysOperationsClient object to access its operations. + * Gets the OperationStatusesClient object to access its operations. * - * @return the SharedKeysOperationsClient object. + * @return the OperationStatusesClient object. */ - public SharedKeysOperationsClient getSharedKeysOperations() { - return this.sharedKeysOperations; + public OperationStatusesClient getOperationStatuses() { + return this.operationStatuses; } /** - * The UsagesClient object to access its operations. + * The QueriesClient object to access its operations. */ - private final UsagesClient usages; + private final QueriesClient queries; /** - * Gets the UsagesClient object to access its operations. + * Gets the QueriesClient object to access its operations. * - * @return the UsagesClient object. + * @return the QueriesClient object. */ - public UsagesClient getUsages() { - return this.usages; + public QueriesClient getQueries() { + return this.queries; } /** - * The StorageInsightConfigsClient object to access its operations. + * The QueryPacksClient object to access its operations. */ - private final StorageInsightConfigsClient storageInsightConfigs; + private final QueryPacksClient queryPacks; /** - * Gets the StorageInsightConfigsClient object to access its operations. + * Gets the QueryPacksClient object to access its operations. * - * @return the StorageInsightConfigsClient object. + * @return the QueryPacksClient object. */ - public StorageInsightConfigsClient getStorageInsightConfigs() { - return this.storageInsightConfigs; + public QueryPacksClient getQueryPacks() { + return this.queryPacks; } /** @@ -313,87 +345,87 @@ public SavedSearchesClient getSavedSearches() { } /** - * The AvailableServiceTiersClient object to access its operations. + * The SchemasClient object to access its operations. */ - private final AvailableServiceTiersClient availableServiceTiers; + private final SchemasClient schemas; /** - * Gets the AvailableServiceTiersClient object to access its operations. + * Gets the SchemasClient object to access its operations. * - * @return the AvailableServiceTiersClient object. + * @return the SchemasClient object. */ - public AvailableServiceTiersClient getAvailableServiceTiers() { - return this.availableServiceTiers; + public SchemasClient getSchemas() { + return this.schemas; } /** - * The GatewaysClient object to access its operations. + * The SharedKeysOperationsClient object to access its operations. */ - private final GatewaysClient gateways; + private final SharedKeysOperationsClient sharedKeysOperations; /** - * Gets the GatewaysClient object to access its operations. + * Gets the SharedKeysOperationsClient object to access its operations. * - * @return the GatewaysClient object. + * @return the SharedKeysOperationsClient object. */ - public GatewaysClient getGateways() { - return this.gateways; + public SharedKeysOperationsClient getSharedKeysOperations() { + return this.sharedKeysOperations; } /** - * The SchemasClient object to access its operations. + * The StorageInsightConfigsClient object to access its operations. */ - private final SchemasClient schemas; + private final StorageInsightConfigsClient storageInsightConfigs; /** - * Gets the SchemasClient object to access its operations. + * Gets the StorageInsightConfigsClient object to access its operations. * - * @return the SchemasClient object. + * @return the StorageInsightConfigsClient object. */ - public SchemasClient getSchemas() { - return this.schemas; + public StorageInsightConfigsClient getStorageInsightConfigs() { + return this.storageInsightConfigs; } /** - * The WorkspacePurgesClient object to access its operations. + * The TablesClient object to access its operations. */ - private final WorkspacePurgesClient workspacePurges; + private final TablesClient tables; /** - * Gets the WorkspacePurgesClient object to access its operations. + * Gets the TablesClient object to access its operations. * - * @return the WorkspacePurgesClient object. + * @return the TablesClient object. */ - public WorkspacePurgesClient getWorkspacePurges() { - return this.workspacePurges; + public TablesClient getTables() { + return this.tables; } /** - * The ClustersClient object to access its operations. + * The UsagesClient object to access its operations. */ - private final ClustersClient clusters; + private final UsagesClient usages; /** - * Gets the ClustersClient object to access its operations. + * Gets the UsagesClient object to access its operations. * - * @return the ClustersClient object. + * @return the UsagesClient object. */ - public ClustersClient getClusters() { - return this.clusters; + public UsagesClient getUsages() { + return this.usages; } /** - * The OperationsClient object to access its operations. + * The WorkspacePurgesClient object to access its operations. */ - private final OperationsClient operations; + private final WorkspacePurgesClient workspacePurges; /** - * Gets the OperationsClient object to access its operations. + * Gets the WorkspacePurgesClient object to access its operations. * - * @return the OperationsClient object. + * @return the WorkspacePurgesClient object. */ - public OperationsClient getOperations() { - return this.operations; + public WorkspacePurgesClient getWorkspacePurges() { + return this.workspacePurges; } /** @@ -425,17 +457,17 @@ public DeletedWorkspacesClient getDeletedWorkspaces() { } /** - * The TablesClient object to access its operations. + * The SummaryLogsOperationsClient object to access its operations. */ - private final TablesClient tables; + private final SummaryLogsOperationsClient summaryLogsOperations; /** - * Gets the TablesClient object to access its operations. + * Gets the SummaryLogsOperationsClient object to access its operations. * - * @return the TablesClient object. + * @return the SummaryLogsOperationsClient object. */ - public TablesClient getTables() { - return this.tables; + public SummaryLogsOperationsClient getSummaryLogsOperations() { + return this.summaryLogsOperations; } /** @@ -455,28 +487,30 @@ public TablesClient getTables() { this.defaultPollInterval = defaultPollInterval; this.subscriptionId = subscriptionId; this.endpoint = endpoint; - this.queryPacks = new QueryPacksClientImpl(this); - this.queries = new QueriesClientImpl(this); + this.apiVersion = "2025-07-01"; + this.availableServiceTiers = new AvailableServiceTiersClientImpl(this); + this.clusters = new ClustersClientImpl(this); this.dataExports = new DataExportsClientImpl(this); this.dataSources = new DataSourcesClientImpl(this); + this.gateways = new GatewaysClientImpl(this); this.intelligencePacks = new IntelligencePacksClientImpl(this); this.linkedServices = new LinkedServicesClientImpl(this); this.linkedStorageAccounts = new LinkedStorageAccountsClientImpl(this); this.managementGroups = new ManagementGroupsClientImpl(this); + this.operations = new OperationsClientImpl(this); this.operationStatuses = new OperationStatusesClientImpl(this); - this.sharedKeysOperations = new SharedKeysOperationsClientImpl(this); - this.usages = new UsagesClientImpl(this); - this.storageInsightConfigs = new StorageInsightConfigsClientImpl(this); + this.queries = new QueriesClientImpl(this); + this.queryPacks = new QueryPacksClientImpl(this); this.savedSearches = new SavedSearchesClientImpl(this); - this.availableServiceTiers = new AvailableServiceTiersClientImpl(this); - this.gateways = new GatewaysClientImpl(this); this.schemas = new SchemasClientImpl(this); + this.sharedKeysOperations = new SharedKeysOperationsClientImpl(this); + this.storageInsightConfigs = new StorageInsightConfigsClientImpl(this); + this.tables = new TablesClientImpl(this); + this.usages = new UsagesClientImpl(this); this.workspacePurges = new WorkspacePurgesClientImpl(this); - this.clusters = new ClustersClientImpl(this); - this.operations = new OperationsClientImpl(this); this.workspaces = new WorkspacesClientImpl(this); this.deletedWorkspaces = new DeletedWorkspacesClientImpl(this); - this.tables = new TablesClientImpl(this); + this.summaryLogsOperations = new SummaryLogsOperationsClientImpl(this); } /** @@ -516,6 +550,23 @@ public PollerFlux, U> getLroResult(Mono type of poll result. + * @param type of final result. + * @return SyncPoller for poll result and final result. + */ + public SyncPoller, U> getLroResult(Response activationResponse, + Type pollResultType, Type finalResultType, Context context) { + return SyncPollerFactory.create(serializerAdapter, httpPipeline, pollResultType, finalResultType, + defaultPollInterval, () -> activationResponse, context); + } + /** * Gets the final result, or an error, based on last async poll response. * diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/OperationsClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/OperationsClientImpl.java index 77996dac2fc7..555a84184171 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/OperationsClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/OperationsClientImpl.java @@ -25,6 +25,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.OperationsClient; import com.azure.resourcemanager.loganalytics.fluent.models.OperationInner; import com.azure.resourcemanager.loganalytics.models.OperationListResult; @@ -60,7 +61,7 @@ public final class OperationsClientImpl implements OperationsClient { * service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientOperations") public interface OperationsService { @Headers({ "Content-Type: application/json" }) @Get("/providers/Microsoft.OperationalInsights/operations") @@ -69,12 +70,26 @@ public interface OperationsService { Mono> list(@HostParam("$host") String endpoint, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/providers/Microsoft.OperationalInsights/operations") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listSync(@HostParam("$host") String endpoint, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("{nextLink}") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) Mono> listNext(@PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listNextSync(@PathParam(value = "nextLink", encoded = true) String nextLink, + @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); } /** @@ -91,9 +106,10 @@ private Mono> listSinglePageAsync() { return Mono.error( new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; - return FluxUtil.withContext(context -> service.list(this.client.getEndpoint(), apiVersion, accept, context)) + return FluxUtil + .withContext( + context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -102,25 +118,13 @@ private Mono> listSinglePageAsync() { /** * Lists all of the available OperationalInsights Rest API operations. * - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list solution operations along with {@link PagedResponse} on successful - * completion of {@link Mono}. + * @return result of the request to list solution operations as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSinglePageAsync(Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - final String apiVersion = "2022-10-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.list(this.client.getEndpoint(), apiVersion, accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listAsync() { + return new PagedFlux<>(() -> listSinglePageAsync(), nextLink -> listNextSinglePageAsync(nextLink)); } /** @@ -128,11 +132,20 @@ private Mono> listSinglePageAsync(Context context) * * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list solution operations as paginated response with {@link PagedFlux}. + * @return result of the request to list solution operations along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync() { - return new PagedFlux<>(() -> listSinglePageAsync(), nextLink -> listNextSinglePageAsync(nextLink)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage() { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -142,12 +155,20 @@ private PagedFlux listAsync() { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list solution operations as paginated response with {@link PagedFlux}. + * @return result of the request to list solution operations along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync(Context context) { - return new PagedFlux<>(() -> listSinglePageAsync(context), - nextLink -> listNextSinglePageAsync(nextLink, context)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage(Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -159,7 +180,7 @@ private PagedFlux listAsync(Context context) { */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list() { - return new PagedIterable<>(listAsync()); + return new PagedIterable<>(() -> listSinglePage(), nextLink -> listNextSinglePage(nextLink)); } /** @@ -173,7 +194,7 @@ public PagedIterable list() { */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list(Context context) { - return new PagedIterable<>(listAsync(context)); + return new PagedIterable<>(() -> listSinglePage(context), nextLink -> listNextSinglePage(nextLink, context)); } /** @@ -202,6 +223,33 @@ private Mono> listNextSinglePageAsync(String nextL .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return result of the request to list solution operations along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + /** * Get the next page of items. * @@ -210,22 +258,24 @@ private Mono> listNextSinglePageAsync(String nextL * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list solution operations along with {@link PagedResponse} on successful - * completion of {@link Mono}. + * @return result of the request to list solution operations along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listNextSinglePageAsync(String nextLink, Context context) { + private PagedResponse listNextSinglePage(String nextLink, Context context) { if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); } if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.listNext(nextLink, this.client.getEndpoint(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + Response res = service.listNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } + + private static final ClientLogger LOGGER = new ClientLogger(OperationsClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/QueriesClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/QueriesClientImpl.java index 8925e741cf34..bb2500b9b4d2 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/QueriesClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/QueriesClientImpl.java @@ -30,6 +30,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.QueriesClient; import com.azure.resourcemanager.loganalytics.fluent.models.LogAnalyticsQueryPackQueryInner; import com.azure.resourcemanager.loganalytics.models.LogAnalyticsQueryPackQueryListResult; @@ -65,7 +66,7 @@ public final class QueriesClientImpl implements QueriesClient { * service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientQueries") public interface QueriesService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}/queries") @@ -78,6 +79,17 @@ Mono> list(@HostParam("$host") St @QueryParam("includeBody") Boolean includeBody, @QueryParam("$skipToken") String skipToken, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}/queries") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("queryPackName") String queryPackName, + @QueryParam("api-version") String apiVersion, @QueryParam("$top") Long top, + @QueryParam("includeBody") Boolean includeBody, @QueryParam("$skipToken") String skipToken, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}/queries/search") @ExpectedResponses({ 200 }) @@ -90,6 +102,18 @@ Mono> search(@HostParam("$host") @BodyParam("application/json") LogAnalyticsQueryPackQuerySearchProperties querySearchProperties, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}/queries/search") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response searchSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("queryPackName") String queryPackName, + @QueryParam("api-version") String apiVersion, @QueryParam("$top") Long top, + @QueryParam("includeBody") Boolean includeBody, @QueryParam("$skipToken") String skipToken, + @BodyParam("application/json") LogAnalyticsQueryPackQuerySearchProperties querySearchProperties, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}/queries/{id}") @ExpectedResponses({ 200 }) @@ -100,6 +124,16 @@ Mono> get(@HostParam("$host") String e @PathParam("id") String id, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}/queries/{id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("queryPackName") String queryPackName, + @PathParam("id") String id, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}/queries/{id}") @ExpectedResponses({ 200 }) @@ -111,6 +145,17 @@ Mono> put(@HostParam("$host") String e @BodyParam("application/json") LogAnalyticsQueryPackQueryInner queryPayload, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}/queries/{id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response putSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("queryPackName") String queryPackName, + @PathParam("id") String id, @QueryParam("api-version") String apiVersion, + @BodyParam("application/json") LogAnalyticsQueryPackQueryInner queryPayload, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Patch("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}/queries/{id}") @ExpectedResponses({ 200 }) @@ -122,6 +167,17 @@ Mono> update(@HostParam("$host") Strin @BodyParam("application/json") LogAnalyticsQueryPackQueryInner queryPayload, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Patch("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}/queries/{id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response updateSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("queryPackName") String queryPackName, + @PathParam("id") String id, @QueryParam("api-version") String apiVersion, + @BodyParam("application/json") LogAnalyticsQueryPackQueryInner queryPayload, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Delete("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}/queries/{id}") @ExpectedResponses({ 200, 204 }) @@ -132,6 +188,16 @@ Mono> delete(@HostParam("$host") String endpoint, @PathParam("id") String id, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Delete("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}/queries/{id}") + @ExpectedResponses({ 200, 204 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response deleteSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("queryPackName") String queryPackName, + @PathParam("id") String id, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("{nextLink}") @ExpectedResponses({ 200 }) @@ -140,6 +206,14 @@ Mono> listNext( @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listNextSync( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("{nextLink}") @ExpectedResponses({ 200 }) @@ -147,6 +221,14 @@ Mono> listNext( Mono> searchNext( @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response searchNextSync( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @HeaderParam("Accept") String accept, Context context); } /** @@ -182,11 +264,11 @@ private Mono> listSinglePageAsync if (queryPackName == null) { return Mono.error(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); } - final String apiVersion = "2019-09-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, queryPackName, apiVersion, top, includeBody, skipToken, accept, context)) + .withContext( + context -> service.list(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + queryPackName, this.client.getApiVersion(), top, includeBody, skipToken, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -201,39 +283,16 @@ private Mono> listSinglePageAsync * @param includeBody Flag indicating whether or not to return the body of each applicable query. If false, only * return the query information. * @param skipToken Base64 encoded token used to fetch the next page of items. Default is null. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of Queries defined within a Log Analytics QueryPack along with {@link PagedResponse} on successful - * completion of {@link Mono}. + * @return a list of Queries defined within a Log Analytics QueryPack as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSinglePageAsync(String resourceGroupName, - String queryPackName, Long top, Boolean includeBody, String skipToken, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (queryPackName == null) { - return Mono.error(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); - } - final String apiVersion = "2019-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service - .list(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, queryPackName, - apiVersion, top, includeBody, skipToken, accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listAsync(String resourceGroupName, String queryPackName, + Long top, Boolean includeBody, String skipToken) { + return new PagedFlux<>(() -> listSinglePageAsync(resourceGroupName, queryPackName, top, includeBody, skipToken), + nextLink -> listNextSinglePageAsync(nextLink)); } /** @@ -241,18 +300,16 @@ private Mono> listSinglePageAsync * * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param queryPackName The name of the Log Analytics QueryPack resource. - * @param top Maximum items returned in page. - * @param includeBody Flag indicating whether or not to return the body of each applicable query. If false, only - * return the query information. - * @param skipToken Base64 encoded token used to fetch the next page of items. Default is null. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return a list of Queries defined within a Log Analytics QueryPack as paginated response with {@link PagedFlux}. */ @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync(String resourceGroupName, String queryPackName, - Long top, Boolean includeBody, String skipToken) { + private PagedFlux listAsync(String resourceGroupName, String queryPackName) { + final Long top = null; + final Boolean includeBody = null; + final String skipToken = null; return new PagedFlux<>(() -> listSinglePageAsync(resourceGroupName, queryPackName, top, includeBody, skipToken), nextLink -> listNextSinglePageAsync(nextLink)); } @@ -262,18 +319,42 @@ private PagedFlux listAsync(String resourceGrou * * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param queryPackName The name of the Log Analytics QueryPack resource. + * @param top Maximum items returned in page. + * @param includeBody Flag indicating whether or not to return the body of each applicable query. If false, only + * return the query information. + * @param skipToken Base64 encoded token used to fetch the next page of items. Default is null. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of Queries defined within a Log Analytics QueryPack as paginated response with {@link PagedFlux}. + * @return a list of Queries defined within a Log Analytics QueryPack along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync(String resourceGroupName, String queryPackName) { - final Long top = null; - final Boolean includeBody = null; - final String skipToken = null; - return new PagedFlux<>(() -> listSinglePageAsync(resourceGroupName, queryPackName, top, includeBody, skipToken), - nextLink -> listNextSinglePageAsync(nextLink)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage(String resourceGroupName, + String queryPackName, Long top, Boolean includeBody, String skipToken) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (queryPackName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + queryPackName, this.client.getApiVersion(), top, includeBody, skipToken, accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -289,14 +370,35 @@ private PagedFlux listAsync(String resourceGrou * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of Queries defined within a Log Analytics QueryPack as paginated response with {@link PagedFlux}. + * @return a list of Queries defined within a Log Analytics QueryPack along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync(String resourceGroupName, String queryPackName, - Long top, Boolean includeBody, String skipToken, Context context) { - return new PagedFlux<>( - () -> listSinglePageAsync(resourceGroupName, queryPackName, top, includeBody, skipToken, context), - nextLink -> listNextSinglePageAsync(nextLink, context)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage(String resourceGroupName, + String queryPackName, Long top, Boolean includeBody, String skipToken, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (queryPackName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + queryPackName, this.client.getApiVersion(), top, includeBody, skipToken, accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -315,7 +417,8 @@ public PagedIterable list(String resourceGroupN final Long top = null; final Boolean includeBody = null; final String skipToken = null; - return new PagedIterable<>(listAsync(resourceGroupName, queryPackName, top, includeBody, skipToken)); + return new PagedIterable<>(() -> listSinglePage(resourceGroupName, queryPackName, top, includeBody, skipToken), + nextLink -> listNextSinglePage(nextLink)); } /** @@ -337,7 +440,9 @@ public PagedIterable list(String resourceGroupN @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list(String resourceGroupName, String queryPackName, Long top, Boolean includeBody, String skipToken, Context context) { - return new PagedIterable<>(listAsync(resourceGroupName, queryPackName, top, includeBody, skipToken, context)); + return new PagedIterable<>( + () -> listSinglePage(resourceGroupName, queryPackName, top, includeBody, skipToken, context), + nextLink -> listNextSinglePage(nextLink, context)); } /** @@ -381,69 +486,16 @@ private Mono> searchSinglePageAsy } else { querySearchProperties.validate(); } - final String apiVersion = "2019-09-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.search(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - queryPackName, apiVersion, top, includeBody, skipToken, querySearchProperties, accept, context)) + .withContext(context -> service.search(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, queryPackName, this.client.getApiVersion(), top, includeBody, skipToken, + querySearchProperties, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Search a list of Queries defined within a Log Analytics QueryPack according to given search properties. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param queryPackName The name of the Log Analytics QueryPack resource. - * @param querySearchProperties Properties by which to search queries in the given Log Analytics QueryPack. - * @param top Maximum items returned in page. - * @param includeBody Flag indicating whether or not to return the body of each applicable query. If false, only - * return the query information. - * @param skipToken Base64 encoded token used to fetch the next page of items. Default is null. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes the list of Log Analytics QueryPack-Query resources along with {@link PagedResponse} on - * successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> searchSinglePageAsync(String resourceGroupName, - String queryPackName, LogAnalyticsQueryPackQuerySearchProperties querySearchProperties, Long top, - Boolean includeBody, String skipToken, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (queryPackName == null) { - return Mono.error(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); - } - if (querySearchProperties == null) { - return Mono - .error(new IllegalArgumentException("Parameter querySearchProperties is required and cannot be null.")); - } else { - querySearchProperties.validate(); - } - final String apiVersion = "2019-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service - .search(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, queryPackName, - apiVersion, top, includeBody, skipToken, querySearchProperties, accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); - } - /** * Search a list of Queries defined within a Log Analytics QueryPack according to given search properties. * @@ -490,6 +542,57 @@ private PagedFlux searchAsync(String resourceGr includeBody, skipToken), nextLink -> searchNextSinglePageAsync(nextLink)); } + /** + * Search a list of Queries defined within a Log Analytics QueryPack according to given search properties. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param queryPackName The name of the Log Analytics QueryPack resource. + * @param querySearchProperties Properties by which to search queries in the given Log Analytics QueryPack. + * @param top Maximum items returned in page. + * @param includeBody Flag indicating whether or not to return the body of each applicable query. If false, only + * return the query information. + * @param skipToken Base64 encoded token used to fetch the next page of items. Default is null. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return describes the list of Log Analytics QueryPack-Query resources along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse searchSinglePage(String resourceGroupName, + String queryPackName, LogAnalyticsQueryPackQuerySearchProperties querySearchProperties, Long top, + Boolean includeBody, String skipToken) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (queryPackName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); + } + if (querySearchProperties == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter querySearchProperties is required and cannot be null.")); + } else { + querySearchProperties.validate(); + } + final String accept = "application/json"; + Response res = service.searchSync(this.client.getEndpoint(), + this.client.getSubscriptionId(), resourceGroupName, queryPackName, this.client.getApiVersion(), top, + includeBody, skipToken, querySearchProperties, accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + /** * Search a list of Queries defined within a Log Analytics QueryPack according to given search properties. * @@ -504,15 +607,42 @@ private PagedFlux searchAsync(String resourceGr * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes the list of Log Analytics QueryPack-Query resources as paginated response with - * {@link PagedFlux}. + * @return describes the list of Log Analytics QueryPack-Query resources along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux searchAsync(String resourceGroupName, String queryPackName, - LogAnalyticsQueryPackQuerySearchProperties querySearchProperties, Long top, Boolean includeBody, - String skipToken, Context context) { - return new PagedFlux<>(() -> searchSinglePageAsync(resourceGroupName, queryPackName, querySearchProperties, top, - includeBody, skipToken, context), nextLink -> searchNextSinglePageAsync(nextLink, context)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse searchSinglePage(String resourceGroupName, + String queryPackName, LogAnalyticsQueryPackQuerySearchProperties querySearchProperties, Long top, + Boolean includeBody, String skipToken, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (queryPackName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); + } + if (querySearchProperties == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter querySearchProperties is required and cannot be null.")); + } else { + querySearchProperties.validate(); + } + final String accept = "application/json"; + Response res = service.searchSync(this.client.getEndpoint(), + this.client.getSubscriptionId(), resourceGroupName, queryPackName, this.client.getApiVersion(), top, + includeBody, skipToken, querySearchProperties, accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -533,8 +663,8 @@ public PagedIterable search(String resourceGrou final Long top = null; final Boolean includeBody = null; final String skipToken = null; - return new PagedIterable<>( - searchAsync(resourceGroupName, queryPackName, querySearchProperties, top, includeBody, skipToken)); + return new PagedIterable<>(() -> searchSinglePage(resourceGroupName, queryPackName, querySearchProperties, top, + includeBody, skipToken), nextLink -> searchNextSinglePage(nextLink)); } /** @@ -558,8 +688,8 @@ public PagedIterable search(String resourceGrou public PagedIterable search(String resourceGroupName, String queryPackName, LogAnalyticsQueryPackQuerySearchProperties querySearchProperties, Long top, Boolean includeBody, String skipToken, Context context) { - return new PagedIterable<>( - searchAsync(resourceGroupName, queryPackName, querySearchProperties, top, includeBody, skipToken, context)); + return new PagedIterable<>(() -> searchSinglePage(resourceGroupName, queryPackName, querySearchProperties, top, + includeBody, skipToken, context), nextLink -> searchNextSinglePage(nextLink, context)); } /** @@ -595,55 +725,13 @@ private Mono> getWithResponseAsync(Str if (id == null) { return Mono.error(new IllegalArgumentException("Parameter id is required and cannot be null.")); } - final String apiVersion = "2019-09-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, queryPackName, id, apiVersion, accept, context)) + resourceGroupName, queryPackName, id, this.client.getApiVersion(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets a specific Log Analytics Query defined within a Log Analytics QueryPack. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param queryPackName The name of the Log Analytics QueryPack resource. - * @param id The id of a specific query defined in the Log Analytics QueryPack. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a specific Log Analytics Query defined within a Log Analytics QueryPack along with {@link Response} on - * successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getWithResponseAsync(String resourceGroupName, - String queryPackName, String id, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (queryPackName == null) { - return Mono.error(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); - } - if (id == null) { - return Mono.error(new IllegalArgumentException("Parameter id is required and cannot be null.")); - } - final String apiVersion = "2019-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, queryPackName, - id, apiVersion, accept, context); - } - /** * Gets a specific Log Analytics Query defined within a Log Analytics QueryPack. * @@ -677,7 +765,30 @@ private Mono getAsync(String resourceGroupName, @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(String resourceGroupName, String queryPackName, String id, Context context) { - return getWithResponseAsync(resourceGroupName, queryPackName, id, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (queryPackName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); + } + if (id == null) { + throw LOGGER.atError().log(new IllegalArgumentException("Parameter id is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + queryPackName, id, this.client.getApiVersion(), accept, context); } /** @@ -736,62 +847,13 @@ private Mono> putWithResponseAsync(Str } else { queryPayload.validate(); } - final String apiVersion = "2019-09-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.put(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, queryPackName, id, apiVersion, queryPayload, accept, context)) + resourceGroupName, queryPackName, id, this.client.getApiVersion(), queryPayload, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Adds or Updates a specific Query within a Log Analytics QueryPack. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param queryPackName The name of the Log Analytics QueryPack resource. - * @param id The id of a specific query defined in the Log Analytics QueryPack. - * @param queryPayload Properties that need to be specified to create a new query and add it to a Log Analytics - * QueryPack. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a Log Analytics QueryPack-Query definition along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> putWithResponseAsync(String resourceGroupName, - String queryPackName, String id, LogAnalyticsQueryPackQueryInner queryPayload, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (queryPackName == null) { - return Mono.error(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); - } - if (id == null) { - return Mono.error(new IllegalArgumentException("Parameter id is required and cannot be null.")); - } - if (queryPayload == null) { - return Mono.error(new IllegalArgumentException("Parameter queryPayload is required and cannot be null.")); - } else { - queryPayload.validate(); - } - final String apiVersion = "2019-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.put(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, queryPackName, - id, apiVersion, queryPayload, accept, context); - } - /** * Adds or Updates a specific Query within a Log Analytics QueryPack. * @@ -829,7 +891,36 @@ private Mono putAsync(String resourceGroupName, @ServiceMethod(returns = ReturnType.SINGLE) public Response putWithResponse(String resourceGroupName, String queryPackName, String id, LogAnalyticsQueryPackQueryInner queryPayload, Context context) { - return putWithResponseAsync(resourceGroupName, queryPackName, id, queryPayload, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (queryPackName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); + } + if (id == null) { + throw LOGGER.atError().log(new IllegalArgumentException("Parameter id is required and cannot be null.")); + } + if (queryPayload == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPayload is required and cannot be null.")); + } else { + queryPayload.validate(); + } + final String accept = "application/json"; + return service.putSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + queryPackName, id, this.client.getApiVersion(), queryPayload, accept, context); } /** @@ -891,62 +982,13 @@ private Mono> updateWithResponseAsync( } else { queryPayload.validate(); } - final String apiVersion = "2019-09-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, queryPackName, id, apiVersion, queryPayload, accept, context)) + resourceGroupName, queryPackName, id, this.client.getApiVersion(), queryPayload, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Adds or Updates a specific Query within a Log Analytics QueryPack. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param queryPackName The name of the Log Analytics QueryPack resource. - * @param id The id of a specific query defined in the Log Analytics QueryPack. - * @param queryPayload Properties that need to be specified to create a new query and add it to a Log Analytics - * QueryPack. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a Log Analytics QueryPack-Query definition along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> updateWithResponseAsync(String resourceGroupName, - String queryPackName, String id, LogAnalyticsQueryPackQueryInner queryPayload, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (queryPackName == null) { - return Mono.error(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); - } - if (id == null) { - return Mono.error(new IllegalArgumentException("Parameter id is required and cannot be null.")); - } - if (queryPayload == null) { - return Mono.error(new IllegalArgumentException("Parameter queryPayload is required and cannot be null.")); - } else { - queryPayload.validate(); - } - final String apiVersion = "2019-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - queryPackName, id, apiVersion, queryPayload, accept, context); - } - /** * Adds or Updates a specific Query within a Log Analytics QueryPack. * @@ -984,7 +1026,36 @@ private Mono updateAsync(String resourceGroupNa @ServiceMethod(returns = ReturnType.SINGLE) public Response updateWithResponse(String resourceGroupName, String queryPackName, String id, LogAnalyticsQueryPackQueryInner queryPayload, Context context) { - return updateWithResponseAsync(resourceGroupName, queryPackName, id, queryPayload, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (queryPackName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); + } + if (id == null) { + throw LOGGER.atError().log(new IllegalArgumentException("Parameter id is required and cannot be null.")); + } + if (queryPayload == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPayload is required and cannot be null.")); + } else { + queryPayload.validate(); + } + final String accept = "application/json"; + return service.updateSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + queryPackName, id, this.client.getApiVersion(), queryPayload, accept, context); } /** @@ -1037,54 +1108,13 @@ private Mono> deleteWithResponseAsync(String resourceGroupName, S if (id == null) { return Mono.error(new IllegalArgumentException("Parameter id is required and cannot be null.")); } - final String apiVersion = "2019-09-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, queryPackName, id, apiVersion, accept, context)) + resourceGroupName, queryPackName, id, this.client.getApiVersion(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Deletes a specific Query defined within an Log Analytics QueryPack. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param queryPackName The name of the Log Analytics QueryPack resource. - * @param id The id of a specific query defined in the Log Analytics QueryPack. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> deleteWithResponseAsync(String resourceGroupName, String queryPackName, String id, - Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (queryPackName == null) { - return Mono.error(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); - } - if (id == null) { - return Mono.error(new IllegalArgumentException("Parameter id is required and cannot be null.")); - } - final String apiVersion = "2019-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - queryPackName, id, apiVersion, accept, context); - } - /** * Deletes a specific Query defined within an Log Analytics QueryPack. * @@ -1116,7 +1146,30 @@ private Mono deleteAsync(String resourceGroupName, String queryPackName, S @ServiceMethod(returns = ReturnType.SINGLE) public Response deleteWithResponse(String resourceGroupName, String queryPackName, String id, Context context) { - return deleteWithResponseAsync(resourceGroupName, queryPackName, id, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (queryPackName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); + } + if (id == null) { + throw LOGGER.atError().log(new IllegalArgumentException("Parameter id is required and cannot be null.")); + } + final String accept = "application/json"; + return service.deleteSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + queryPackName, id, this.client.getApiVersion(), accept, context); } /** @@ -1141,8 +1194,8 @@ public void delete(String resourceGroupName, String queryPackName, String id) { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes the list of Log Analytics QueryPack-Query resources along with {@link PagedResponse} on - * successful completion of {@link Mono}. + * @return a list of Queries defined within a Log Analytics QueryPack along with {@link PagedResponse} on successful + * completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> listNextSinglePageAsync(String nextLink) { @@ -1160,6 +1213,33 @@ private Mono> listNextSinglePageA .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of Queries defined within a Log Analytics QueryPack along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + /** * Get the next page of items. * @@ -1168,24 +1248,24 @@ private Mono> listNextSinglePageA * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes the list of Log Analytics QueryPack-Query resources along with {@link PagedResponse} on - * successful completion of {@link Mono}. + * @return a list of Queries defined within a Log Analytics QueryPack along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listNextSinglePageAsync(String nextLink, - Context context) { + private PagedResponse listNextSinglePage(String nextLink, Context context) { if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); } if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.listNext(nextLink, this.client.getEndpoint(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + Response res + = service.listNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -1214,6 +1294,33 @@ private Mono> searchNextSinglePag .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return describes the list of Log Analytics QueryPack-Query resources along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse searchNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.searchNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + /** * Get the next page of items. * @@ -1222,23 +1329,25 @@ private Mono> searchNextSinglePag * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes the list of Log Analytics QueryPack-Query resources along with {@link PagedResponse} on - * successful completion of {@link Mono}. + * @return describes the list of Log Analytics QueryPack-Query resources along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> searchNextSinglePageAsync(String nextLink, - Context context) { + private PagedResponse searchNextSinglePage(String nextLink, Context context) { if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); } if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.searchNext(nextLink, this.client.getEndpoint(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + Response res + = service.searchNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } + + private static final ClientLogger LOGGER = new ClientLogger(QueriesClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/QueryPacksClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/QueryPacksClientImpl.java index eb13f9fc4f9b..3819c5d7c940 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/QueryPacksClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/QueryPacksClientImpl.java @@ -29,6 +29,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.QueryPacksClient; import com.azure.resourcemanager.loganalytics.fluent.models.LogAnalyticsQueryPackInner; import com.azure.resourcemanager.loganalytics.models.LogAnalyticsQueryPackListResult; @@ -65,7 +66,7 @@ public final class QueryPacksClientImpl implements QueryPacksClient { * service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientQueryPacks") public interface QueryPacksService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/providers/Microsoft.OperationalInsights/queryPacks") @@ -75,6 +76,14 @@ Mono> list(@HostParam("$host") String @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/providers/Microsoft.OperationalInsights/queryPacks") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listSync(@HostParam("$host") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks") @ExpectedResponses({ 200 }) @@ -83,6 +92,14 @@ Mono> listByResourceGroup(@HostParam(" @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByResourceGroupSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks") @ExpectedResponses({ 201 }) @@ -93,6 +110,16 @@ Mono> createOrUpdateWithoutName(@HostParam( @BodyParam("application/json") LogAnalyticsQueryPackInner logAnalyticsQueryPackPayload, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks") + @ExpectedResponses({ 201 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response createOrUpdateWithoutNameSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, + @BodyParam("application/json") LogAnalyticsQueryPackInner logAnalyticsQueryPackPayload, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Delete("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}") @ExpectedResponses({ 200, 204 }) @@ -102,6 +129,15 @@ Mono> delete(@HostParam("$host") String endpoint, @PathParam("subscriptionId") String subscriptionId, @PathParam("queryPackName") String queryPackName, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Delete("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}") + @ExpectedResponses({ 200, 204 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response deleteSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @PathParam("queryPackName") String queryPackName, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}") @ExpectedResponses({ 200 }) @@ -111,6 +147,15 @@ Mono> getByResourceGroup(@HostParam("$host" @PathParam("subscriptionId") String subscriptionId, @PathParam("queryPackName") String queryPackName, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getByResourceGroupSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @PathParam("queryPackName") String queryPackName, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}") @ExpectedResponses({ 200 }) @@ -121,6 +166,16 @@ Mono> createOrUpdate(@HostParam("$host") St @BodyParam("application/json") LogAnalyticsQueryPackInner logAnalyticsQueryPackPayload, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response createOrUpdateSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @PathParam("queryPackName") String queryPackName, + @BodyParam("application/json") LogAnalyticsQueryPackInner logAnalyticsQueryPackPayload, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Patch("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}") @ExpectedResponses({ 200 }) @@ -131,6 +186,16 @@ Mono> updateTags(@HostParam("$host") String @BodyParam("application/json") TagsResource queryPackTags, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Patch("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/queryPacks/{queryPackName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response updateTagsSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @PathParam("queryPackName") String queryPackName, + @BodyParam("application/json") TagsResource queryPackTags, @HeaderParam("Accept") String accept, + Context context); + @Headers({ "Content-Type: application/json" }) @Get("{nextLink}") @ExpectedResponses({ 200 }) @@ -139,6 +204,14 @@ Mono> listNext( @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listNextSync( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("{nextLink}") @ExpectedResponses({ 200 }) @@ -146,6 +219,14 @@ Mono> listNext( Mono> listByResourceGroupNext( @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByResourceGroupNextSync( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @HeaderParam("Accept") String accept, Context context); } /** @@ -166,11 +247,10 @@ private Mono> listSinglePageAsync() { return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2019-09-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - accept, context)) + .withContext(context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -179,29 +259,14 @@ private Mono> listSinglePageAsync() { /** * Gets a list of all Log Analytics QueryPacks within a subscription. * - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of all Log Analytics QueryPacks within a subscription along with {@link PagedResponse} on - * successful completion of {@link Mono}. + * @return a list of all Log Analytics QueryPacks within a subscription as paginated response with + * {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSinglePageAsync(Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2019-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listAsync() { + return new PagedFlux<>(() -> listSinglePageAsync(), nextLink -> listNextSinglePageAsync(nextLink)); } /** @@ -209,12 +274,25 @@ private Mono> listSinglePageAsync(Cont * * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of all Log Analytics QueryPacks within a subscription as paginated response with - * {@link PagedFlux}. + * @return a list of all Log Analytics QueryPacks within a subscription along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync() { - return new PagedFlux<>(() -> listSinglePageAsync(), nextLink -> listNextSinglePageAsync(nextLink)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage() { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listSync(this.client.getEndpoint(), + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -224,13 +302,25 @@ private PagedFlux listAsync() { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of all Log Analytics QueryPacks within a subscription as paginated response with - * {@link PagedFlux}. + * @return a list of all Log Analytics QueryPacks within a subscription along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync(Context context) { - return new PagedFlux<>(() -> listSinglePageAsync(context), - nextLink -> listNextSinglePageAsync(nextLink, context)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage(Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listSync(this.client.getEndpoint(), + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -243,7 +333,7 @@ private PagedFlux listAsync(Context context) { */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list() { - return new PagedIterable<>(listAsync()); + return new PagedIterable<>(() -> listSinglePage(), nextLink -> listNextSinglePage(nextLink)); } /** @@ -258,7 +348,7 @@ public PagedIterable list() { */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list(Context context) { - return new PagedIterable<>(listAsync(context)); + return new PagedIterable<>(() -> listSinglePage(context), nextLink -> listNextSinglePage(nextLink, context)); } /** @@ -286,11 +376,10 @@ public PagedIterable list(Context context) { return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2019-09-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.listByResourceGroup(this.client.getEndpoint(), resourceGroupName, - apiVersion, this.client.getSubscriptionId(), accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -300,36 +389,15 @@ public PagedIterable list(Context context) { * Gets a list of Log Analytics QueryPacks within a resource group. * * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of Log Analytics QueryPacks within a resource group along with {@link PagedResponse} on successful - * completion of {@link Mono}. + * @return a list of Log Analytics QueryPacks within a resource group as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByResourceGroupSinglePageAsync(String resourceGroupName, - Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2019-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service - .listByResourceGroup(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listByResourceGroupAsync(String resourceGroupName) { + return new PagedFlux<>(() -> listByResourceGroupSinglePageAsync(resourceGroupName), + nextLink -> listByResourceGroupNextSinglePageAsync(nextLink)); } /** @@ -339,12 +407,29 @@ private Mono> listByResourceGroupSingl * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of Log Analytics QueryPacks within a resource group as paginated response with {@link PagedFlux}. + * @return a list of Log Analytics QueryPacks within a resource group along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByResourceGroupAsync(String resourceGroupName) { - return new PagedFlux<>(() -> listByResourceGroupSinglePageAsync(resourceGroupName), - nextLink -> listByResourceGroupNextSinglePageAsync(nextLink)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByResourceGroupSinglePage(String resourceGroupName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listByResourceGroupSync(this.client.getEndpoint(), + resourceGroupName, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -355,12 +440,30 @@ private PagedFlux listByResourceGroupAsync(String re * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of Log Analytics QueryPacks within a resource group as paginated response with {@link PagedFlux}. + * @return a list of Log Analytics QueryPacks within a resource group along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByResourceGroupAsync(String resourceGroupName, Context context) { - return new PagedFlux<>(() -> listByResourceGroupSinglePageAsync(resourceGroupName, context), - nextLink -> listByResourceGroupNextSinglePageAsync(nextLink, context)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByResourceGroupSinglePage(String resourceGroupName, + Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listByResourceGroupSync(this.client.getEndpoint(), + resourceGroupName, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -375,7 +478,8 @@ private PagedFlux listByResourceGroupAsync(String re */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByResourceGroup(String resourceGroupName) { - return new PagedIterable<>(listByResourceGroupAsync(resourceGroupName)); + return new PagedIterable<>(() -> listByResourceGroupSinglePage(resourceGroupName), + nextLink -> listByResourceGroupNextSinglePage(nextLink)); } /** @@ -391,7 +495,8 @@ public PagedIterable listByResourceGroup(String reso */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByResourceGroup(String resourceGroupName, Context context) { - return new PagedIterable<>(listByResourceGroupAsync(resourceGroupName, context)); + return new PagedIterable<>(() -> listByResourceGroupSinglePage(resourceGroupName, context), + nextLink -> listByResourceGroupNextSinglePage(nextLink, context)); } /** @@ -428,56 +533,14 @@ private Mono> createOrUpdateWithoutNameWith } else { logAnalyticsQueryPackPayload.validate(); } - final String apiVersion = "2019-09-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.createOrUpdateWithoutName(this.client.getEndpoint(), resourceGroupName, - apiVersion, this.client.getSubscriptionId(), logAnalyticsQueryPackPayload, accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), logAnalyticsQueryPackPayload, accept, + context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Creates a Log Analytics QueryPack. Note: You cannot specify a different value for InstrumentationKey nor AppId in - * the Put operation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param logAnalyticsQueryPackPayload Properties that need to be specified to create or update a Log Analytics - * QueryPack. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an Log Analytics QueryPack definition along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> createOrUpdateWithoutNameWithResponseAsync( - String resourceGroupName, LogAnalyticsQueryPackInner logAnalyticsQueryPackPayload, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (logAnalyticsQueryPackPayload == null) { - return Mono.error( - new IllegalArgumentException("Parameter logAnalyticsQueryPackPayload is required and cannot be null.")); - } else { - logAnalyticsQueryPackPayload.validate(); - } - final String apiVersion = "2019-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.createOrUpdateWithoutName(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), logAnalyticsQueryPackPayload, accept, context); - } - /** * Creates a Log Analytics QueryPack. Note: You cannot specify a different value for InstrumentationKey nor AppId in * the Put operation. @@ -513,8 +576,31 @@ private Mono createOrUpdateWithoutNameAsync(String r @ServiceMethod(returns = ReturnType.SINGLE) public Response createOrUpdateWithoutNameWithResponse(String resourceGroupName, LogAnalyticsQueryPackInner logAnalyticsQueryPackPayload, Context context) { - return createOrUpdateWithoutNameWithResponseAsync(resourceGroupName, logAnalyticsQueryPackPayload, context) - .block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (logAnalyticsQueryPackPayload == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter logAnalyticsQueryPackPayload is required and cannot be null.")); + } else { + logAnalyticsQueryPackPayload.validate(); + } + final String accept = "application/json"; + return service.createOrUpdateWithoutNameSync(this.client.getEndpoint(), resourceGroupName, + this.client.getApiVersion(), this.client.getSubscriptionId(), logAnalyticsQueryPackPayload, accept, + context); } /** @@ -563,50 +649,13 @@ private Mono> deleteWithResponseAsync(String resourceGroupName, S if (queryPackName == null) { return Mono.error(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); } - final String apiVersion = "2019-09-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.delete(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), queryPackName, accept, context)) + .withContext(context -> service.delete(this.client.getEndpoint(), resourceGroupName, + this.client.getApiVersion(), this.client.getSubscriptionId(), queryPackName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Deletes a Log Analytics QueryPack. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param queryPackName The name of the Log Analytics QueryPack resource. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> deleteWithResponseAsync(String resourceGroupName, String queryPackName, - Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (queryPackName == null) { - return Mono.error(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); - } - final String apiVersion = "2019-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), resourceGroupName, apiVersion, this.client.getSubscriptionId(), - queryPackName, accept, context); - } - /** * Deletes a Log Analytics QueryPack. * @@ -635,7 +684,27 @@ private Mono deleteAsync(String resourceGroupName, String queryPackName) { */ @ServiceMethod(returns = ReturnType.SINGLE) public Response deleteWithResponse(String resourceGroupName, String queryPackName, Context context) { - return deleteWithResponseAsync(resourceGroupName, queryPackName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (queryPackName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.deleteSync(this.client.getEndpoint(), resourceGroupName, this.client.getApiVersion(), + this.client.getSubscriptionId(), queryPackName, accept, context); } /** @@ -681,51 +750,13 @@ private Mono> getByResourceGroupWithRespons if (queryPackName == null) { return Mono.error(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); } - final String apiVersion = "2019-09-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.getByResourceGroup(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), queryPackName, accept, context)) + .withContext(context -> service.getByResourceGroup(this.client.getEndpoint(), resourceGroupName, + this.client.getApiVersion(), this.client.getSubscriptionId(), queryPackName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Returns a Log Analytics QueryPack. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param queryPackName The name of the Log Analytics QueryPack resource. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an Log Analytics QueryPack definition along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getByResourceGroupWithResponseAsync(String resourceGroupName, - String queryPackName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (queryPackName == null) { - return Mono.error(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); - } - final String apiVersion = "2019-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.getByResourceGroup(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), queryPackName, accept, context); - } - /** * Returns a Log Analytics QueryPack. * @@ -756,7 +787,27 @@ private Mono getByResourceGroupAsync(String resource @ServiceMethod(returns = ReturnType.SINGLE) public Response getByResourceGroupWithResponse(String resourceGroupName, String queryPackName, Context context) { - return getByResourceGroupWithResponseAsync(resourceGroupName, queryPackName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (queryPackName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getByResourceGroupSync(this.client.getEndpoint(), resourceGroupName, this.client.getApiVersion(), + this.client.getSubscriptionId(), queryPackName, accept, context); } /** @@ -812,60 +863,14 @@ private Mono> createOrUpdateWithResponseAsy } else { logAnalyticsQueryPackPayload.validate(); } - final String apiVersion = "2019-09-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), queryPackName, logAnalyticsQueryPackPayload, accept, context)) + .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, + this.client.getApiVersion(), this.client.getSubscriptionId(), queryPackName, + logAnalyticsQueryPackPayload, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Creates (or updates) a Log Analytics QueryPack. Note: You cannot specify a different value for InstrumentationKey - * nor AppId in the Put operation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param queryPackName The name of the Log Analytics QueryPack resource. - * @param logAnalyticsQueryPackPayload Properties that need to be specified to create or update a Log Analytics - * QueryPack. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an Log Analytics QueryPack definition along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> createOrUpdateWithResponseAsync(String resourceGroupName, - String queryPackName, LogAnalyticsQueryPackInner logAnalyticsQueryPackPayload, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (queryPackName == null) { - return Mono.error(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); - } - if (logAnalyticsQueryPackPayload == null) { - return Mono.error( - new IllegalArgumentException("Parameter logAnalyticsQueryPackPayload is required and cannot be null.")); - } else { - logAnalyticsQueryPackPayload.validate(); - } - final String apiVersion = "2019-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), queryPackName, logAnalyticsQueryPackPayload, accept, context); - } - /** * Creates (or updates) a Log Analytics QueryPack. Note: You cannot specify a different value for InstrumentationKey * nor AppId in the Put operation. @@ -903,8 +908,34 @@ private Mono createOrUpdateAsync(String resourceGrou @ServiceMethod(returns = ReturnType.SINGLE) public Response createOrUpdateWithResponse(String resourceGroupName, String queryPackName, LogAnalyticsQueryPackInner logAnalyticsQueryPackPayload, Context context) { - return createOrUpdateWithResponseAsync(resourceGroupName, queryPackName, logAnalyticsQueryPackPayload, context) - .block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (queryPackName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); + } + if (logAnalyticsQueryPackPayload == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter logAnalyticsQueryPackPayload is required and cannot be null.")); + } else { + logAnalyticsQueryPackPayload.validate(); + } + final String accept = "application/json"; + return service.createOrUpdateSync(this.client.getEndpoint(), resourceGroupName, this.client.getApiVersion(), + this.client.getSubscriptionId(), queryPackName, logAnalyticsQueryPackPayload, accept, context); } /** @@ -962,57 +993,14 @@ private Mono> updateTagsWithResponseAsync(S } else { queryPackTags.validate(); } - final String apiVersion = "2019-09-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.updateTags(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), queryPackName, queryPackTags, accept, context)) + .withContext( + context -> service.updateTags(this.client.getEndpoint(), resourceGroupName, this.client.getApiVersion(), + this.client.getSubscriptionId(), queryPackName, queryPackTags, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Updates an existing QueryPack's tags. To update other fields use the CreateOrUpdate method. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param queryPackName The name of the Log Analytics QueryPack resource. - * @param queryPackTags Updated tag information to set into the QueryPack instance. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an Log Analytics QueryPack definition along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> updateTagsWithResponseAsync(String resourceGroupName, - String queryPackName, TagsResource queryPackTags, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (queryPackName == null) { - return Mono.error(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); - } - if (queryPackTags == null) { - return Mono.error(new IllegalArgumentException("Parameter queryPackTags is required and cannot be null.")); - } else { - queryPackTags.validate(); - } - final String apiVersion = "2019-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.updateTags(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), queryPackName, queryPackTags, accept, context); - } - /** * Updates an existing QueryPack's tags. To update other fields use the CreateOrUpdate method. * @@ -1046,7 +1034,33 @@ private Mono updateTagsAsync(String resourceGroupNam @ServiceMethod(returns = ReturnType.SINGLE) public Response updateTagsWithResponse(String resourceGroupName, String queryPackName, TagsResource queryPackTags, Context context) { - return updateTagsWithResponseAsync(resourceGroupName, queryPackName, queryPackTags, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (queryPackName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPackName is required and cannot be null.")); + } + if (queryPackTags == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter queryPackTags is required and cannot be null.")); + } else { + queryPackTags.validate(); + } + final String accept = "application/json"; + return service.updateTagsSync(this.client.getEndpoint(), resourceGroupName, this.client.getApiVersion(), + this.client.getSubscriptionId(), queryPackName, queryPackTags, accept, context); } /** @@ -1073,8 +1087,8 @@ public LogAnalyticsQueryPackInner updateTags(String resourceGroupName, String qu * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes the list of Log Analytics QueryPack resources along with {@link PagedResponse} on successful - * completion of {@link Mono}. + * @return a list of all Log Analytics QueryPacks within a subscription along with {@link PagedResponse} on + * successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> listNextSinglePageAsync(String nextLink) { @@ -1092,6 +1106,33 @@ private Mono> listNextSinglePageAsync( .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of all Log Analytics QueryPacks within a subscription along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + /** * Get the next page of items. * @@ -1100,23 +1141,24 @@ private Mono> listNextSinglePageAsync( * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes the list of Log Analytics QueryPack resources along with {@link PagedResponse} on successful - * completion of {@link Mono}. + * @return a list of all Log Analytics QueryPacks within a subscription along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listNextSinglePageAsync(String nextLink, Context context) { + private PagedResponse listNextSinglePage(String nextLink, Context context) { if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); } if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.listNext(nextLink, this.client.getEndpoint(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + Response res + = service.listNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -1126,7 +1168,7 @@ private Mono> listNextSinglePageAsync( * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes the list of Log Analytics QueryPack resources along with {@link PagedResponse} on successful + * @return a list of Log Analytics QueryPacks within a resource group along with {@link PagedResponse} on successful * completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) @@ -1147,6 +1189,33 @@ private Mono> listByResourceGroupNextS .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of Log Analytics QueryPacks within a resource group along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByResourceGroupNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByResourceGroupNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + /** * Get the next page of items. * @@ -1155,23 +1224,26 @@ private Mono> listByResourceGroupNextS * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes the list of Log Analytics QueryPack resources along with {@link PagedResponse} on successful - * completion of {@link Mono}. + * @return a list of Log Analytics QueryPacks within a resource group along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByResourceGroupNextSinglePageAsync(String nextLink, + private PagedResponse listByResourceGroupNextSinglePage(String nextLink, Context context) { if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); } if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.listByResourceGroupNext(nextLink, this.client.getEndpoint(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + Response res + = service.listByResourceGroupNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } + + private static final ClientLogger LOGGER = new ClientLogger(QueryPacksClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SavedSearchesClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SavedSearchesClientImpl.java index 1a5a158e3364..61ddbc7ed65d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SavedSearchesClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SavedSearchesClientImpl.java @@ -24,6 +24,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.SavedSearchesClient; import com.azure.resourcemanager.loganalytics.fluent.models.SavedSearchInner; import com.azure.resourcemanager.loganalytics.fluent.models.SavedSearchesListResultInner; @@ -59,7 +60,7 @@ public final class SavedSearchesClientImpl implements SavedSearchesClient { * proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientSavedSearches") public interface SavedSearchesService { @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/savedSearches/{savedSearchId}") @@ -71,6 +72,16 @@ Mono> delete(@HostParam("$host") String endpoint, @PathParam("savedSearchId") String savedSearchId, @QueryParam("api-version") String apiVersion, Context context); + @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) + @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/savedSearches/{savedSearchId}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response deleteSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("savedSearchId") String savedSearchId, @QueryParam("api-version") String apiVersion, + Context context); + @Headers({ "Content-Type: application/json" }) @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/savedSearches/{savedSearchId}") @ExpectedResponses({ 200 }) @@ -82,6 +93,17 @@ Mono> createOrUpdate(@HostParam("$host") String endpo @BodyParam("application/json") SavedSearchInner parameters, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/savedSearches/{savedSearchId}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response createOrUpdateSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("savedSearchId") String savedSearchId, @QueryParam("api-version") String apiVersion, + @BodyParam("application/json") SavedSearchInner parameters, @HeaderParam("Accept") String accept, + Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/savedSearches/{savedSearchId}") @ExpectedResponses({ 200 }) @@ -92,6 +114,16 @@ Mono> get(@HostParam("$host") String endpoint, @PathParam("savedSearchId") String savedSearchId, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/savedSearches/{savedSearchId}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("savedSearchId") String savedSearchId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/savedSearches") @ExpectedResponses({ 200 }) @@ -100,6 +132,15 @@ Mono> listByWorkspace(@HostParam("$host") @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/savedSearches") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByWorkspaceSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); } /** @@ -134,52 +175,12 @@ private Mono> deleteWithResponseAsync(String resourceGroupName, S if (savedSearchId == null) { return Mono.error(new IllegalArgumentException("Parameter savedSearchId is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; return FluxUtil .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, savedSearchId, apiVersion, context)) + resourceGroupName, workspaceName, savedSearchId, this.client.getApiVersion(), context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Deletes the specified saved search in a given workspace. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param savedSearchId The id of the saved search. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> deleteWithResponseAsync(String resourceGroupName, String workspaceName, - String savedSearchId, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (savedSearchId == null) { - return Mono.error(new IllegalArgumentException("Parameter savedSearchId is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - workspaceName, savedSearchId, apiVersion, context); - } - /** * Deletes the specified saved search in a given workspace. * @@ -212,7 +213,30 @@ private Mono deleteAsync(String resourceGroupName, String workspaceName, S @ServiceMethod(returns = ReturnType.SINGLE) public Response deleteWithResponse(String resourceGroupName, String workspaceName, String savedSearchId, Context context) { - return deleteWithResponseAsync(resourceGroupName, workspaceName, savedSearchId, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (savedSearchId == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter savedSearchId is required and cannot be null.")); + } + return service.deleteSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, savedSearchId, this.client.getApiVersion(), context); } /** @@ -269,61 +293,14 @@ private Mono> createOrUpdateWithResponseAsync(String } else { parameters.validate(); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, savedSearchId, apiVersion, parameters, accept, context)) + resourceGroupName, workspaceName, savedSearchId, this.client.getApiVersion(), parameters, accept, + context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Creates or updates a saved search for a given workspace. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param savedSearchId The id of the saved search. - * @param parameters The parameters required to save a search. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return value object for saved search results along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> createOrUpdateWithResponseAsync(String resourceGroupName, - String workspaceName, String savedSearchId, SavedSearchInner parameters, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (savedSearchId == null) { - return Mono.error(new IllegalArgumentException("Parameter savedSearchId is required and cannot be null.")); - } - if (parameters == null) { - return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); - } else { - parameters.validate(); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.createOrUpdate(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - workspaceName, savedSearchId, apiVersion, parameters, accept, context); - } - /** * Creates or updates a saved search for a given workspace. * @@ -359,8 +336,37 @@ private Mono createOrUpdateAsync(String resourceGroupName, Str @ServiceMethod(returns = ReturnType.SINGLE) public Response createOrUpdateWithResponse(String resourceGroupName, String workspaceName, String savedSearchId, SavedSearchInner parameters, Context context) { - return createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, savedSearchId, parameters, context) - .block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (savedSearchId == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter savedSearchId is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.createOrUpdateSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, savedSearchId, this.client.getApiVersion(), parameters, accept, context); } /** @@ -415,55 +421,13 @@ private Mono> getWithResponseAsync(String resourceGro if (savedSearchId == null) { return Mono.error(new IllegalArgumentException("Parameter savedSearchId is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, savedSearchId, apiVersion, accept, context)) + resourceGroupName, workspaceName, savedSearchId, this.client.getApiVersion(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets the specified saved search for a given workspace. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param savedSearchId The id of the saved search. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the specified saved search for a given workspace along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getWithResponseAsync(String resourceGroupName, String workspaceName, - String savedSearchId, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (savedSearchId == null) { - return Mono.error(new IllegalArgumentException("Parameter savedSearchId is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, workspaceName, - savedSearchId, apiVersion, accept, context); - } - /** * Gets the specified saved search for a given workspace. * @@ -496,7 +460,31 @@ private Mono getAsync(String resourceGroupName, String workspa @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(String resourceGroupName, String workspaceName, String savedSearchId, Context context) { - return getWithResponseAsync(resourceGroupName, workspaceName, savedSearchId, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (savedSearchId == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter savedSearchId is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, savedSearchId, this.client.getApiVersion(), accept, context); } /** @@ -544,51 +532,13 @@ private Mono> listByWorkspaceWithResponse return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.listByWorkspace(this.client.getEndpoint(), resourceGroupName, workspaceName, - apiVersion, this.client.getSubscriptionId(), accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets the saved searches for a given Log Analytics Workspace. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the saved searches for a given Log Analytics Workspace along with {@link Response} on successful - * completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByWorkspaceWithResponseAsync(String resourceGroupName, - String workspaceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.listByWorkspace(this.client.getEndpoint(), resourceGroupName, workspaceName, apiVersion, - this.client.getSubscriptionId(), accept, context); - } - /** * Gets the saved searches for a given Log Analytics Workspace. * @@ -619,7 +569,27 @@ private Mono listByWorkspaceAsync(String resourceG @ServiceMethod(returns = ReturnType.SINGLE) public Response listByWorkspaceWithResponse(String resourceGroupName, String workspaceName, Context context) { - return listByWorkspaceWithResponseAsync(resourceGroupName, workspaceName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.listByWorkspaceSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); } /** @@ -636,4 +606,6 @@ public Response listByWorkspaceWithResponse(String public SavedSearchesListResultInner listByWorkspace(String resourceGroupName, String workspaceName) { return listByWorkspaceWithResponse(resourceGroupName, workspaceName, Context.NONE).getValue(); } + + private static final ClientLogger LOGGER = new ClientLogger(SavedSearchesClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SchemasClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SchemasClientImpl.java index e6aa53b15388..9c87a78a57f9 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SchemasClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SchemasClientImpl.java @@ -21,6 +21,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.SchemasClient; import com.azure.resourcemanager.loganalytics.fluent.models.SearchGetSchemaResponseInner; import reactor.core.publisher.Mono; @@ -54,7 +55,7 @@ public final class SchemasClientImpl implements SchemasClient { * service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientSchemas") public interface SchemasService { @Headers({ "Content-Type: application/json" }) @Post("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/schema") @@ -64,6 +65,15 @@ Mono> get(@HostParam("$host") String endp @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/schema") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); } /** @@ -94,50 +104,13 @@ private Mono> getWithResponseAsync(String return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.get(this.client.getEndpoint(), resourceGroupName, workspaceName, apiVersion, - this.client.getSubscriptionId(), accept, context)) + .withContext(context -> service.get(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets the schema for a given workspace. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the schema for a given workspace along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getWithResponseAsync(String resourceGroupName, - String workspaceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), resourceGroupName, workspaceName, apiVersion, - this.client.getSubscriptionId(), accept, context); - } - /** * Gets the schema for a given workspace. * @@ -167,7 +140,27 @@ private Mono getAsync(String resourceGroupName, St @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(String resourceGroupName, String workspaceName, Context context) { - return getWithResponseAsync(resourceGroupName, workspaceName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getSync(this.client.getEndpoint(), resourceGroupName, workspaceName, this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, context); } /** @@ -184,4 +177,6 @@ public Response getWithResponse(String resourceGro public SearchGetSchemaResponseInner get(String resourceGroupName, String workspaceName) { return getWithResponse(resourceGroupName, workspaceName, Context.NONE).getValue(); } + + private static final ClientLogger LOGGER = new ClientLogger(SchemasClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SharedKeysOperationsClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SharedKeysOperationsClientImpl.java index 2eb885fccb49..8604d2311407 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SharedKeysOperationsClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SharedKeysOperationsClientImpl.java @@ -21,6 +21,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.SharedKeysOperationsClient; import com.azure.resourcemanager.loganalytics.fluent.models.SharedKeysInner; import reactor.core.publisher.Mono; @@ -55,7 +56,7 @@ public final class SharedKeysOperationsClientImpl implements SharedKeysOperation * the proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientSharedKeysOperations") public interface SharedKeysOperationsService { @Headers({ "Content-Type: application/json" }) @Post("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/sharedKeys") @@ -66,6 +67,15 @@ Mono> getSharedKeys(@HostParam("$host") String endpoin @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/sharedKeys") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getSharedKeysSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Post("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/regenerateSharedKey") @ExpectedResponses({ 200 }) @@ -74,6 +84,15 @@ Mono> regenerate(@HostParam("$host") String endpoint, @PathParam("subscriptionId") String subscriptionId, @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/regenerateSharedKey") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response regenerateSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); } /** @@ -104,50 +123,13 @@ private Mono> getSharedKeysWithResponseAsync(String re return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.getSharedKeys(this.client.getEndpoint(), resourceGroupName, workspaceName, - apiVersion, this.client.getSubscriptionId(), accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets the shared keys for a workspace. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the shared keys for a workspace along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getSharedKeysWithResponseAsync(String resourceGroupName, - String workspaceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.getSharedKeys(this.client.getEndpoint(), resourceGroupName, workspaceName, apiVersion, - this.client.getSubscriptionId(), accept, context); - } - /** * Gets the shared keys for a workspace. * @@ -178,7 +160,27 @@ private Mono getSharedKeysAsync(String resourceGroupName, Strin @ServiceMethod(returns = ReturnType.SINGLE) public Response getSharedKeysWithResponse(String resourceGroupName, String workspaceName, Context context) { - return getSharedKeysWithResponseAsync(resourceGroupName, workspaceName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getSharedKeysSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); } /** @@ -225,51 +227,13 @@ private Mono> regenerateWithResponseAsync(String resou if (workspaceName == null) { return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.regenerate(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, apiVersion, accept, context)) + resourceGroupName, workspaceName, this.client.getApiVersion(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Regenerates the shared keys for a Log Analytics Workspace. These keys are used to connect Microsoft Operational - * Insights agents to the workspace. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the shared keys for a workspace along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> regenerateWithResponseAsync(String resourceGroupName, String workspaceName, - Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.regenerate(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - workspaceName, apiVersion, accept, context); - } - /** * Regenerates the shared keys for a Log Analytics Workspace. These keys are used to connect Microsoft Operational * Insights agents to the workspace. @@ -302,7 +266,27 @@ private Mono regenerateAsync(String resourceGroupName, String w @ServiceMethod(returns = ReturnType.SINGLE) public Response regenerateWithResponse(String resourceGroupName, String workspaceName, Context context) { - return regenerateWithResponseAsync(resourceGroupName, workspaceName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.regenerateSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), accept, context); } /** @@ -320,4 +304,6 @@ public Response regenerateWithResponse(String resourceGroupName public SharedKeysInner regenerate(String resourceGroupName, String workspaceName) { return regenerateWithResponse(resourceGroupName, workspaceName, Context.NONE).getValue(); } + + private static final ClientLogger LOGGER = new ClientLogger(SharedKeysOperationsClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/StorageInsightConfigsClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/StorageInsightConfigsClientImpl.java index 4eb222cb9623..a4c86472e15f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/StorageInsightConfigsClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/StorageInsightConfigsClientImpl.java @@ -28,6 +28,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.StorageInsightConfigsClient; import com.azure.resourcemanager.loganalytics.fluent.models.StorageInsightInner; import com.azure.resourcemanager.loganalytics.models.StorageInsightListResult; @@ -63,7 +64,7 @@ public final class StorageInsightConfigsClientImpl implements StorageInsightConf * by the proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientStorageInsightConfigs") public interface StorageInsightConfigsService { @Headers({ "Content-Type: application/json" }) @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/storageInsightConfigs/{storageInsightName}") @@ -76,6 +77,17 @@ Mono> createOrUpdate(@HostParam("$host") String en @BodyParam("application/json") StorageInsightInner parameters, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/storageInsightConfigs/{storageInsightName}") + @ExpectedResponses({ 200, 201 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response createOrUpdateSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("storageInsightName") String storageInsightName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, + @BodyParam("application/json") StorageInsightInner parameters, @HeaderParam("Accept") String accept, + Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/storageInsightConfigs/{storageInsightName}") @ExpectedResponses({ 200 }) @@ -85,6 +97,15 @@ Mono> get(@HostParam("$host") String endpoint, @PathParam("storageInsightName") String storageInsightName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/storageInsightConfigs/{storageInsightName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("storageInsightName") String storageInsightName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/storageInsightConfigs/{storageInsightName}") @ExpectedResponses({ 200, 204 }) @@ -94,6 +115,15 @@ Mono> delete(@HostParam("$host") String endpoint, @PathParam("storageInsightName") String storageInsightName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, Context context); + @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) + @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/storageInsightConfigs/{storageInsightName}") + @ExpectedResponses({ 200, 204 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response deleteSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @PathParam("storageInsightName") String storageInsightName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/storageInsightConfigs") @ExpectedResponses({ 200 }) @@ -103,6 +133,15 @@ Mono> listByWorkspace(@HostParam("$host") Str @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/storageInsightConfigs") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByWorkspaceSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("{nextLink}") @ExpectedResponses({ 200 }) @@ -110,6 +149,14 @@ Mono> listByWorkspace(@HostParam("$host") Str Mono> listByWorkspaceNext( @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByWorkspaceNextSync( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @HeaderParam("Accept") String accept, Context context); } /** @@ -152,62 +199,14 @@ private Mono> createOrUpdateWithResponseAsync(Stri } else { parameters.validate(); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, workspaceName, - storageInsightName, apiVersion, this.client.getSubscriptionId(), parameters, accept, context)) + storageInsightName, this.client.getApiVersion(), this.client.getSubscriptionId(), parameters, accept, + context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Create or update a storage insight. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param storageInsightName Name of the storageInsightsConfigs resource. - * @param parameters The parameters required to create or update a storage insight. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level storage insight resource container along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> createOrUpdateWithResponseAsync(String resourceGroupName, - String workspaceName, String storageInsightName, StorageInsightInner parameters, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (storageInsightName == null) { - return Mono - .error(new IllegalArgumentException("Parameter storageInsightName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (parameters == null) { - return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); - } else { - parameters.validate(); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, workspaceName, storageInsightName, - apiVersion, this.client.getSubscriptionId(), parameters, accept, context); - } - /** * Create or update a storage insight. * @@ -243,8 +242,38 @@ private Mono createOrUpdateAsync(String resourceGroupName, @ServiceMethod(returns = ReturnType.SINGLE) public Response createOrUpdateWithResponse(String resourceGroupName, String workspaceName, String storageInsightName, StorageInsightInner parameters, Context context) { - return createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, storageInsightName, parameters, - context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (storageInsightName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter storageInsightName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.createOrUpdateSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + storageInsightName, this.client.getApiVersion(), this.client.getSubscriptionId(), parameters, accept, + context); } /** @@ -299,55 +328,13 @@ private Mono> getWithResponseAsync(String resource return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.get(this.client.getEndpoint(), resourceGroupName, workspaceName, - storageInsightName, apiVersion, this.client.getSubscriptionId(), accept, context)) + storageInsightName, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets a storage insight instance. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param storageInsightName Name of the storageInsightsConfigs resource. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a storage insight instance along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getWithResponseAsync(String resourceGroupName, String workspaceName, - String storageInsightName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (storageInsightName == null) { - return Mono - .error(new IllegalArgumentException("Parameter storageInsightName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), resourceGroupName, workspaceName, storageInsightName, apiVersion, - this.client.getSubscriptionId(), accept, context); - } - /** * Gets a storage insight instance. * @@ -381,7 +368,31 @@ private Mono getAsync(String resourceGroupName, String work @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(String resourceGroupName, String workspaceName, String storageInsightName, Context context) { - return getWithResponseAsync(resourceGroupName, workspaceName, storageInsightName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (storageInsightName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter storageInsightName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getSync(this.client.getEndpoint(), resourceGroupName, workspaceName, storageInsightName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); } /** @@ -433,53 +444,12 @@ private Mono> deleteWithResponseAsync(String resourceGroupName, S return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; return FluxUtil .withContext(context -> service.delete(this.client.getEndpoint(), resourceGroupName, workspaceName, - storageInsightName, apiVersion, this.client.getSubscriptionId(), context)) + storageInsightName, this.client.getApiVersion(), this.client.getSubscriptionId(), context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Deletes a storageInsightsConfigs resource. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param storageInsightName Name of the storageInsightsConfigs resource. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> deleteWithResponseAsync(String resourceGroupName, String workspaceName, - String storageInsightName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (storageInsightName == null) { - return Mono - .error(new IllegalArgumentException("Parameter storageInsightName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), resourceGroupName, workspaceName, storageInsightName, - apiVersion, this.client.getSubscriptionId(), context); - } - /** * Deletes a storageInsightsConfigs resource. * @@ -512,7 +482,30 @@ private Mono deleteAsync(String resourceGroupName, String workspaceName, S @ServiceMethod(returns = ReturnType.SINGLE) public Response deleteWithResponse(String resourceGroupName, String workspaceName, String storageInsightName, Context context) { - return deleteWithResponseAsync(resourceGroupName, workspaceName, storageInsightName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (storageInsightName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter storageInsightName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + return service.deleteSync(this.client.getEndpoint(), resourceGroupName, workspaceName, storageInsightName, + this.client.getApiVersion(), this.client.getSubscriptionId(), context); } /** @@ -559,11 +552,10 @@ private Mono> listByWorkspaceSinglePageAsync( return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.listByWorkspace(this.client.getEndpoint(), resourceGroupName, workspaceName, - apiVersion, this.client.getSubscriptionId(), accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().odataNextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -574,39 +566,15 @@ private Mono> listByWorkspaceSinglePageAsync( * * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list storage insights operation response along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return the list storage insights operation response as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByWorkspaceSinglePageAsync(String resourceGroupName, - String workspaceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service - .listByWorkspace(this.client.getEndpoint(), resourceGroupName, workspaceName, apiVersion, - this.client.getSubscriptionId(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().odataNextLink(), null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName) { + return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName), + nextLink -> listByWorkspaceNextSinglePageAsync(nextLink)); } /** @@ -617,12 +585,35 @@ private Mono> listByWorkspaceSinglePageAsync( * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list storage insights operation response as paginated response with {@link PagedFlux}. + * @return the list storage insights operation response along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName) { - return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName), - nextLink -> listByWorkspaceNextSinglePageAsync(nextLink)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceSinglePage(String resourceGroupName, + String workspaceName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().odataNextLink(), null); } /** @@ -634,13 +625,35 @@ private PagedFlux listByWorkspaceAsync(String resourceGroup * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list storage insights operation response as paginated response with {@link PagedFlux}. + * @return the list storage insights operation response along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName, + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceSinglePage(String resourceGroupName, String workspaceName, Context context) { - return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName, context), - nextLink -> listByWorkspaceNextSinglePageAsync(nextLink, context)); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().odataNextLink(), null); } /** @@ -655,7 +668,8 @@ private PagedFlux listByWorkspaceAsync(String resourceGroup */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName) { - return new PagedIterable<>(listByWorkspaceAsync(resourceGroupName, workspaceName)); + return new PagedIterable<>(() -> listByWorkspaceSinglePage(resourceGroupName, workspaceName), + nextLink -> listByWorkspaceNextSinglePage(nextLink)); } /** @@ -672,7 +686,8 @@ public PagedIterable listByWorkspace(String resourceGroupNa @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName, Context context) { - return new PagedIterable<>(listByWorkspaceAsync(resourceGroupName, workspaceName, context)); + return new PagedIterable<>(() -> listByWorkspaceSinglePage(resourceGroupName, workspaceName, context), + nextLink -> listByWorkspaceNextSinglePage(nextLink, context)); } /** @@ -702,6 +717,33 @@ private Mono> listByWorkspaceNextSinglePageAs .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the list storage insights operation response along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().odataNextLink(), null); + } + /** * Get the next page of items. * @@ -710,23 +752,25 @@ private Mono> listByWorkspaceNextSinglePageAs * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list storage insights operation response along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return the list storage insights operation response along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByWorkspaceNextSinglePageAsync(String nextLink, - Context context) { + private PagedResponse listByWorkspaceNextSinglePage(String nextLink, Context context) { if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); } if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.listByWorkspaceNext(nextLink, this.client.getEndpoint(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().odataNextLink(), null)); + Response res + = service.listByWorkspaceNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().odataNextLink(), null); } + + private static final ClientLogger LOGGER = new ClientLogger(StorageInsightConfigsClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SummaryLogsImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SummaryLogsImpl.java new file mode 100644 index 000000000000..90ba126a1301 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SummaryLogsImpl.java @@ -0,0 +1,199 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.implementation; + +import com.azure.core.http.rest.Response; +import com.azure.core.management.SystemData; +import com.azure.core.util.Context; +import com.azure.resourcemanager.loganalytics.fluent.models.SummaryLogsInner; +import com.azure.resourcemanager.loganalytics.models.ProvisioningStateEnum; +import com.azure.resourcemanager.loganalytics.models.RuleDefinition; +import com.azure.resourcemanager.loganalytics.models.RuleTypeEnum; +import com.azure.resourcemanager.loganalytics.models.StatusCodeEnum; +import com.azure.resourcemanager.loganalytics.models.SummaryLogs; +import com.azure.resourcemanager.loganalytics.models.SummaryLogsRetryBin; + +public final class SummaryLogsImpl implements SummaryLogs, SummaryLogs.Definition, SummaryLogs.Update { + private SummaryLogsInner innerObject; + + private final com.azure.resourcemanager.loganalytics.LogAnalyticsManager serviceManager; + + public String id() { + return this.innerModel().id(); + } + + public String name() { + return this.innerModel().name(); + } + + public String type() { + return this.innerModel().type(); + } + + public SystemData systemData() { + return this.innerModel().systemData(); + } + + public RuleTypeEnum ruleType() { + return this.innerModel().ruleType(); + } + + public String displayName() { + return this.innerModel().displayName(); + } + + public String description() { + return this.innerModel().description(); + } + + public Boolean isActive() { + return this.innerModel().isActive(); + } + + public StatusCodeEnum statusCode() { + return this.innerModel().statusCode(); + } + + public ProvisioningStateEnum provisioningState() { + return this.innerModel().provisioningState(); + } + + public RuleDefinition ruleDefinition() { + return this.innerModel().ruleDefinition(); + } + + public String resourceGroupName() { + return resourceGroupName; + } + + public SummaryLogsInner innerModel() { + return this.innerObject; + } + + private com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager() { + return this.serviceManager; + } + + private String resourceGroupName; + + private String workspaceName; + + private String summaryLogsName; + + public SummaryLogsImpl withExistingWorkspace(String resourceGroupName, String workspaceName) { + this.resourceGroupName = resourceGroupName; + this.workspaceName = workspaceName; + return this; + } + + public SummaryLogs create() { + this.innerObject = serviceManager.serviceClient() + .getSummaryLogsOperations() + .createOrUpdate(resourceGroupName, workspaceName, summaryLogsName, this.innerModel(), Context.NONE); + return this; + } + + public SummaryLogs create(Context context) { + this.innerObject = serviceManager.serviceClient() + .getSummaryLogsOperations() + .createOrUpdate(resourceGroupName, workspaceName, summaryLogsName, this.innerModel(), context); + return this; + } + + SummaryLogsImpl(String name, com.azure.resourcemanager.loganalytics.LogAnalyticsManager serviceManager) { + this.innerObject = new SummaryLogsInner(); + this.serviceManager = serviceManager; + this.summaryLogsName = name; + } + + public SummaryLogsImpl update() { + return this; + } + + public SummaryLogs apply() { + this.innerObject = serviceManager.serviceClient() + .getSummaryLogsOperations() + .createOrUpdate(resourceGroupName, workspaceName, summaryLogsName, this.innerModel(), Context.NONE); + return this; + } + + public SummaryLogs apply(Context context) { + this.innerObject = serviceManager.serviceClient() + .getSummaryLogsOperations() + .createOrUpdate(resourceGroupName, workspaceName, summaryLogsName, this.innerModel(), context); + return this; + } + + SummaryLogsImpl(SummaryLogsInner innerObject, + com.azure.resourcemanager.loganalytics.LogAnalyticsManager serviceManager) { + this.innerObject = innerObject; + this.serviceManager = serviceManager; + this.resourceGroupName = ResourceManagerUtils.getValueFromIdByName(innerObject.id(), "resourceGroups"); + this.workspaceName = ResourceManagerUtils.getValueFromIdByName(innerObject.id(), "workspaces"); + this.summaryLogsName = ResourceManagerUtils.getValueFromIdByName(innerObject.id(), "summaryLogs"); + } + + public SummaryLogs refresh() { + this.innerObject = serviceManager.serviceClient() + .getSummaryLogsOperations() + .getWithResponse(resourceGroupName, workspaceName, summaryLogsName, Context.NONE) + .getValue(); + return this; + } + + public SummaryLogs refresh(Context context) { + this.innerObject = serviceManager.serviceClient() + .getSummaryLogsOperations() + .getWithResponse(resourceGroupName, workspaceName, summaryLogsName, context) + .getValue(); + return this; + } + + public void start() { + serviceManager.summaryLogsOperations().start(resourceGroupName, workspaceName, summaryLogsName); + } + + public void start(Context context) { + serviceManager.summaryLogsOperations().start(resourceGroupName, workspaceName, summaryLogsName, context); + } + + public Response stopWithResponse(Context context) { + return serviceManager.summaryLogsOperations() + .stopWithResponse(resourceGroupName, workspaceName, summaryLogsName, context); + } + + public void stop() { + serviceManager.summaryLogsOperations().stop(resourceGroupName, workspaceName, summaryLogsName); + } + + public void retryBin(SummaryLogsRetryBin parameters) { + serviceManager.summaryLogsOperations().retryBin(resourceGroupName, workspaceName, summaryLogsName, parameters); + } + + public void retryBin(SummaryLogsRetryBin parameters, Context context) { + serviceManager.summaryLogsOperations() + .retryBin(resourceGroupName, workspaceName, summaryLogsName, parameters, context); + } + + public SummaryLogsImpl withRuleType(RuleTypeEnum ruleType) { + this.innerModel().withRuleType(ruleType); + return this; + } + + public SummaryLogsImpl withDisplayName(String displayName) { + this.innerModel().withDisplayName(displayName); + return this; + } + + public SummaryLogsImpl withDescription(String description) { + this.innerModel().withDescription(description); + return this; + } + + public SummaryLogsImpl withRuleDefinition(RuleDefinition ruleDefinition) { + this.innerModel().withRuleDefinition(ruleDefinition); + return this; + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SummaryLogsOperationsClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SummaryLogsOperationsClientImpl.java new file mode 100644 index 000000000000..b6c151f4e68e --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SummaryLogsOperationsClientImpl.java @@ -0,0 +1,1698 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.implementation; + +import com.azure.core.annotation.BodyParam; +import com.azure.core.annotation.Delete; +import com.azure.core.annotation.ExpectedResponses; +import com.azure.core.annotation.Get; +import com.azure.core.annotation.HeaderParam; +import com.azure.core.annotation.Headers; +import com.azure.core.annotation.Host; +import com.azure.core.annotation.HostParam; +import com.azure.core.annotation.PathParam; +import com.azure.core.annotation.Post; +import com.azure.core.annotation.Put; +import com.azure.core.annotation.QueryParam; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceInterface; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.annotation.UnexpectedResponseExceptionType; +import com.azure.core.http.rest.PagedFlux; +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.PagedResponse; +import com.azure.core.http.rest.PagedResponseBase; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.RestProxy; +import com.azure.core.management.exception.ManagementException; +import com.azure.core.management.polling.PollResult; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Context; +import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; +import com.azure.core.util.polling.PollerFlux; +import com.azure.core.util.polling.SyncPoller; +import com.azure.resourcemanager.loganalytics.fluent.SummaryLogsOperationsClient; +import com.azure.resourcemanager.loganalytics.fluent.models.SummaryLogsInner; +import com.azure.resourcemanager.loganalytics.models.SummaryLogsListResult; +import com.azure.resourcemanager.loganalytics.models.SummaryLogsRetryBin; +import java.nio.ByteBuffer; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +/** + * An instance of this class provides access to all the operations defined in SummaryLogsOperationsClient. + */ +public final class SummaryLogsOperationsClientImpl implements SummaryLogsOperationsClient { + /** + * The proxy service used to perform REST calls. + */ + private final SummaryLogsOperationsService service; + + /** + * The service client containing this operation class. + */ + private final OperationalInsightsManagementClientImpl client; + + /** + * Initializes an instance of SummaryLogsOperationsClientImpl. + * + * @param client the instance of the service client containing this operation class. + */ + SummaryLogsOperationsClientImpl(OperationalInsightsManagementClientImpl client) { + this.service = RestProxy.create(SummaryLogsOperationsService.class, client.getHttpPipeline(), + client.getSerializerAdapter()); + this.client = client; + } + + /** + * The interface defining all the services for OperationalInsightsManagementClientSummaryLogsOperations to be used + * by the proxy service to perform REST calls. + */ + @Host("{$host}") + @ServiceInterface(name = "OperationalInsightsManagementClientSummaryLogsOperations") + public interface SummaryLogsOperationsService { + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/summaryLogs") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> listByWorkspace(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/summaryLogs") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByWorkspaceSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/summaryLogs/{summaryLogsName}") + @ExpectedResponses({ 200, 201 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono>> createOrUpdate(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("summaryLogsName") String summaryLogsName, + @BodyParam("application/json") SummaryLogsInner parameters, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Content-Type: application/json" }) + @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/summaryLogs/{summaryLogsName}") + @ExpectedResponses({ 200, 201 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response createOrUpdateSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("summaryLogsName") String summaryLogsName, + @BodyParam("application/json") SummaryLogsInner parameters, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/summaryLogs/{summaryLogsName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> get(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("summaryLogsName") String summaryLogsName, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/summaryLogs/{summaryLogsName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("summaryLogsName") String summaryLogsName, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Delete("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/summaryLogs/{summaryLogsName}") + @ExpectedResponses({ 202, 204 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono>> delete(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("summaryLogsName") String summaryLogsName, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Delete("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/summaryLogs/{summaryLogsName}") + @ExpectedResponses({ 202, 204 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response deleteSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("summaryLogsName") String summaryLogsName, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/summaryLogs/{summaryLogsName}/start") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono>> start(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("summaryLogsName") String summaryLogsName, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/summaryLogs/{summaryLogsName}/start") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response startSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("summaryLogsName") String summaryLogsName, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/summaryLogs/{summaryLogsName}/stop") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> stop(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("summaryLogsName") String summaryLogsName, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/summaryLogs/{summaryLogsName}/stop") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response stopSync(@HostParam("$host") String endpoint, @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("summaryLogsName") String summaryLogsName, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/summaryLogs/{summaryLogsName}/retrybin") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono>> retryBin(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("summaryLogsName") String summaryLogsName, + @BodyParam("application/json") SummaryLogsRetryBin parameters, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/summaryLogs/{summaryLogsName}/retrybin") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response retryBinSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("summaryLogsName") String summaryLogsName, + @BodyParam("application/json") SummaryLogsRetryBin parameters, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> listByWorkspaceNext( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByWorkspaceNextSync( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @HeaderParam("Accept") String accept, Context context); + } + + /** + * Gets all summary rules for the specified Log Analytics workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return all summary rules for the specified Log Analytics workspace along with {@link PagedResponse} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> listByWorkspaceSinglePageAsync(String resourceGroupName, + String workspaceName) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.listByWorkspace(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, workspaceName, this.client.getApiVersion(), accept, context)) + .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), + res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Gets all summary rules for the specified Log Analytics workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return all summary rules for the specified Log Analytics workspace as paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName) { + return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName), + nextLink -> listByWorkspaceNextSinglePageAsync(nextLink)); + } + + /** + * Gets all summary rules for the specified Log Analytics workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return all summary rules for the specified Log Analytics workspace along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceSinglePage(String resourceGroupName, String workspaceName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + + /** + * Gets all summary rules for the specified Log Analytics workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return all summary rules for the specified Log Analytics workspace along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceSinglePage(String resourceGroupName, String workspaceName, + Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + + /** + * Gets all summary rules for the specified Log Analytics workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return all summary rules for the specified Log Analytics workspace as paginated response with + * {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName) { + return new PagedIterable<>(() -> listByWorkspaceSinglePage(resourceGroupName, workspaceName), + nextLink -> listByWorkspaceNextSinglePage(nextLink)); + } + + /** + * Gets all summary rules for the specified Log Analytics workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return all summary rules for the specified Log Analytics workspace as paginated response with + * {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName, + Context context) { + return new PagedIterable<>(() -> listByWorkspaceSinglePage(resourceGroupName, workspaceName, context), + nextLink -> listByWorkspaceNextSinglePage(nextLink, context)); + } + + /** + * Creates or updates Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to update summary rules properties. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return workspace data summary rules definition along with {@link Response} on successful completion of + * {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono>> createOrUpdateWithResponseAsync(String resourceGroupName, + String workspaceName, String summaryLogsName, SummaryLogsInner parameters) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + return Mono + .error(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + if (parameters == null) { + return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, workspaceName, this.client.getApiVersion(), summaryLogsName, parameters, accept, + context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Creates or updates Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to update summary rules properties. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return workspace data summary rules definition along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response createOrUpdateWithResponse(String resourceGroupName, String workspaceName, + String summaryLogsName, SummaryLogsInner parameters) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.createOrUpdateSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), summaryLogsName, parameters, accept, Context.NONE); + } + + /** + * Creates or updates Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to update summary rules properties. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return workspace data summary rules definition along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response createOrUpdateWithResponse(String resourceGroupName, String workspaceName, + String summaryLogsName, SummaryLogsInner parameters, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.createOrUpdateSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), summaryLogsName, parameters, accept, context); + } + + /** + * Creates or updates Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to update summary rules properties. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link PollerFlux} for polling of workspace data summary rules definition. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + private PollerFlux, SummaryLogsInner> beginCreateOrUpdateAsync( + String resourceGroupName, String workspaceName, String summaryLogsName, SummaryLogsInner parameters) { + Mono>> mono + = createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, summaryLogsName, parameters); + return this.client.getLroResult(mono, this.client.getHttpPipeline(), + SummaryLogsInner.class, SummaryLogsInner.class, this.client.getContext()); + } + + /** + * Creates or updates Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to update summary rules properties. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of workspace data summary rules definition. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, SummaryLogsInner> beginCreateOrUpdate(String resourceGroupName, + String workspaceName, String summaryLogsName, SummaryLogsInner parameters) { + Response response + = createOrUpdateWithResponse(resourceGroupName, workspaceName, summaryLogsName, parameters); + return this.client.getLroResult(response, SummaryLogsInner.class, + SummaryLogsInner.class, Context.NONE); + } + + /** + * Creates or updates Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to update summary rules properties. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of workspace data summary rules definition. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, SummaryLogsInner> beginCreateOrUpdate(String resourceGroupName, + String workspaceName, String summaryLogsName, SummaryLogsInner parameters, Context context) { + Response response + = createOrUpdateWithResponse(resourceGroupName, workspaceName, summaryLogsName, parameters, context); + return this.client.getLroResult(response, SummaryLogsInner.class, + SummaryLogsInner.class, context); + } + + /** + * Creates or updates Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to update summary rules properties. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return workspace data summary rules definition on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono createOrUpdateAsync(String resourceGroupName, String workspaceName, + String summaryLogsName, SummaryLogsInner parameters) { + return beginCreateOrUpdateAsync(resourceGroupName, workspaceName, summaryLogsName, parameters).last() + .flatMap(this.client::getLroFinalResultOrError); + } + + /** + * Creates or updates Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to update summary rules properties. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return workspace data summary rules definition. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public SummaryLogsInner createOrUpdate(String resourceGroupName, String workspaceName, String summaryLogsName, + SummaryLogsInner parameters) { + return beginCreateOrUpdate(resourceGroupName, workspaceName, summaryLogsName, parameters).getFinalResult(); + } + + /** + * Creates or updates Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to update summary rules properties. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return workspace data summary rules definition. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public SummaryLogsInner createOrUpdate(String resourceGroupName, String workspaceName, String summaryLogsName, + SummaryLogsInner parameters, Context context) { + return beginCreateOrUpdate(resourceGroupName, workspaceName, summaryLogsName, parameters, context) + .getFinalResult(); + } + + /** + * Gets Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return log Analytics workspace Summary rules along with {@link Response} on successful completion of + * {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> getWithResponseAsync(String resourceGroupName, String workspaceName, + String summaryLogsName) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + return Mono + .error(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, workspaceName, this.client.getApiVersion(), summaryLogsName, accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Gets Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return log Analytics workspace Summary rules on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono getAsync(String resourceGroupName, String workspaceName, String summaryLogsName) { + return getWithResponseAsync(resourceGroupName, workspaceName, summaryLogsName) + .flatMap(res -> Mono.justOrEmpty(res.getValue())); + } + + /** + * Gets Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return log Analytics workspace Summary rules along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(String resourceGroupName, String workspaceName, + String summaryLogsName, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), summaryLogsName, accept, context); + } + + /** + * Gets Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return log Analytics workspace Summary rules. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public SummaryLogsInner get(String resourceGroupName, String workspaceName, String summaryLogsName) { + return getWithResponse(resourceGroupName, workspaceName, summaryLogsName, Context.NONE).getValue(); + } + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono>> deleteWithResponseAsync(String resourceGroupName, String workspaceName, + String summaryLogsName) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + return Mono + .error(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, workspaceName, this.client.getApiVersion(), summaryLogsName, accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response deleteWithResponse(String resourceGroupName, String workspaceName, + String summaryLogsName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.deleteSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), summaryLogsName, accept, Context.NONE); + } + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response deleteWithResponse(String resourceGroupName, String workspaceName, + String summaryLogsName, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.deleteSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), summaryLogsName, accept, context); + } + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link PollerFlux} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + private PollerFlux, Void> beginDeleteAsync(String resourceGroupName, String workspaceName, + String summaryLogsName) { + Mono>> mono + = deleteWithResponseAsync(resourceGroupName, workspaceName, summaryLogsName); + return this.client.getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, + this.client.getContext()); + } + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, Void> beginDelete(String resourceGroupName, String workspaceName, + String summaryLogsName) { + Response response = deleteWithResponse(resourceGroupName, workspaceName, summaryLogsName); + return this.client.getLroResult(response, Void.class, Void.class, Context.NONE); + } + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, Void> beginDelete(String resourceGroupName, String workspaceName, + String summaryLogsName, Context context) { + Response response = deleteWithResponse(resourceGroupName, workspaceName, summaryLogsName, context); + return this.client.getLroResult(response, Void.class, Void.class, context); + } + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return A {@link Mono} that completes when a successful response is received. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono deleteAsync(String resourceGroupName, String workspaceName, String summaryLogsName) { + return beginDeleteAsync(resourceGroupName, workspaceName, summaryLogsName).last() + .flatMap(this.client::getLroFinalResultOrError); + } + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public void delete(String resourceGroupName, String workspaceName, String summaryLogsName) { + beginDelete(resourceGroupName, workspaceName, summaryLogsName).getFinalResult(); + } + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public void delete(String resourceGroupName, String workspaceName, String summaryLogsName, Context context) { + beginDelete(resourceGroupName, workspaceName, summaryLogsName, context).getFinalResult(); + } + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono>> startWithResponseAsync(String resourceGroupName, String workspaceName, + String summaryLogsName) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + return Mono + .error(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.start(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, workspaceName, this.client.getApiVersion(), summaryLogsName, accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response startWithResponse(String resourceGroupName, String workspaceName, + String summaryLogsName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.startSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), summaryLogsName, accept, Context.NONE); + } + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response startWithResponse(String resourceGroupName, String workspaceName, + String summaryLogsName, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.startSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), summaryLogsName, accept, context); + } + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link PollerFlux} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + private PollerFlux, Void> beginStartAsync(String resourceGroupName, String workspaceName, + String summaryLogsName) { + Mono>> mono + = startWithResponseAsync(resourceGroupName, workspaceName, summaryLogsName); + return this.client.getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, + this.client.getContext()); + } + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, Void> beginStart(String resourceGroupName, String workspaceName, + String summaryLogsName) { + Response response = startWithResponse(resourceGroupName, workspaceName, summaryLogsName); + return this.client.getLroResult(response, Void.class, Void.class, Context.NONE); + } + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, Void> beginStart(String resourceGroupName, String workspaceName, + String summaryLogsName, Context context) { + Response response = startWithResponse(resourceGroupName, workspaceName, summaryLogsName, context); + return this.client.getLroResult(response, Void.class, Void.class, context); + } + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return A {@link Mono} that completes when a successful response is received. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono startAsync(String resourceGroupName, String workspaceName, String summaryLogsName) { + return beginStartAsync(resourceGroupName, workspaceName, summaryLogsName).last() + .flatMap(this.client::getLroFinalResultOrError); + } + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public void start(String resourceGroupName, String workspaceName, String summaryLogsName) { + beginStart(resourceGroupName, workspaceName, summaryLogsName).getFinalResult(); + } + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public void start(String resourceGroupName, String workspaceName, String summaryLogsName, Context context) { + beginStart(resourceGroupName, workspaceName, summaryLogsName, context).getFinalResult(); + } + + /** + * Stops an active Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> stopWithResponseAsync(String resourceGroupName, String workspaceName, + String summaryLogsName) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + return Mono + .error(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.stop(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, workspaceName, this.client.getApiVersion(), summaryLogsName, accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Stops an active Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return A {@link Mono} that completes when a successful response is received. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono stopAsync(String resourceGroupName, String workspaceName, String summaryLogsName) { + return stopWithResponseAsync(resourceGroupName, workspaceName, summaryLogsName) + .flatMap(ignored -> Mono.empty()); + } + + /** + * Stops an active Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response stopWithResponse(String resourceGroupName, String workspaceName, String summaryLogsName, + Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.stopSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), summaryLogsName, accept, context); + } + + /** + * Stops an active Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public void stop(String resourceGroupName, String workspaceName, String summaryLogsName) { + stopWithResponse(resourceGroupName, workspaceName, summaryLogsName, Context.NONE); + } + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono>> retryBinWithResponseAsync(String resourceGroupName, String workspaceName, + String summaryLogsName, SummaryLogsRetryBin parameters) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + return Mono + .error(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + if (parameters == null) { + return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.retryBin(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, workspaceName, this.client.getApiVersion(), summaryLogsName, parameters, accept, + context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response retryBinWithResponse(String resourceGroupName, String workspaceName, + String summaryLogsName, SummaryLogsRetryBin parameters) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.retryBinSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), summaryLogsName, parameters, accept, Context.NONE); + } + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response retryBinWithResponse(String resourceGroupName, String workspaceName, + String summaryLogsName, SummaryLogsRetryBin parameters, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (summaryLogsName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter summaryLogsName is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.retryBinSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), summaryLogsName, parameters, accept, context); + } + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link PollerFlux} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + private PollerFlux, Void> beginRetryBinAsync(String resourceGroupName, String workspaceName, + String summaryLogsName, SummaryLogsRetryBin parameters) { + Mono>> mono + = retryBinWithResponseAsync(resourceGroupName, workspaceName, summaryLogsName, parameters); + return this.client.getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, + this.client.getContext()); + } + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, Void> beginRetryBin(String resourceGroupName, String workspaceName, + String summaryLogsName, SummaryLogsRetryBin parameters) { + Response response + = retryBinWithResponse(resourceGroupName, workspaceName, summaryLogsName, parameters); + return this.client.getLroResult(response, Void.class, Void.class, Context.NONE); + } + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, Void> beginRetryBin(String resourceGroupName, String workspaceName, + String summaryLogsName, SummaryLogsRetryBin parameters, Context context) { + Response response + = retryBinWithResponse(resourceGroupName, workspaceName, summaryLogsName, parameters, context); + return this.client.getLroResult(response, Void.class, Void.class, context); + } + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return A {@link Mono} that completes when a successful response is received. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono retryBinAsync(String resourceGroupName, String workspaceName, String summaryLogsName, + SummaryLogsRetryBin parameters) { + return beginRetryBinAsync(resourceGroupName, workspaceName, summaryLogsName, parameters).last() + .flatMap(this.client::getLroFinalResultOrError); + } + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public void retryBin(String resourceGroupName, String workspaceName, String summaryLogsName, + SummaryLogsRetryBin parameters) { + beginRetryBin(resourceGroupName, workspaceName, summaryLogsName, parameters).getFinalResult(); + } + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public void retryBin(String resourceGroupName, String workspaceName, String summaryLogsName, + SummaryLogsRetryBin parameters, Context context) { + beginRetryBin(resourceGroupName, workspaceName, summaryLogsName, parameters, context).getFinalResult(); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return all summary rules for the specified Log Analytics workspace along with {@link PagedResponse} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> listByWorkspaceNextSinglePageAsync(String nextLink) { + if (nextLink == null) { + return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.listByWorkspaceNext(nextLink, this.client.getEndpoint(), accept, context)) + .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), + res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return all summary rules for the specified Log Analytics workspace along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return all summary rules for the specified Log Analytics workspace along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceNextSinglePage(String nextLink, Context context) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + + private static final ClientLogger LOGGER = new ClientLogger(SummaryLogsOperationsClientImpl.class); +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SummaryLogsOperationsImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SummaryLogsOperationsImpl.java new file mode 100644 index 000000000000..e3bc565e8dab --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/SummaryLogsOperationsImpl.java @@ -0,0 +1,185 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.implementation; + +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.SimpleResponse; +import com.azure.core.util.Context; +import com.azure.core.util.logging.ClientLogger; +import com.azure.resourcemanager.loganalytics.fluent.SummaryLogsOperationsClient; +import com.azure.resourcemanager.loganalytics.fluent.models.SummaryLogsInner; +import com.azure.resourcemanager.loganalytics.models.SummaryLogs; +import com.azure.resourcemanager.loganalytics.models.SummaryLogsOperations; +import com.azure.resourcemanager.loganalytics.models.SummaryLogsRetryBin; + +public final class SummaryLogsOperationsImpl implements SummaryLogsOperations { + private static final ClientLogger LOGGER = new ClientLogger(SummaryLogsOperationsImpl.class); + + private final SummaryLogsOperationsClient innerClient; + + private final com.azure.resourcemanager.loganalytics.LogAnalyticsManager serviceManager; + + public SummaryLogsOperationsImpl(SummaryLogsOperationsClient innerClient, + com.azure.resourcemanager.loganalytics.LogAnalyticsManager serviceManager) { + this.innerClient = innerClient; + this.serviceManager = serviceManager; + } + + public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName) { + PagedIterable inner = this.serviceClient().listByWorkspace(resourceGroupName, workspaceName); + return ResourceManagerUtils.mapPage(inner, inner1 -> new SummaryLogsImpl(inner1, this.manager())); + } + + public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName, Context context) { + PagedIterable inner + = this.serviceClient().listByWorkspace(resourceGroupName, workspaceName, context); + return ResourceManagerUtils.mapPage(inner, inner1 -> new SummaryLogsImpl(inner1, this.manager())); + } + + public Response getWithResponse(String resourceGroupName, String workspaceName, String summaryLogsName, + Context context) { + Response inner + = this.serviceClient().getWithResponse(resourceGroupName, workspaceName, summaryLogsName, context); + if (inner != null) { + return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), + new SummaryLogsImpl(inner.getValue(), this.manager())); + } else { + return null; + } + } + + public SummaryLogs get(String resourceGroupName, String workspaceName, String summaryLogsName) { + SummaryLogsInner inner = this.serviceClient().get(resourceGroupName, workspaceName, summaryLogsName); + if (inner != null) { + return new SummaryLogsImpl(inner, this.manager()); + } else { + return null; + } + } + + public void delete(String resourceGroupName, String workspaceName, String summaryLogsName) { + this.serviceClient().delete(resourceGroupName, workspaceName, summaryLogsName); + } + + public void delete(String resourceGroupName, String workspaceName, String summaryLogsName, Context context) { + this.serviceClient().delete(resourceGroupName, workspaceName, summaryLogsName, context); + } + + public void start(String resourceGroupName, String workspaceName, String summaryLogsName) { + this.serviceClient().start(resourceGroupName, workspaceName, summaryLogsName); + } + + public void start(String resourceGroupName, String workspaceName, String summaryLogsName, Context context) { + this.serviceClient().start(resourceGroupName, workspaceName, summaryLogsName, context); + } + + public Response stopWithResponse(String resourceGroupName, String workspaceName, String summaryLogsName, + Context context) { + return this.serviceClient().stopWithResponse(resourceGroupName, workspaceName, summaryLogsName, context); + } + + public void stop(String resourceGroupName, String workspaceName, String summaryLogsName) { + this.serviceClient().stop(resourceGroupName, workspaceName, summaryLogsName); + } + + public void retryBin(String resourceGroupName, String workspaceName, String summaryLogsName, + SummaryLogsRetryBin parameters) { + this.serviceClient().retryBin(resourceGroupName, workspaceName, summaryLogsName, parameters); + } + + public void retryBin(String resourceGroupName, String workspaceName, String summaryLogsName, + SummaryLogsRetryBin parameters, Context context) { + this.serviceClient().retryBin(resourceGroupName, workspaceName, summaryLogsName, parameters, context); + } + + public SummaryLogs getById(String id) { + String resourceGroupName = ResourceManagerUtils.getValueFromIdByName(id, "resourceGroups"); + if (resourceGroupName == null) { + throw LOGGER.logExceptionAsError(new IllegalArgumentException( + String.format("The resource ID '%s' is not valid. Missing path segment 'resourceGroups'.", id))); + } + String workspaceName = ResourceManagerUtils.getValueFromIdByName(id, "workspaces"); + if (workspaceName == null) { + throw LOGGER.logExceptionAsError(new IllegalArgumentException( + String.format("The resource ID '%s' is not valid. Missing path segment 'workspaces'.", id))); + } + String summaryLogsName = ResourceManagerUtils.getValueFromIdByName(id, "summaryLogs"); + if (summaryLogsName == null) { + throw LOGGER.logExceptionAsError(new IllegalArgumentException( + String.format("The resource ID '%s' is not valid. Missing path segment 'summaryLogs'.", id))); + } + return this.getWithResponse(resourceGroupName, workspaceName, summaryLogsName, Context.NONE).getValue(); + } + + public Response getByIdWithResponse(String id, Context context) { + String resourceGroupName = ResourceManagerUtils.getValueFromIdByName(id, "resourceGroups"); + if (resourceGroupName == null) { + throw LOGGER.logExceptionAsError(new IllegalArgumentException( + String.format("The resource ID '%s' is not valid. Missing path segment 'resourceGroups'.", id))); + } + String workspaceName = ResourceManagerUtils.getValueFromIdByName(id, "workspaces"); + if (workspaceName == null) { + throw LOGGER.logExceptionAsError(new IllegalArgumentException( + String.format("The resource ID '%s' is not valid. Missing path segment 'workspaces'.", id))); + } + String summaryLogsName = ResourceManagerUtils.getValueFromIdByName(id, "summaryLogs"); + if (summaryLogsName == null) { + throw LOGGER.logExceptionAsError(new IllegalArgumentException( + String.format("The resource ID '%s' is not valid. Missing path segment 'summaryLogs'.", id))); + } + return this.getWithResponse(resourceGroupName, workspaceName, summaryLogsName, context); + } + + public void deleteById(String id) { + String resourceGroupName = ResourceManagerUtils.getValueFromIdByName(id, "resourceGroups"); + if (resourceGroupName == null) { + throw LOGGER.logExceptionAsError(new IllegalArgumentException( + String.format("The resource ID '%s' is not valid. Missing path segment 'resourceGroups'.", id))); + } + String workspaceName = ResourceManagerUtils.getValueFromIdByName(id, "workspaces"); + if (workspaceName == null) { + throw LOGGER.logExceptionAsError(new IllegalArgumentException( + String.format("The resource ID '%s' is not valid. Missing path segment 'workspaces'.", id))); + } + String summaryLogsName = ResourceManagerUtils.getValueFromIdByName(id, "summaryLogs"); + if (summaryLogsName == null) { + throw LOGGER.logExceptionAsError(new IllegalArgumentException( + String.format("The resource ID '%s' is not valid. Missing path segment 'summaryLogs'.", id))); + } + this.delete(resourceGroupName, workspaceName, summaryLogsName, Context.NONE); + } + + public void deleteByIdWithResponse(String id, Context context) { + String resourceGroupName = ResourceManagerUtils.getValueFromIdByName(id, "resourceGroups"); + if (resourceGroupName == null) { + throw LOGGER.logExceptionAsError(new IllegalArgumentException( + String.format("The resource ID '%s' is not valid. Missing path segment 'resourceGroups'.", id))); + } + String workspaceName = ResourceManagerUtils.getValueFromIdByName(id, "workspaces"); + if (workspaceName == null) { + throw LOGGER.logExceptionAsError(new IllegalArgumentException( + String.format("The resource ID '%s' is not valid. Missing path segment 'workspaces'.", id))); + } + String summaryLogsName = ResourceManagerUtils.getValueFromIdByName(id, "summaryLogs"); + if (summaryLogsName == null) { + throw LOGGER.logExceptionAsError(new IllegalArgumentException( + String.format("The resource ID '%s' is not valid. Missing path segment 'summaryLogs'.", id))); + } + this.delete(resourceGroupName, workspaceName, summaryLogsName, context); + } + + private SummaryLogsOperationsClient serviceClient() { + return this.innerClient; + } + + private com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager() { + return this.serviceManager; + } + + public SummaryLogsImpl define(String name) { + return new SummaryLogsImpl(name, this.manager()); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/TableImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/TableImpl.java index 7f0a3bcb785a..743c54e03a5c 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/TableImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/TableImpl.java @@ -5,6 +5,7 @@ package com.azure.resourcemanager.loganalytics.implementation; import com.azure.core.http.rest.Response; +import com.azure.core.management.SystemData; import com.azure.core.util.Context; import com.azure.resourcemanager.loganalytics.fluent.models.TableInner; import com.azure.resourcemanager.loganalytics.models.ProvisioningStateEnum; @@ -12,7 +13,6 @@ import com.azure.resourcemanager.loganalytics.models.ResultStatistics; import com.azure.resourcemanager.loganalytics.models.Schema; import com.azure.resourcemanager.loganalytics.models.SearchResults; -import com.azure.resourcemanager.loganalytics.models.SystemDataAutoGenerated; import com.azure.resourcemanager.loganalytics.models.Table; import com.azure.resourcemanager.loganalytics.models.TablePlanEnum; @@ -33,7 +33,7 @@ public String type() { return this.innerModel().type(); } - public SystemDataAutoGenerated systemData() { + public SystemData systemData() { return this.innerModel().systemData(); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/TablesClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/TablesClientImpl.java index 1762c5ef174c..9206cb6e51a1 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/TablesClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/TablesClientImpl.java @@ -29,8 +29,10 @@ import com.azure.core.http.rest.RestProxy; import com.azure.core.management.exception.ManagementException; import com.azure.core.management.polling.PollResult; +import com.azure.core.util.BinaryData; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.polling.PollerFlux; import com.azure.core.util.polling.SyncPoller; import com.azure.resourcemanager.loganalytics.fluent.TablesClient; @@ -69,7 +71,7 @@ public final class TablesClientImpl implements TablesClient { * service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientTables") public interface TablesService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables") @@ -80,6 +82,15 @@ Mono> listByWorkspace(@HostParam("$host") String endp @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByWorkspaceSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}") @ExpectedResponses({ 200, 202 }) @@ -91,6 +102,17 @@ Mono>> createOrUpdate(@HostParam("$host") String endpo @BodyParam("application/json") TableInner parameters, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}") + @ExpectedResponses({ 200, 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response createOrUpdateSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("tableName") String tableName, + @BodyParam("application/json") TableInner parameters, @HeaderParam("Accept") String accept, + Context context); + @Headers({ "Content-Type: application/json" }) @Patch("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}") @ExpectedResponses({ 200, 202 }) @@ -102,6 +124,17 @@ Mono>> update(@HostParam("$host") String endpoint, @BodyParam("application/json") TableInner parameters, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Patch("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}") + @ExpectedResponses({ 200, 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response updateSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("tableName") String tableName, + @BodyParam("application/json") TableInner parameters, @HeaderParam("Accept") String accept, + Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}") @ExpectedResponses({ 200 }) @@ -112,6 +145,16 @@ Mono> get(@HostParam("$host") String endpoint, @QueryParam("api-version") String apiVersion, @PathParam("tableName") String tableName, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("tableName") String tableName, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Delete("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}") @ExpectedResponses({ 200, 202, 204 }) @@ -122,6 +165,16 @@ Mono>> delete(@HostParam("$host") String endpoint, @QueryParam("api-version") String apiVersion, @PathParam("tableName") String tableName, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Delete("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}") + @ExpectedResponses({ 200, 202, 204 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response deleteSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("tableName") String tableName, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}/migrate") @ExpectedResponses({ 200 }) @@ -132,6 +185,16 @@ Mono> migrate(@HostParam("$host") String endpoint, @QueryParam("api-version") String apiVersion, @PathParam("tableName") String tableName, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}/migrate") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response migrateSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("tableName") String tableName, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}/cancelSearch") @ExpectedResponses({ 200 }) @@ -141,6 +204,16 @@ Mono> cancelSearch(@HostParam("$host") String endpoint, @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, @QueryParam("api-version") String apiVersion, @PathParam("tableName") String tableName, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/tables/{tableName}/cancelSearch") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response cancelSearchSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("tableName") String tableName, + @HeaderParam("Accept") String accept, Context context); } /** @@ -172,11 +245,10 @@ private Mono> listByWorkspaceSinglePageAsync(String re if (workspaceName == null) { return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.listByWorkspace(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, apiVersion, accept, context)) + resourceGroupName, workspaceName, this.client.getApiVersion(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), null, null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -187,39 +259,14 @@ private Mono> listByWorkspaceSinglePageAsync(String re * * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return all the tables for the specified Log Analytics workspace along with {@link PagedResponse} on successful - * completion of {@link Mono}. + * @return all the tables for the specified Log Analytics workspace as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByWorkspaceSinglePageAsync(String resourceGroupName, - String workspaceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - final String apiVersion = "2022-10-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service - .listByWorkspace(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - workspaceName, apiVersion, accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), null, null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName) { + return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName)); } /** @@ -230,11 +277,34 @@ private Mono> listByWorkspaceSinglePageAsync(String re * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return all the tables for the specified Log Analytics workspace as paginated response with {@link PagedFlux}. + * @return all the tables for the specified Log Analytics workspace along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName) { - return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceSinglePage(String resourceGroupName, String workspaceName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -246,12 +316,35 @@ private PagedFlux listByWorkspaceAsync(String resourceGroupName, Str * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return all the tables for the specified Log Analytics workspace as paginated response with {@link PagedFlux}. + * @return all the tables for the specified Log Analytics workspace along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByWorkspaceAsync(String resourceGroupName, String workspaceName, + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByWorkspaceSinglePage(String resourceGroupName, String workspaceName, Context context) { - return new PagedFlux<>(() -> listByWorkspaceSinglePageAsync(resourceGroupName, workspaceName, context)); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listByWorkspaceSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -267,7 +360,7 @@ private PagedFlux listByWorkspaceAsync(String resourceGroupName, Str */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName) { - return new PagedIterable<>(listByWorkspaceAsync(resourceGroupName, workspaceName)); + return new PagedIterable<>(() -> listByWorkspaceSinglePage(resourceGroupName, workspaceName)); } /** @@ -284,7 +377,7 @@ public PagedIterable listByWorkspace(String resourceGroupName, Strin */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByWorkspace(String resourceGroupName, String workspaceName, Context context) { - return new PagedIterable<>(listByWorkspaceAsync(resourceGroupName, workspaceName, context)); + return new PagedIterable<>(() -> listByWorkspaceSinglePage(resourceGroupName, workspaceName, context)); } /** @@ -325,11 +418,10 @@ private Mono>> createOrUpdateWithResponseAsync(String } else { parameters.validate(); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, apiVersion, tableName, parameters, accept, context)) + resourceGroupName, workspaceName, this.client.getApiVersion(), tableName, parameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -340,43 +432,45 @@ private Mono>> createOrUpdateWithResponseAsync(String * @param workspaceName The name of the workspace. * @param tableName The name of the table. * @param parameters The parameters required to update table properties. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return workspace data table definition along with {@link Response} on successful completion of {@link Mono}. + * @return workspace data table definition along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> createOrUpdateWithResponseAsync(String resourceGroupName, - String workspaceName, String tableName, TableInner parameters, Context context) { + private Response createOrUpdateWithResponse(String resourceGroupName, String workspaceName, + String tableName, TableInner parameters) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); } if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); } if (tableName == null) { - return Mono.error(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); } if (parameters == null) { - return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); } else { parameters.validate(); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.createOrUpdate(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - workspaceName, apiVersion, tableName, parameters, accept, context); + return service.createOrUpdateSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), tableName, parameters, accept, Context.NONE); } /** @@ -386,18 +480,46 @@ private Mono>> createOrUpdateWithResponseAsync(String * @param workspaceName The name of the workspace. * @param tableName The name of the table. * @param parameters The parameters required to update table properties. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of workspace data table definition. + * @return workspace data table definition along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, TableInner> beginCreateOrUpdateAsync(String resourceGroupName, - String workspaceName, String tableName, TableInner parameters) { - Mono>> mono - = createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, tableName, parameters); - return this.client.getLroResult(mono, this.client.getHttpPipeline(), TableInner.class, - TableInner.class, this.client.getContext()); + @ServiceMethod(returns = ReturnType.SINGLE) + private Response createOrUpdateWithResponse(String resourceGroupName, String workspaceName, + String tableName, TableInner parameters, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (tableName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.createOrUpdateSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), tableName, parameters, accept, context); } /** @@ -407,7 +529,6 @@ private PollerFlux, TableInner> beginCreateOrUpdateAsync( * @param workspaceName The name of the workspace. * @param tableName The name of the table. * @param parameters The parameters required to update table properties. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. @@ -415,12 +536,11 @@ private PollerFlux, TableInner> beginCreateOrUpdateAsync( */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) private PollerFlux, TableInner> beginCreateOrUpdateAsync(String resourceGroupName, - String workspaceName, String tableName, TableInner parameters, Context context) { - context = this.client.mergeContext(context); + String workspaceName, String tableName, TableInner parameters) { Mono>> mono - = createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, tableName, parameters, context); + = createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, tableName, parameters); return this.client.getLroResult(mono, this.client.getHttpPipeline(), TableInner.class, - TableInner.class, context); + TableInner.class, this.client.getContext()); } /** @@ -438,7 +558,10 @@ private PollerFlux, TableInner> beginCreateOrUpdateAsync( @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, TableInner> beginCreateOrUpdate(String resourceGroupName, String workspaceName, String tableName, TableInner parameters) { - return this.beginCreateOrUpdateAsync(resourceGroupName, workspaceName, tableName, parameters).getSyncPoller(); + Response response + = createOrUpdateWithResponse(resourceGroupName, workspaceName, tableName, parameters); + return this.client.getLroResult(response, TableInner.class, TableInner.class, + Context.NONE); } /** @@ -457,8 +580,9 @@ public SyncPoller, TableInner> beginCreateOrUpdate(String @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, TableInner> beginCreateOrUpdate(String resourceGroupName, String workspaceName, String tableName, TableInner parameters, Context context) { - return this.beginCreateOrUpdateAsync(resourceGroupName, workspaceName, tableName, parameters, context) - .getSyncPoller(); + Response response + = createOrUpdateWithResponse(resourceGroupName, workspaceName, tableName, parameters, context); + return this.client.getLroResult(response, TableInner.class, TableInner.class, context); } /** @@ -480,26 +604,6 @@ private Mono createOrUpdateAsync(String resourceGroupName, String wo .flatMap(this.client::getLroFinalResultOrError); } - /** - * Update or Create a Log Analytics workspace table. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param tableName The name of the table. - * @param parameters The parameters required to update table properties. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return workspace data table definition on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono createOrUpdateAsync(String resourceGroupName, String workspaceName, String tableName, - TableInner parameters, Context context) { - return beginCreateOrUpdateAsync(resourceGroupName, workspaceName, tableName, parameters, context).last() - .flatMap(this.client::getLroFinalResultOrError); - } - /** * Update or Create a Log Analytics workspace table. * @@ -515,7 +619,7 @@ private Mono createOrUpdateAsync(String resourceGroupName, String wo @ServiceMethod(returns = ReturnType.SINGLE) public TableInner createOrUpdate(String resourceGroupName, String workspaceName, String tableName, TableInner parameters) { - return createOrUpdateAsync(resourceGroupName, workspaceName, tableName, parameters).block(); + return beginCreateOrUpdate(resourceGroupName, workspaceName, tableName, parameters).getFinalResult(); } /** @@ -534,7 +638,7 @@ public TableInner createOrUpdate(String resourceGroupName, String workspaceName, @ServiceMethod(returns = ReturnType.SINGLE) public TableInner createOrUpdate(String resourceGroupName, String workspaceName, String tableName, TableInner parameters, Context context) { - return createOrUpdateAsync(resourceGroupName, workspaceName, tableName, parameters, context).block(); + return beginCreateOrUpdate(resourceGroupName, workspaceName, tableName, parameters, context).getFinalResult(); } /** @@ -575,11 +679,10 @@ private Mono>> updateWithResponseAsync(String resource } else { parameters.validate(); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, apiVersion, tableName, parameters, accept, context)) + resourceGroupName, workspaceName, this.client.getApiVersion(), tableName, parameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -590,43 +693,45 @@ private Mono>> updateWithResponseAsync(String resource * @param workspaceName The name of the workspace. * @param tableName The name of the table. * @param parameters The parameters required to update table properties. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return workspace data table definition along with {@link Response} on successful completion of {@link Mono}. + * @return workspace data table definition along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> updateWithResponseAsync(String resourceGroupName, String workspaceName, - String tableName, TableInner parameters, Context context) { + private Response updateWithResponse(String resourceGroupName, String workspaceName, String tableName, + TableInner parameters) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); } if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); } if (tableName == null) { - return Mono.error(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); } if (parameters == null) { - return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); } else { parameters.validate(); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - workspaceName, apiVersion, tableName, parameters, accept, context); + return service.updateSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), tableName, parameters, accept, Context.NONE); } /** @@ -636,18 +741,46 @@ private Mono>> updateWithResponseAsync(String resource * @param workspaceName The name of the workspace. * @param tableName The name of the table. * @param parameters The parameters required to update table properties. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of workspace data table definition. + * @return workspace data table definition along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, TableInner> beginUpdateAsync(String resourceGroupName, - String workspaceName, String tableName, TableInner parameters) { - Mono>> mono - = updateWithResponseAsync(resourceGroupName, workspaceName, tableName, parameters); - return this.client.getLroResult(mono, this.client.getHttpPipeline(), TableInner.class, - TableInner.class, this.client.getContext()); + @ServiceMethod(returns = ReturnType.SINGLE) + private Response updateWithResponse(String resourceGroupName, String workspaceName, String tableName, + TableInner parameters, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (tableName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.updateSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), tableName, parameters, accept, context); } /** @@ -657,7 +790,6 @@ private PollerFlux, TableInner> beginUpdateAsync(String r * @param workspaceName The name of the workspace. * @param tableName The name of the table. * @param parameters The parameters required to update table properties. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. @@ -665,12 +797,11 @@ private PollerFlux, TableInner> beginUpdateAsync(String r */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) private PollerFlux, TableInner> beginUpdateAsync(String resourceGroupName, - String workspaceName, String tableName, TableInner parameters, Context context) { - context = this.client.mergeContext(context); + String workspaceName, String tableName, TableInner parameters) { Mono>> mono - = updateWithResponseAsync(resourceGroupName, workspaceName, tableName, parameters, context); + = updateWithResponseAsync(resourceGroupName, workspaceName, tableName, parameters); return this.client.getLroResult(mono, this.client.getHttpPipeline(), TableInner.class, - TableInner.class, context); + TableInner.class, this.client.getContext()); } /** @@ -688,7 +819,9 @@ private PollerFlux, TableInner> beginUpdateAsync(String r @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, TableInner> beginUpdate(String resourceGroupName, String workspaceName, String tableName, TableInner parameters) { - return this.beginUpdateAsync(resourceGroupName, workspaceName, tableName, parameters).getSyncPoller(); + Response response = updateWithResponse(resourceGroupName, workspaceName, tableName, parameters); + return this.client.getLroResult(response, TableInner.class, TableInner.class, + Context.NONE); } /** @@ -707,7 +840,9 @@ public SyncPoller, TableInner> beginUpdate(String resourc @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, TableInner> beginUpdate(String resourceGroupName, String workspaceName, String tableName, TableInner parameters, Context context) { - return this.beginUpdateAsync(resourceGroupName, workspaceName, tableName, parameters, context).getSyncPoller(); + Response response + = updateWithResponse(resourceGroupName, workspaceName, tableName, parameters, context); + return this.client.getLroResult(response, TableInner.class, TableInner.class, context); } /** @@ -729,26 +864,6 @@ private Mono updateAsync(String resourceGroupName, String workspaceN .flatMap(this.client::getLroFinalResultOrError); } - /** - * Update a Log Analytics workspace table. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param tableName The name of the table. - * @param parameters The parameters required to update table properties. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return workspace data table definition on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono updateAsync(String resourceGroupName, String workspaceName, String tableName, - TableInner parameters, Context context) { - return beginUpdateAsync(resourceGroupName, workspaceName, tableName, parameters, context).last() - .flatMap(this.client::getLroFinalResultOrError); - } - /** * Update a Log Analytics workspace table. * @@ -763,7 +878,7 @@ private Mono updateAsync(String resourceGroupName, String workspaceN */ @ServiceMethod(returns = ReturnType.SINGLE) public TableInner update(String resourceGroupName, String workspaceName, String tableName, TableInner parameters) { - return updateAsync(resourceGroupName, workspaceName, tableName, parameters).block(); + return beginUpdate(resourceGroupName, workspaceName, tableName, parameters).getFinalResult(); } /** @@ -782,7 +897,7 @@ public TableInner update(String resourceGroupName, String workspaceName, String @ServiceMethod(returns = ReturnType.SINGLE) public TableInner update(String resourceGroupName, String workspaceName, String tableName, TableInner parameters, Context context) { - return updateAsync(resourceGroupName, workspaceName, tableName, parameters, context).block(); + return beginUpdate(resourceGroupName, workspaceName, tableName, parameters, context).getFinalResult(); } /** @@ -817,54 +932,13 @@ private Mono> getWithResponseAsync(String resourceGroupName if (tableName == null) { return Mono.error(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, apiVersion, tableName, accept, context)) + resourceGroupName, workspaceName, this.client.getApiVersion(), tableName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets a Log Analytics workspace table. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param tableName The name of the table. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a Log Analytics workspace table along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getWithResponseAsync(String resourceGroupName, String workspaceName, - String tableName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (tableName == null) { - return Mono.error(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); - } - final String apiVersion = "2022-10-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, workspaceName, - apiVersion, tableName, accept, context); - } - /** * Gets a Log Analytics workspace table. * @@ -897,7 +971,31 @@ private Mono getAsync(String resourceGroupName, String workspaceName @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(String resourceGroupName, String workspaceName, String tableName, Context context) { - return getWithResponseAsync(resourceGroupName, workspaceName, tableName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (tableName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), tableName, accept, context); } /** @@ -948,11 +1046,10 @@ private Mono>> deleteWithResponseAsync(String resource if (tableName == null) { return Mono.error(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, apiVersion, tableName, accept, context)) + resourceGroupName, workspaceName, this.client.getApiVersion(), tableName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -962,38 +1059,38 @@ private Mono>> deleteWithResponseAsync(String resource * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. * @param tableName The name of the table. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. + * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> deleteWithResponseAsync(String resourceGroupName, String workspaceName, - String tableName, Context context) { + private Response deleteWithResponse(String resourceGroupName, String workspaceName, String tableName) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); } if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); } if (tableName == null) { - return Mono.error(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - workspaceName, apiVersion, tableName, accept, context); + return service.deleteSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), tableName, accept, Context.NONE); } /** @@ -1002,17 +1099,40 @@ private Mono>> deleteWithResponseAsync(String resource * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. * @param tableName The name of the table. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of long-running operation. + * @return the response body along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, Void> beginDeleteAsync(String resourceGroupName, String workspaceName, - String tableName) { - Mono>> mono = deleteWithResponseAsync(resourceGroupName, workspaceName, tableName); - return this.client.getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, - this.client.getContext()); + @ServiceMethod(returns = ReturnType.SINGLE) + private Response deleteWithResponse(String resourceGroupName, String workspaceName, String tableName, + Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (tableName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.deleteSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), tableName, accept, context); } /** @@ -1021,7 +1141,6 @@ private PollerFlux, Void> beginDeleteAsync(String resourceGroup * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. * @param tableName The name of the table. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. @@ -1029,12 +1148,10 @@ private PollerFlux, Void> beginDeleteAsync(String resourceGroup */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) private PollerFlux, Void> beginDeleteAsync(String resourceGroupName, String workspaceName, - String tableName, Context context) { - context = this.client.mergeContext(context); - Mono>> mono - = deleteWithResponseAsync(resourceGroupName, workspaceName, tableName, context); + String tableName) { + Mono>> mono = deleteWithResponseAsync(resourceGroupName, workspaceName, tableName); return this.client.getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, - context); + this.client.getContext()); } /** @@ -1051,7 +1168,8 @@ private PollerFlux, Void> beginDeleteAsync(String resourceGroup @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, Void> beginDelete(String resourceGroupName, String workspaceName, String tableName) { - return this.beginDeleteAsync(resourceGroupName, workspaceName, tableName).getSyncPoller(); + Response response = deleteWithResponse(resourceGroupName, workspaceName, tableName); + return this.client.getLroResult(response, Void.class, Void.class, Context.NONE); } /** @@ -1069,7 +1187,8 @@ public SyncPoller, Void> beginDelete(String resourceGroupName, @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, Void> beginDelete(String resourceGroupName, String workspaceName, String tableName, Context context) { - return this.beginDeleteAsync(resourceGroupName, workspaceName, tableName, context).getSyncPoller(); + Response response = deleteWithResponse(resourceGroupName, workspaceName, tableName, context); + return this.client.getLroResult(response, Void.class, Void.class, context); } /** @@ -1089,24 +1208,6 @@ private Mono deleteAsync(String resourceGroupName, String workspaceName, S .flatMap(this.client::getLroFinalResultOrError); } - /** - * Delete a Log Analytics workspace table. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param tableName The name of the table. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return A {@link Mono} that completes when a successful response is received. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono deleteAsync(String resourceGroupName, String workspaceName, String tableName, Context context) { - return beginDeleteAsync(resourceGroupName, workspaceName, tableName, context).last() - .flatMap(this.client::getLroFinalResultOrError); - } - /** * Delete a Log Analytics workspace table. * @@ -1119,7 +1220,7 @@ private Mono deleteAsync(String resourceGroupName, String workspaceName, S */ @ServiceMethod(returns = ReturnType.SINGLE) public void delete(String resourceGroupName, String workspaceName, String tableName) { - deleteAsync(resourceGroupName, workspaceName, tableName).block(); + beginDelete(resourceGroupName, workspaceName, tableName).getFinalResult(); } /** @@ -1135,7 +1236,7 @@ public void delete(String resourceGroupName, String workspaceName, String tableN */ @ServiceMethod(returns = ReturnType.SINGLE) public void delete(String resourceGroupName, String workspaceName, String tableName, Context context) { - deleteAsync(resourceGroupName, workspaceName, tableName, context).block(); + beginDelete(resourceGroupName, workspaceName, tableName, context).getFinalResult(); } /** @@ -1171,55 +1272,13 @@ private Mono> migrateWithResponseAsync(String resourceGroupName, if (tableName == null) { return Mono.error(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.migrate(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, apiVersion, tableName, accept, context)) + resourceGroupName, workspaceName, this.client.getApiVersion(), tableName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Migrate a Log Analytics table from support of the Data Collector API and Custom Fields features to support of - * Data Collection Rule-based Custom Logs. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param tableName The name of the table. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> migrateWithResponseAsync(String resourceGroupName, String workspaceName, - String tableName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (tableName == null) { - return Mono.error(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); - } - final String apiVersion = "2022-10-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.migrate(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - workspaceName, apiVersion, tableName, accept, context); - } - /** * Migrate a Log Analytics table from support of the Data Collector API and Custom Fields features to support of * Data Collection Rule-based Custom Logs. @@ -1253,7 +1312,31 @@ private Mono migrateAsync(String resourceGroupName, String workspaceName, @ServiceMethod(returns = ReturnType.SINGLE) public Response migrateWithResponse(String resourceGroupName, String workspaceName, String tableName, Context context) { - return migrateWithResponseAsync(resourceGroupName, workspaceName, tableName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (tableName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.migrateSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), tableName, accept, context); } /** @@ -1304,54 +1387,13 @@ private Mono> cancelSearchWithResponseAsync(String resourceGroupN if (tableName == null) { return Mono.error(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.cancelSearch(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, workspaceName, apiVersion, tableName, accept, context)) + resourceGroupName, workspaceName, this.client.getApiVersion(), tableName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Cancel a log analytics workspace search results table query run. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param tableName The name of the table. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> cancelSearchWithResponseAsync(String resourceGroupName, String workspaceName, - String tableName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (tableName == null) { - return Mono.error(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); - } - final String apiVersion = "2022-10-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.cancelSearch(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - workspaceName, apiVersion, tableName, accept, context); - } - /** * Cancel a log analytics workspace search results table query run. * @@ -1384,7 +1426,31 @@ private Mono cancelSearchAsync(String resourceGroupName, String workspaceN @ServiceMethod(returns = ReturnType.SINGLE) public Response cancelSearchWithResponse(String resourceGroupName, String workspaceName, String tableName, Context context) { - return cancelSearchWithResponseAsync(resourceGroupName, workspaceName, tableName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (tableName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter tableName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.cancelSearchSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), tableName, accept, context); } /** @@ -1401,4 +1467,6 @@ public Response cancelSearchWithResponse(String resourceGroupName, String public void cancelSearch(String resourceGroupName, String workspaceName, String tableName) { cancelSearchWithResponse(resourceGroupName, workspaceName, tableName, Context.NONE); } + + private static final ClientLogger LOGGER = new ClientLogger(TablesClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/UsagesClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/UsagesClientImpl.java index 82068fd4360d..73b583fbb460 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/UsagesClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/UsagesClientImpl.java @@ -25,6 +25,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.UsagesClient; import com.azure.resourcemanager.loganalytics.fluent.models.UsageMetricInner; import com.azure.resourcemanager.loganalytics.models.WorkspaceListUsagesResult; @@ -59,7 +60,7 @@ public final class UsagesClientImpl implements UsagesClient { * service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientUsages") public interface UsagesService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/usages") @@ -69,6 +70,15 @@ Mono> list(@HostParam("$host") String endpoi @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/usages") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); } /** @@ -99,11 +109,10 @@ private Mono> listSinglePageAsync(String resourc return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.list(this.client.getEndpoint(), resourceGroupName, workspaceName, - apiVersion, this.client.getSubscriptionId(), accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), null, null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -114,39 +123,14 @@ private Mono> listSinglePageAsync(String resourc * * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of usage metrics for a workspace along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return a list of usage metrics for a workspace as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSinglePageAsync(String resourceGroupName, String workspaceName, - Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service - .list(this.client.getEndpoint(), resourceGroupName, workspaceName, apiVersion, - this.client.getSubscriptionId(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), null, null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listAsync(String resourceGroupName, String workspaceName) { + return new PagedFlux<>(() -> listSinglePageAsync(resourceGroupName, workspaceName)); } /** @@ -157,11 +141,33 @@ private Mono> listSinglePageAsync(String resourc * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of usage metrics for a workspace as paginated response with {@link PagedFlux}. + * @return a list of usage metrics for a workspace along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync(String resourceGroupName, String workspaceName) { - return new PagedFlux<>(() -> listSinglePageAsync(resourceGroupName, workspaceName)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage(String resourceGroupName, String workspaceName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listSync(this.client.getEndpoint(), resourceGroupName, + workspaceName, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -173,11 +179,34 @@ private PagedFlux listAsync(String resourceGroupName, String w * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a list of usage metrics for a workspace as paginated response with {@link PagedFlux}. + * @return a list of usage metrics for a workspace along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync(String resourceGroupName, String workspaceName, Context context) { - return new PagedFlux<>(() -> listSinglePageAsync(resourceGroupName, workspaceName, context)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage(String resourceGroupName, String workspaceName, + Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listSync(this.client.getEndpoint(), resourceGroupName, + workspaceName, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -192,7 +221,7 @@ private PagedFlux listAsync(String resourceGroupName, String w */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list(String resourceGroupName, String workspaceName) { - return new PagedIterable<>(listAsync(resourceGroupName, workspaceName)); + return new PagedIterable<>(() -> listSinglePage(resourceGroupName, workspaceName)); } /** @@ -208,6 +237,8 @@ public PagedIterable list(String resourceGroupName, String wor */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list(String resourceGroupName, String workspaceName, Context context) { - return new PagedIterable<>(listAsync(resourceGroupName, workspaceName, context)); + return new PagedIterable<>(() -> listSinglePage(resourceGroupName, workspaceName, context)); } + + private static final ClientLogger LOGGER = new ClientLogger(UsagesClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspaceImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspaceImpl.java index b2ea3cb7253e..e140e047d854 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspaceImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspaceImpl.java @@ -5,18 +5,21 @@ package com.azure.resourcemanager.loganalytics.implementation; import com.azure.core.management.Region; +import com.azure.core.management.SystemData; import com.azure.core.util.Context; import com.azure.resourcemanager.loganalytics.fluent.models.WorkspaceInner; import com.azure.resourcemanager.loganalytics.models.Identity; import com.azure.resourcemanager.loganalytics.models.PrivateLinkScopedResource; import com.azure.resourcemanager.loganalytics.models.PublicNetworkAccessType; -import com.azure.resourcemanager.loganalytics.models.SystemDataAutoGenerated; import com.azure.resourcemanager.loganalytics.models.Workspace; import com.azure.resourcemanager.loganalytics.models.WorkspaceCapping; import com.azure.resourcemanager.loganalytics.models.WorkspaceEntityStatus; +import com.azure.resourcemanager.loganalytics.models.WorkspaceFailoverProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceFeatures; import com.azure.resourcemanager.loganalytics.models.WorkspacePatch; +import com.azure.resourcemanager.loganalytics.models.WorkspaceReplicationProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceSku; +import java.time.OffsetDateTime; import java.util.Collections; import java.util.List; import java.util.Map; @@ -55,7 +58,7 @@ public Identity identity() { return this.innerModel().identity(); } - public SystemDataAutoGenerated systemData() { + public SystemData systemData() { return this.innerModel().systemData(); } @@ -83,11 +86,11 @@ public WorkspaceCapping workspaceCapping() { return this.innerModel().workspaceCapping(); } - public String createdDate() { + public OffsetDateTime createdDate() { return this.innerModel().createdDate(); } - public String modifiedDate() { + public OffsetDateTime modifiedDate() { return this.innerModel().modifiedDate(); } @@ -120,6 +123,14 @@ public String defaultDataCollectionRuleResourceId() { return this.innerModel().defaultDataCollectionRuleResourceId(); } + public WorkspaceReplicationProperties replication() { + return this.innerModel().replication(); + } + + public WorkspaceFailoverProperties failover() { + return this.innerModel().failover(); + } + public Region region() { return Region.fromName(this.regionName()); } @@ -331,7 +342,27 @@ public WorkspaceImpl withDefaultDataCollectionRuleResourceId(String defaultDataC } } + public WorkspaceImpl withReplication(WorkspaceReplicationProperties replication) { + if (isInCreateMode()) { + this.innerModel().withReplication(replication); + return this; + } else { + this.updateParameters.withReplication(replication); + return this; + } + } + + public WorkspaceImpl withFailover(WorkspaceFailoverProperties failover) { + if (isInCreateMode()) { + this.innerModel().withFailover(failover); + return this; + } else { + this.updateParameters.withFailover(failover); + return this; + } + } + private boolean isInCreateMode() { - return this.innerModel().id() == null; + return this.innerModel() == null || this.innerModel().id() == null; } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspacePurgesClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspacePurgesClientImpl.java index 9f03aae1ad81..5fc531cba2ee 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspacePurgesClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspacePurgesClientImpl.java @@ -23,6 +23,7 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.WorkspacePurgesClient; import com.azure.resourcemanager.loganalytics.fluent.models.WorkspacePurgeResponseInner; import com.azure.resourcemanager.loganalytics.fluent.models.WorkspacePurgeStatusResponseInner; @@ -60,7 +61,7 @@ public final class WorkspacePurgesClientImpl implements WorkspacePurgesClient { * proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientWorkspacePurges") public interface WorkspacePurgesService { @Headers({ "Content-Type: application/json" }) @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/purge") @@ -72,6 +73,16 @@ Mono purge(@HostParam("$host") String endpoint, @BodyParam("application/json") WorkspacePurgeBody body, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/purge") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + WorkspacePurgesPurgeResponse purgeSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @PathParam("workspaceName") String workspaceName, + @BodyParam("application/json") WorkspacePurgeBody body, @HeaderParam("Accept") String accept, + Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/operations/{purgeId}") @ExpectedResponses({ 200 }) @@ -80,6 +91,15 @@ Mono> getPurgeStatus(@HostParam("$ho @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @PathParam("workspaceName") String workspaceName, @PathParam("purgeId") String purgeId, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/operations/{purgeId}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getPurgeStatusSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @PathParam("workspaceName") String workspaceName, + @PathParam("purgeId") String purgeId, @HeaderParam("Accept") String accept, Context context); } /** @@ -124,64 +144,13 @@ private Mono purgeWithResponseAsync(String resourc } else { body.validate(); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.purge(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), workspaceName, body, accept, context)) + .withContext(context -> service.purge(this.client.getEndpoint(), resourceGroupName, + this.client.getApiVersion(), this.client.getSubscriptionId(), workspaceName, body, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Purges data in an Log Analytics workspace by a set of user-defined filters. - * - * In order to manage system resources, purge requests are throttled at 50 requests per hour. You should batch the - * execution of purge requests by sending a single command whose predicate includes all user identities that require - * purging. Use the in operator to specify multiple identities. You should run the query prior to using for a purge - * request to verify that the results are expected. - * Log Analytics only supports purge operations required for compliance with GDPR. The Log Analytics product team - * reserves the right to reject requests for purge operations that are not for the purpose of GDPR compliance. In - * the event of a dispute, please create a support ticket. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param body Describes the body of a request to purge data in a single table of an Log Analytics Workspace. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return response containing operationId for a specific purge action on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono purgeWithResponseAsync(String resourceGroupName, String workspaceName, - WorkspacePurgeBody body, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (body == null) { - return Mono.error(new IllegalArgumentException("Parameter body is required and cannot be null.")); - } else { - body.validate(); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.purge(this.client.getEndpoint(), resourceGroupName, apiVersion, this.client.getSubscriptionId(), - workspaceName, body, accept, context); - } - /** * Purges data in an Log Analytics workspace by a set of user-defined filters. * @@ -231,7 +200,32 @@ private Mono purgeAsync(String resourceGroupName, S @ServiceMethod(returns = ReturnType.SINGLE) public WorkspacePurgesPurgeResponse purgeWithResponse(String resourceGroupName, String workspaceName, WorkspacePurgeBody body, Context context) { - return purgeWithResponseAsync(resourceGroupName, workspaceName, body, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (body == null) { + throw LOGGER.atError().log(new IllegalArgumentException("Parameter body is required and cannot be null.")); + } else { + body.validate(); + } + final String accept = "application/json"; + return service.purgeSync(this.client.getEndpoint(), resourceGroupName, this.client.getApiVersion(), + this.client.getSubscriptionId(), workspaceName, body, accept, context); } /** @@ -291,55 +285,13 @@ private Mono> getPurgeStatusWithResp if (purgeId == null) { return Mono.error(new IllegalArgumentException("Parameter purgeId is required and cannot be null.")); } - final String apiVersion = "2020-08-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.getPurgeStatus(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), workspaceName, purgeId, accept, context)) + .withContext(context -> service.getPurgeStatus(this.client.getEndpoint(), resourceGroupName, + this.client.getApiVersion(), this.client.getSubscriptionId(), workspaceName, purgeId, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets status of an ongoing purge operation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param purgeId In a purge status request, this is the Id of the operation the status of which is returned. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return status of an ongoing purge operation along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getPurgeStatusWithResponseAsync(String resourceGroupName, - String workspaceName, String purgeId, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (purgeId == null) { - return Mono.error(new IllegalArgumentException("Parameter purgeId is required and cannot be null.")); - } - final String apiVersion = "2020-08-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.getPurgeStatus(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), workspaceName, purgeId, accept, context); - } - /** * Gets status of an ongoing purge operation. * @@ -373,7 +325,31 @@ private Mono getPurgeStatusAsync(String resou @ServiceMethod(returns = ReturnType.SINGLE) public Response getPurgeStatusWithResponse(String resourceGroupName, String workspaceName, String purgeId, Context context) { - return getPurgeStatusWithResponseAsync(resourceGroupName, workspaceName, purgeId, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (purgeId == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter purgeId is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getPurgeStatusSync(this.client.getEndpoint(), resourceGroupName, this.client.getApiVersion(), + this.client.getSubscriptionId(), workspaceName, purgeId, accept, context); } /** @@ -392,4 +368,6 @@ public WorkspacePurgeStatusResponseInner getPurgeStatus(String resourceGroupName String purgeId) { return getPurgeStatusWithResponse(resourceGroupName, workspaceName, purgeId, Context.NONE).getValue(); } + + private static final ClientLogger LOGGER = new ClientLogger(WorkspacePurgesClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspacesClientImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspacesClientImpl.java index 271666c99ac4..81ff2fb97155 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspacesClientImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspacesClientImpl.java @@ -14,6 +14,7 @@ import com.azure.core.annotation.HostParam; import com.azure.core.annotation.Patch; import com.azure.core.annotation.PathParam; +import com.azure.core.annotation.Post; import com.azure.core.annotation.Put; import com.azure.core.annotation.QueryParam; import com.azure.core.annotation.ReturnType; @@ -28,12 +29,16 @@ import com.azure.core.http.rest.RestProxy; import com.azure.core.management.exception.ManagementException; import com.azure.core.management.polling.PollResult; +import com.azure.core.util.BinaryData; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.polling.PollerFlux; import com.azure.core.util.polling.SyncPoller; import com.azure.resourcemanager.loganalytics.fluent.WorkspacesClient; +import com.azure.resourcemanager.loganalytics.fluent.models.NetworkSecurityPerimeterConfigurationInner; import com.azure.resourcemanager.loganalytics.fluent.models.WorkspaceInner; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeterConfigurationListResult; import com.azure.resourcemanager.loganalytics.models.WorkspaceListResult; import com.azure.resourcemanager.loganalytics.models.WorkspacePatch; import java.nio.ByteBuffer; @@ -70,7 +75,7 @@ public final class WorkspacesClientImpl implements WorkspacesClient { * service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "OperationalInsightsM") + @ServiceInterface(name = "OperationalInsightsManagementClientWorkspaces") public interface WorkspacesService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/providers/Microsoft.OperationalInsights/workspaces") @@ -80,6 +85,14 @@ Mono> list(@HostParam("$host") String endpoint, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/providers/Microsoft.OperationalInsights/workspaces") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listSync(@HostParam("$host") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces") @ExpectedResponses({ 200 }) @@ -88,6 +101,14 @@ Mono> listByResourceGroup(@HostParam("$host") Stri @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listByResourceGroupSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @QueryParam("api-version") String apiVersion, + @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}") @ExpectedResponses({ 200, 201, 202 }) @@ -98,6 +119,16 @@ Mono>> createOrUpdate(@HostParam("$host") String endpo @BodyParam("application/json") WorkspaceInner parameters, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Put("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}") + @ExpectedResponses({ 200, 201, 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response createOrUpdateSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @BodyParam("application/json") WorkspaceInner parameters, @HeaderParam("Accept") String accept, + Context context); + @Headers({ "Content-Type: application/json" }) @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}") @ExpectedResponses({ 200, 202, 204 }) @@ -107,6 +138,15 @@ Mono>> delete(@HostParam("$host") String endpoint, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @QueryParam("force") Boolean force, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Delete("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}") + @ExpectedResponses({ 200, 202, 204 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response deleteSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @QueryParam("force") Boolean force, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}") @ExpectedResponses({ 200 }) @@ -116,6 +156,15 @@ Mono> getByResourceGroup(@HostParam("$host") String end @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getByResourceGroupSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Patch("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}") @ExpectedResponses({ 200 }) @@ -125,6 +174,128 @@ Mono> update(@HostParam("$host") String endpoint, @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @BodyParam("application/json") WorkspacePatch parameters, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Patch("/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response updateSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @BodyParam("application/json") WorkspacePatch parameters, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/locations/{location}/workspaces/{workspaceName}/failover") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono>> failover(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("location") String location, + @PathParam("workspaceName") String workspaceName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/locations/{location}/workspaces/{workspaceName}/failover") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response failoverSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("location") String location, + @PathParam("workspaceName") String workspaceName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/failback") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono>> failback(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/failback") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response failbackSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/networkSecurityPerimeterConfigurations") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> listNsp(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/networkSecurityPerimeterConfigurations") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listNspSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/networkSecurityPerimeterConfigurations/{networkSecurityPerimeterConfigurationName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> getNsp(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @PathParam("networkSecurityPerimeterConfigurationName") String networkSecurityPerimeterConfigurationName, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/networkSecurityPerimeterConfigurations/{networkSecurityPerimeterConfigurationName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getNspSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @PathParam("networkSecurityPerimeterConfigurationName") String networkSecurityPerimeterConfigurationName, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/networkSecurityPerimeterConfigurations/{networkSecurityPerimeterConfigurationName}/reconcile") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono>> reconcileNsp(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @PathParam("networkSecurityPerimeterConfigurationName") String networkSecurityPerimeterConfigurationName, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/networkSecurityPerimeterConfigurations/{networkSecurityPerimeterConfigurationName}/reconcile") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response reconcileNspSync(@HostParam("$host") String endpoint, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("workspaceName") String workspaceName, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @PathParam("networkSecurityPerimeterConfigurationName") String networkSecurityPerimeterConfigurationName, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> listNspNext( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listNspNextSync( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @HeaderParam("Accept") String accept, Context context); } /** @@ -145,11 +316,10 @@ private Mono> listSinglePageAsync() { return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - accept, context)) + .withContext(context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), null, null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -158,29 +328,13 @@ private Mono> listSinglePageAsync() { /** * Gets the workspaces in a subscription. * - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the workspaces in a subscription along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return the workspaces in a subscription as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSinglePageAsync(Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2022-10-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), null, null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listAsync() { + return new PagedFlux<>(() -> listSinglePageAsync()); } /** @@ -188,11 +342,25 @@ private Mono> listSinglePageAsync(Context context) * * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the workspaces in a subscription as paginated response with {@link PagedFlux}. + * @return the workspaces in a subscription along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync() { - return new PagedFlux<>(() -> listSinglePageAsync()); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage() { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -202,11 +370,25 @@ private PagedFlux listAsync() { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the workspaces in a subscription as paginated response with {@link PagedFlux}. + * @return the workspaces in a subscription along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync(Context context) { - return new PagedFlux<>(() -> listSinglePageAsync(context)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage(Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -218,7 +400,7 @@ private PagedFlux listAsync(Context context) { */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list() { - return new PagedIterable<>(listAsync()); + return new PagedIterable<>(() -> listSinglePage()); } /** @@ -232,7 +414,7 @@ public PagedIterable list() { */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable list(Context context) { - return new PagedIterable<>(listAsync(context)); + return new PagedIterable<>(() -> listSinglePage(context)); } /** @@ -258,11 +440,10 @@ private Mono> listByResourceGroupSinglePageAsync(S return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.listByResourceGroup(this.client.getEndpoint(), resourceGroupName, - apiVersion, this.client.getSubscriptionId(), accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), null, null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -272,35 +453,14 @@ private Mono> listByResourceGroupSinglePageAsync(S * Gets workspaces in a resource group. * * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return workspaces in a resource group along with {@link PagedResponse} on successful completion of {@link Mono}. + * @return workspaces in a resource group as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByResourceGroupSinglePageAsync(String resourceGroupName, - Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2022-10-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service - .listByResourceGroup(this.client.getEndpoint(), resourceGroupName, apiVersion, - this.client.getSubscriptionId(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), null, null)); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listByResourceGroupAsync(String resourceGroupName) { + return new PagedFlux<>(() -> listByResourceGroupSinglePageAsync(resourceGroupName)); } /** @@ -310,11 +470,29 @@ private Mono> listByResourceGroupSinglePageAsync(S * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return workspaces in a resource group as paginated response with {@link PagedFlux}. + * @return workspaces in a resource group along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByResourceGroupAsync(String resourceGroupName) { - return new PagedFlux<>(() -> listByResourceGroupSinglePageAsync(resourceGroupName)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByResourceGroupSinglePage(String resourceGroupName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listByResourceGroupSync(this.client.getEndpoint(), + resourceGroupName, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -325,11 +503,29 @@ private PagedFlux listByResourceGroupAsync(String resourceGroupN * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return workspaces in a resource group as paginated response with {@link PagedFlux}. + * @return workspaces in a resource group along with {@link PagedResponse}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByResourceGroupAsync(String resourceGroupName, Context context) { - return new PagedFlux<>(() -> listByResourceGroupSinglePageAsync(resourceGroupName, context)); + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listByResourceGroupSinglePage(String resourceGroupName, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listByResourceGroupSync(this.client.getEndpoint(), + resourceGroupName, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + null, null); } /** @@ -343,7 +539,7 @@ private PagedFlux listByResourceGroupAsync(String resourceGroupN */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByResourceGroup(String resourceGroupName) { - return new PagedIterable<>(listByResourceGroupAsync(resourceGroupName)); + return new PagedIterable<>(() -> listByResourceGroupSinglePage(resourceGroupName)); } /** @@ -358,7 +554,7 @@ public PagedIterable listByResourceGroup(String resourceGroupNam */ @ServiceMethod(returns = ReturnType.COLLECTION) public PagedIterable listByResourceGroup(String resourceGroupName, Context context) { - return new PagedIterable<>(listByResourceGroupAsync(resourceGroupName, context)); + return new PagedIterable<>(() -> listByResourceGroupSinglePage(resourceGroupName, context)); } /** @@ -396,11 +592,10 @@ private Mono>> createOrUpdateWithResponseAsync(String } else { parameters.validate(); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, workspaceName, - apiVersion, this.client.getSubscriptionId(), parameters, accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), parameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -410,41 +605,41 @@ private Mono>> createOrUpdateWithResponseAsync(String * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. * @param parameters The parameters required to create or update a workspace. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Workspace resource container along with {@link Response} on successful completion of - * {@link Mono}. + * @return the top level Workspace resource container along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> createOrUpdateWithResponseAsync(String resourceGroupName, - String workspaceName, WorkspaceInner parameters, Context context) { + private Response createOrUpdateWithResponse(String resourceGroupName, String workspaceName, + WorkspaceInner parameters) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); } if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); } if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } if (parameters == null) { - return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); } else { parameters.validate(); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.createOrUpdate(this.client.getEndpoint(), resourceGroupName, workspaceName, apiVersion, - this.client.getSubscriptionId(), parameters, accept, context); + return service.createOrUpdateSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), parameters, accept, Context.NONE); } /** @@ -453,18 +648,42 @@ private Mono>> createOrUpdateWithResponseAsync(String * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. * @param parameters The parameters required to create or update a workspace. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of the top level Workspace resource container. + * @return the top level Workspace resource container along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, WorkspaceInner> beginCreateOrUpdateAsync(String resourceGroupName, - String workspaceName, WorkspaceInner parameters) { - Mono>> mono - = createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, parameters); - return this.client.getLroResult(mono, this.client.getHttpPipeline(), - WorkspaceInner.class, WorkspaceInner.class, this.client.getContext()); + @ServiceMethod(returns = ReturnType.SINGLE) + private Response createOrUpdateWithResponse(String resourceGroupName, String workspaceName, + WorkspaceInner parameters, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (parameters == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + } else { + parameters.validate(); + } + final String accept = "application/json"; + return service.createOrUpdateSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), parameters, accept, context); } /** @@ -473,7 +692,6 @@ private PollerFlux, WorkspaceInner> beginCreateOrUpda * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. * @param parameters The parameters required to create or update a workspace. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. @@ -481,12 +699,11 @@ private PollerFlux, WorkspaceInner> beginCreateOrUpda */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) private PollerFlux, WorkspaceInner> beginCreateOrUpdateAsync(String resourceGroupName, - String workspaceName, WorkspaceInner parameters, Context context) { - context = this.client.mergeContext(context); + String workspaceName, WorkspaceInner parameters) { Mono>> mono - = createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, parameters, context); + = createOrUpdateWithResponseAsync(resourceGroupName, workspaceName, parameters); return this.client.getLroResult(mono, this.client.getHttpPipeline(), - WorkspaceInner.class, WorkspaceInner.class, context); + WorkspaceInner.class, WorkspaceInner.class, this.client.getContext()); } /** @@ -503,7 +720,9 @@ private PollerFlux, WorkspaceInner> beginCreateOrUpda @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, WorkspaceInner> beginCreateOrUpdate(String resourceGroupName, String workspaceName, WorkspaceInner parameters) { - return this.beginCreateOrUpdateAsync(resourceGroupName, workspaceName, parameters).getSyncPoller(); + Response response = createOrUpdateWithResponse(resourceGroupName, workspaceName, parameters); + return this.client.getLroResult(response, WorkspaceInner.class, + WorkspaceInner.class, Context.NONE); } /** @@ -521,7 +740,10 @@ public SyncPoller, WorkspaceInner> beginCreateOrUpdat @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, WorkspaceInner> beginCreateOrUpdate(String resourceGroupName, String workspaceName, WorkspaceInner parameters, Context context) { - return this.beginCreateOrUpdateAsync(resourceGroupName, workspaceName, parameters, context).getSyncPoller(); + Response response + = createOrUpdateWithResponse(resourceGroupName, workspaceName, parameters, context); + return this.client.getLroResult(response, WorkspaceInner.class, + WorkspaceInner.class, context); } /** @@ -548,17 +770,14 @@ private Mono createOrUpdateAsync(String resourceGroupName, Strin * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. * @param parameters The parameters required to create or update a workspace. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Workspace resource container on successful completion of {@link Mono}. + * @return the top level Workspace resource container. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono createOrUpdateAsync(String resourceGroupName, String workspaceName, - WorkspaceInner parameters, Context context) { - return beginCreateOrUpdateAsync(resourceGroupName, workspaceName, parameters, context).last() - .flatMap(this.client::getLroFinalResultOrError); + public WorkspaceInner createOrUpdate(String resourceGroupName, String workspaceName, WorkspaceInner parameters) { + return beginCreateOrUpdate(resourceGroupName, workspaceName, parameters).getFinalResult(); } /** @@ -567,32 +786,55 @@ private Mono createOrUpdateAsync(String resourceGroupName, Strin * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. * @param parameters The parameters required to create or update a workspace. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return the top level Workspace resource container. */ @ServiceMethod(returns = ReturnType.SINGLE) - public WorkspaceInner createOrUpdate(String resourceGroupName, String workspaceName, WorkspaceInner parameters) { - return createOrUpdateAsync(resourceGroupName, workspaceName, parameters).block(); + public WorkspaceInner createOrUpdate(String resourceGroupName, String workspaceName, WorkspaceInner parameters, + Context context) { + return beginCreateOrUpdate(resourceGroupName, workspaceName, parameters, context).getFinalResult(); } /** - * Create or update a workspace. + * Deletes a workspace resource. To recover the workspace, create it again with the same name, in the same + * subscription, resource group and location. The name is kept for 14 days and cannot be used for another workspace. + * To remove the workspace completely and release the name, use the force flag. * * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param workspaceName The name of the workspace. - * @param parameters The parameters required to create or update a workspace. - * @param context The context to associate with this operation. + * @param force Deletes the workspace without the recovery option. A workspace that was deleted with this flag + * cannot be recovered. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Workspace resource container. + * @return the {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public WorkspaceInner createOrUpdate(String resourceGroupName, String workspaceName, WorkspaceInner parameters, - Context context) { - return createOrUpdateAsync(resourceGroupName, workspaceName, parameters, context).block(); + private Mono>> deleteWithResponseAsync(String resourceGroupName, String workspaceName, + Boolean force) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.delete(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), force, accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** @@ -607,32 +849,31 @@ public WorkspaceInner createOrUpdate(String resourceGroupName, String workspaceN * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. + * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> deleteWithResponseAsync(String resourceGroupName, String workspaceName, - Boolean force) { + private Response deleteWithResponse(String resourceGroupName, String workspaceName, Boolean force) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); } if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); } if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.delete(this.client.getEndpoint(), resourceGroupName, workspaceName, - apiVersion, this.client.getSubscriptionId(), force, accept, context)) - .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + return service.deleteSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), force, accept, Context.NONE); } /** @@ -648,31 +889,32 @@ private Mono>> deleteWithResponseAsync(String resource * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. + * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> deleteWithResponseAsync(String resourceGroupName, String workspaceName, - Boolean force, Context context) { + private Response deleteWithResponse(String resourceGroupName, String workspaceName, Boolean force, + Context context) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); } if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); } if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), resourceGroupName, workspaceName, apiVersion, - this.client.getSubscriptionId(), force, accept, context); + return service.deleteSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), force, accept, context); } /** @@ -726,20 +968,16 @@ private PollerFlux, Void> beginDeleteAsync(String resourceGroup * @param workspaceName The name of the workspace. * @param force Deletes the workspace without the recovery option. A workspace that was deleted with this flag * cannot be recovered. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of long-running operation. + * @return the {@link SyncPoller} for polling of long-running operation. */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, Void> beginDeleteAsync(String resourceGroupName, String workspaceName, - Boolean force, Context context) { - context = this.client.mergeContext(context); - Mono>> mono - = deleteWithResponseAsync(resourceGroupName, workspaceName, force, context); - return this.client.getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, - context); + public SyncPoller, Void> beginDelete(String resourceGroupName, String workspaceName, + Boolean force) { + Response response = deleteWithResponse(resourceGroupName, workspaceName, force); + return this.client.getLroResult(response, Void.class, Void.class, Context.NONE); } /** @@ -757,7 +995,8 @@ private PollerFlux, Void> beginDeleteAsync(String resourceGroup @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, Void> beginDelete(String resourceGroupName, String workspaceName) { final Boolean force = null; - return this.beginDeleteAsync(resourceGroupName, workspaceName, force).getSyncPoller(); + Response response = deleteWithResponse(resourceGroupName, workspaceName, force); + return this.client.getLroResult(response, Void.class, Void.class, Context.NONE); } /** @@ -778,7 +1017,8 @@ public SyncPoller, Void> beginDelete(String resourceGroupName, @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) public SyncPoller, Void> beginDelete(String resourceGroupName, String workspaceName, Boolean force, Context context) { - return this.beginDeleteAsync(resourceGroupName, workspaceName, force, context).getSyncPoller(); + Response response = deleteWithResponse(resourceGroupName, workspaceName, force, context); + return this.client.getLroResult(response, Void.class, Void.class, context); } /** @@ -820,27 +1060,6 @@ private Mono deleteAsync(String resourceGroupName, String workspaceName) { .flatMap(this.client::getLroFinalResultOrError); } - /** - * Deletes a workspace resource. To recover the workspace, create it again with the same name, in the same - * subscription, resource group and location. The name is kept for 14 days and cannot be used for another workspace. - * To remove the workspace completely and release the name, use the force flag. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param force Deletes the workspace without the recovery option. A workspace that was deleted with this flag - * cannot be recovered. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return A {@link Mono} that completes when a successful response is received. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono deleteAsync(String resourceGroupName, String workspaceName, Boolean force, Context context) { - return beginDeleteAsync(resourceGroupName, workspaceName, force, context).last() - .flatMap(this.client::getLroFinalResultOrError); - } - /** * Deletes a workspace resource. To recover the workspace, create it again with the same name, in the same * subscription, resource group and location. The name is kept for 14 days and cannot be used for another workspace. @@ -855,7 +1074,7 @@ private Mono deleteAsync(String resourceGroupName, String workspaceName, B @ServiceMethod(returns = ReturnType.SINGLE) public void delete(String resourceGroupName, String workspaceName) { final Boolean force = null; - deleteAsync(resourceGroupName, workspaceName, force).block(); + beginDelete(resourceGroupName, workspaceName, force).getFinalResult(); } /** @@ -874,7 +1093,7 @@ public void delete(String resourceGroupName, String workspaceName) { */ @ServiceMethod(returns = ReturnType.SINGLE) public void delete(String resourceGroupName, String workspaceName, Boolean force, Context context) { - deleteAsync(resourceGroupName, workspaceName, force, context).block(); + beginDelete(resourceGroupName, workspaceName, force, context).getFinalResult(); } /** @@ -905,50 +1124,13 @@ private Mono> getByResourceGroupWithResponseAsync(Strin return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.getByResourceGroup(this.client.getEndpoint(), resourceGroupName, - workspaceName, apiVersion, this.client.getSubscriptionId(), accept, context)) + workspaceName, this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } - /** - * Gets a workspace instance. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param workspaceName The name of the workspace. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a workspace instance along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getByResourceGroupWithResponseAsync(String resourceGroupName, - String workspaceName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - final String apiVersion = "2022-10-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.getByResourceGroup(this.client.getEndpoint(), resourceGroupName, workspaceName, apiVersion, - this.client.getSubscriptionId(), accept, context); - } - /** * Gets a workspace instance. * @@ -979,7 +1161,27 @@ private Mono getByResourceGroupAsync(String resourceGroupName, S @ServiceMethod(returns = ReturnType.SINGLE) public Response getByResourceGroupWithResponse(String resourceGroupName, String workspaceName, Context context) { - return getByResourceGroupWithResponseAsync(resourceGroupName, workspaceName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getByResourceGroupSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); } /** @@ -1032,14 +1234,31 @@ private Mono> updateWithResponseAsync(String resourceGr } else { parameters.validate(); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.update(this.client.getEndpoint(), resourceGroupName, workspaceName, - apiVersion, this.client.getSubscriptionId(), parameters, accept, context)) + this.client.getApiVersion(), this.client.getSubscriptionId(), parameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } + /** + * Updates a workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param parameters The parameters required to patch a workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the top level Workspace resource container on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono updateAsync(String resourceGroupName, String workspaceName, + WorkspacePatch parameters) { + return updateWithResponseAsync(resourceGroupName, workspaceName, parameters) + .flatMap(res -> Mono.justOrEmpty(res.getValue())); + } + /** * Updates a workspace. * @@ -1050,37 +1269,38 @@ private Mono> updateWithResponseAsync(String resourceGr * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Workspace resource container along with {@link Response} on successful completion of - * {@link Mono}. + * @return the top level Workspace resource container along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> updateWithResponseAsync(String resourceGroupName, String workspaceName, + public Response updateWithResponse(String resourceGroupName, String workspaceName, WorkspacePatch parameters, Context context) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); } if (workspaceName == null) { - return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); } if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } if (parameters == null) { - return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); } else { parameters.validate(); } - final String apiVersion = "2022-10-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.update(this.client.getEndpoint(), resourceGroupName, workspaceName, apiVersion, - this.client.getSubscriptionId(), parameters, accept, context); + return service.updateSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), parameters, accept, context); } /** @@ -1092,46 +1312,1118 @@ private Mono> updateWithResponseAsync(String resourceGr * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Workspace resource container on successful completion of {@link Mono}. + * @return the top level Workspace resource container. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono updateAsync(String resourceGroupName, String workspaceName, - WorkspacePatch parameters) { - return updateWithResponseAsync(resourceGroupName, workspaceName, parameters) - .flatMap(res -> Mono.justOrEmpty(res.getValue())); + public WorkspaceInner update(String resourceGroupName, String workspaceName, WorkspacePatch parameters) { + return updateWithResponse(resourceGroupName, workspaceName, parameters, Context.NONE).getValue(); } /** - * Updates a workspace. + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. * * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. * @param workspaceName The name of the workspace. - * @param parameters The parameters required to patch a workspace. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Workspace resource container along with {@link Response}. + * @return the {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response updateWithResponse(String resourceGroupName, String workspaceName, - WorkspacePatch parameters, Context context) { - return updateWithResponseAsync(resourceGroupName, workspaceName, parameters, context).block(); + private Mono>> failoverWithResponseAsync(String resourceGroupName, String location, + String workspaceName) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (location == null) { + return Mono.error(new IllegalArgumentException("Parameter location is required and cannot be null.")); + } + if (workspaceName == null) { + return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.failover(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, location, workspaceName, this.client.getApiVersion(), accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** - * Updates a workspace. + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. * * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. * @param workspaceName The name of the workspace. - * @param parameters The parameters required to patch a workspace. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the top level Workspace resource container. + * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public WorkspaceInner update(String resourceGroupName, String workspaceName, WorkspacePatch parameters) { - return updateWithResponse(resourceGroupName, workspaceName, parameters, Context.NONE).getValue(); + private Response failoverWithResponse(String resourceGroupName, String location, String workspaceName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (location == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter location is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.failoverSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + location, workspaceName, this.client.getApiVersion(), accept, Context.NONE); + } + + /** + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response failoverWithResponse(String resourceGroupName, String location, String workspaceName, + Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (location == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter location is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.failoverSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + location, workspaceName, this.client.getApiVersion(), accept, context); + } + + /** + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link PollerFlux} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + private PollerFlux, Void> beginFailoverAsync(String resourceGroupName, String location, + String workspaceName) { + Mono>> mono = failoverWithResponseAsync(resourceGroupName, location, workspaceName); + return this.client.getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, + this.client.getContext()); + } + + /** + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, Void> beginFailover(String resourceGroupName, String location, + String workspaceName) { + Response response = failoverWithResponse(resourceGroupName, location, workspaceName); + return this.client.getLroResult(response, Void.class, Void.class, Context.NONE); } + + /** + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, Void> beginFailover(String resourceGroupName, String location, + String workspaceName, Context context) { + Response response = failoverWithResponse(resourceGroupName, location, workspaceName, context); + return this.client.getLroResult(response, Void.class, Void.class, context); + } + + /** + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return A {@link Mono} that completes when a successful response is received. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono failoverAsync(String resourceGroupName, String location, String workspaceName) { + return beginFailoverAsync(resourceGroupName, location, workspaceName).last() + .flatMap(this.client::getLroFinalResultOrError); + } + + /** + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public void failover(String resourceGroupName, String location, String workspaceName) { + beginFailover(resourceGroupName, location, workspaceName).getFinalResult(); + } + + /** + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public void failover(String resourceGroupName, String location, String workspaceName, Context context) { + beginFailover(resourceGroupName, location, workspaceName, context).getFinalResult(); + } + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono>> failbackWithResponseAsync(String resourceGroupName, String workspaceName) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.failback(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, workspaceName, this.client.getApiVersion(), accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response failbackWithResponse(String resourceGroupName, String workspaceName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.failbackSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), accept, Context.NONE); + } + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response failbackWithResponse(String resourceGroupName, String workspaceName, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.failbackSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + workspaceName, this.client.getApiVersion(), accept, context); + } + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link PollerFlux} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + private PollerFlux, Void> beginFailbackAsync(String resourceGroupName, String workspaceName) { + Mono>> mono = failbackWithResponseAsync(resourceGroupName, workspaceName); + return this.client.getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, + this.client.getContext()); + } + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, Void> beginFailback(String resourceGroupName, String workspaceName) { + Response response = failbackWithResponse(resourceGroupName, workspaceName); + return this.client.getLroResult(response, Void.class, Void.class, Context.NONE); + } + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, Void> beginFailback(String resourceGroupName, String workspaceName, + Context context) { + Response response = failbackWithResponse(resourceGroupName, workspaceName, context); + return this.client.getLroResult(response, Void.class, Void.class, context); + } + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return A {@link Mono} that completes when a successful response is received. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono failbackAsync(String resourceGroupName, String workspaceName) { + return beginFailbackAsync(resourceGroupName, workspaceName).last() + .flatMap(this.client::getLroFinalResultOrError); + } + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public void failback(String resourceGroupName, String workspaceName) { + beginFailback(resourceGroupName, workspaceName).getFinalResult(); + } + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public void failback(String resourceGroupName, String workspaceName, Context context) { + beginFailback(resourceGroupName, workspaceName, context).getFinalResult(); + } + + /** + * Gets a list of NSP configurations for specified workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of NSP configurations for specified workspace along with {@link PagedResponse} on successful + * completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> + listNspSinglePageAsync(String resourceGroupName, String workspaceName) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.listNsp(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context)) + .>map( + res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + res.getValue().value(), res.getValue().nextLink(), null)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Gets a list of NSP configurations for specified workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of NSP configurations for specified workspace as paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listNspAsync(String resourceGroupName, + String workspaceName) { + return new PagedFlux<>(() -> listNspSinglePageAsync(resourceGroupName, workspaceName), + nextLink -> listNspNextSinglePageAsync(nextLink)); + } + + /** + * Gets a list of NSP configurations for specified workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of NSP configurations for specified workspace along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listNspSinglePage(String resourceGroupName, + String workspaceName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listNspSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + + /** + * Gets a list of NSP configurations for specified workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of NSP configurations for specified workspace along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listNspSinglePage(String resourceGroupName, + String workspaceName, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listNspSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + + /** + * Gets a list of NSP configurations for specified workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of NSP configurations for specified workspace as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listNsp(String resourceGroupName, + String workspaceName) { + return new PagedIterable<>(() -> listNspSinglePage(resourceGroupName, workspaceName), + nextLink -> listNspNextSinglePage(nextLink)); + } + + /** + * Gets a list of NSP configurations for specified workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of NSP configurations for specified workspace as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listNsp(String resourceGroupName, + String workspaceName, Context context) { + return new PagedIterable<>(() -> listNspSinglePage(resourceGroupName, workspaceName, context), + nextLink -> listNspNextSinglePage(nextLink, context)); + } + + /** + * Gets a network security perimeter configuration. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a network security perimeter configuration along with {@link Response} on successful completion of + * {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> getNspWithResponseAsync(String resourceGroupName, + String workspaceName, String networkSecurityPerimeterConfigurationName) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (networkSecurityPerimeterConfigurationName == null) { + return Mono.error(new IllegalArgumentException( + "Parameter networkSecurityPerimeterConfigurationName is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.getNsp(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), networkSecurityPerimeterConfigurationName, + accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Gets a network security perimeter configuration. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a network security perimeter configuration on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono getNspAsync(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName) { + return getNspWithResponseAsync(resourceGroupName, workspaceName, networkSecurityPerimeterConfigurationName) + .flatMap(res -> Mono.justOrEmpty(res.getValue())); + } + + /** + * Gets a network security perimeter configuration. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a network security perimeter configuration along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getNspWithResponse(String resourceGroupName, + String workspaceName, String networkSecurityPerimeterConfigurationName, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (networkSecurityPerimeterConfigurationName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter networkSecurityPerimeterConfigurationName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getNspSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), networkSecurityPerimeterConfigurationName, + accept, context); + } + + /** + * Gets a network security perimeter configuration. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a network security perimeter configuration. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public NetworkSecurityPerimeterConfigurationInner getNsp(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName) { + return getNspWithResponse(resourceGroupName, workspaceName, networkSecurityPerimeterConfigurationName, + Context.NONE).getValue(); + } + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono>> reconcileNspWithResponseAsync(String resourceGroupName, + String workspaceName, String networkSecurityPerimeterConfigurationName) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + return Mono.error(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (networkSecurityPerimeterConfigurationName == null) { + return Mono.error(new IllegalArgumentException( + "Parameter networkSecurityPerimeterConfigurationName is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.reconcileNsp(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), networkSecurityPerimeterConfigurationName, + accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response reconcileNspWithResponse(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (networkSecurityPerimeterConfigurationName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter networkSecurityPerimeterConfigurationName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.reconcileNspSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), networkSecurityPerimeterConfigurationName, + accept, Context.NONE); + } + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response reconcileNspWithResponse(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (resourceGroupName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (workspaceName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter workspaceName is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (networkSecurityPerimeterConfigurationName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter networkSecurityPerimeterConfigurationName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.reconcileNspSync(this.client.getEndpoint(), resourceGroupName, workspaceName, + this.client.getApiVersion(), this.client.getSubscriptionId(), networkSecurityPerimeterConfigurationName, + accept, context); + } + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link PollerFlux} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + private PollerFlux, Void> beginReconcileNspAsync(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName) { + Mono>> mono = reconcileNspWithResponseAsync(resourceGroupName, workspaceName, + networkSecurityPerimeterConfigurationName); + return this.client.getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, + this.client.getContext()); + } + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, Void> beginReconcileNsp(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName) { + Response response + = reconcileNspWithResponse(resourceGroupName, workspaceName, networkSecurityPerimeterConfigurationName); + return this.client.getLroResult(response, Void.class, Void.class, Context.NONE); + } + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, Void> beginReconcileNsp(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName, Context context) { + Response response = reconcileNspWithResponse(resourceGroupName, workspaceName, + networkSecurityPerimeterConfigurationName, context); + return this.client.getLroResult(response, Void.class, Void.class, context); + } + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return A {@link Mono} that completes when a successful response is received. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono reconcileNspAsync(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName) { + return beginReconcileNspAsync(resourceGroupName, workspaceName, networkSecurityPerimeterConfigurationName) + .last() + .flatMap(this.client::getLroFinalResultOrError); + } + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public void reconcileNsp(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName) { + beginReconcileNsp(resourceGroupName, workspaceName, networkSecurityPerimeterConfigurationName).getFinalResult(); + } + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public void reconcileNsp(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName, Context context) { + beginReconcileNsp(resourceGroupName, workspaceName, networkSecurityPerimeterConfigurationName, context) + .getFinalResult(); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of NSP configurations for specified workspace along with {@link PagedResponse} on successful + * completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> + listNspNextSinglePageAsync(String nextLink) { + if (nextLink == null) { + return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.listNspNext(nextLink, this.client.getEndpoint(), accept, context)) + .>map( + res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + res.getValue().value(), res.getValue().nextLink(), null)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of NSP configurations for specified workspace along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listNspNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listNspNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of NSP configurations for specified workspace along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listNspNextSinglePage(String nextLink, + Context context) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listNspNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + + private static final ClientLogger LOGGER = new ClientLogger(WorkspacesClientImpl.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspacesImpl.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspacesImpl.java index 4a7afc2cce12..7bc2e96fe454 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspacesImpl.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/implementation/WorkspacesImpl.java @@ -10,7 +10,9 @@ import com.azure.core.util.Context; import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.loganalytics.fluent.WorkspacesClient; +import com.azure.resourcemanager.loganalytics.fluent.models.NetworkSecurityPerimeterConfigurationInner; import com.azure.resourcemanager.loganalytics.fluent.models.WorkspaceInner; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeterConfiguration; import com.azure.resourcemanager.loganalytics.models.Workspace; import com.azure.resourcemanager.loganalytics.models.Workspaces; @@ -76,6 +78,72 @@ public Workspace getByResourceGroup(String resourceGroupName, String workspaceNa } } + public void failover(String resourceGroupName, String location, String workspaceName) { + this.serviceClient().failover(resourceGroupName, location, workspaceName); + } + + public void failover(String resourceGroupName, String location, String workspaceName, Context context) { + this.serviceClient().failover(resourceGroupName, location, workspaceName, context); + } + + public void failback(String resourceGroupName, String workspaceName) { + this.serviceClient().failback(resourceGroupName, workspaceName); + } + + public void failback(String resourceGroupName, String workspaceName, Context context) { + this.serviceClient().failback(resourceGroupName, workspaceName, context); + } + + public PagedIterable listNsp(String resourceGroupName, + String workspaceName) { + PagedIterable inner + = this.serviceClient().listNsp(resourceGroupName, workspaceName); + return ResourceManagerUtils.mapPage(inner, + inner1 -> new NetworkSecurityPerimeterConfigurationImpl(inner1, this.manager())); + } + + public PagedIterable listNsp(String resourceGroupName, String workspaceName, + Context context) { + PagedIterable inner + = this.serviceClient().listNsp(resourceGroupName, workspaceName, context); + return ResourceManagerUtils.mapPage(inner, + inner1 -> new NetworkSecurityPerimeterConfigurationImpl(inner1, this.manager())); + } + + public Response getNspWithResponse(String resourceGroupName, + String workspaceName, String networkSecurityPerimeterConfigurationName, Context context) { + Response inner = this.serviceClient() + .getNspWithResponse(resourceGroupName, workspaceName, networkSecurityPerimeterConfigurationName, context); + if (inner != null) { + return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), + new NetworkSecurityPerimeterConfigurationImpl(inner.getValue(), this.manager())); + } else { + return null; + } + } + + public NetworkSecurityPerimeterConfiguration getNsp(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName) { + NetworkSecurityPerimeterConfigurationInner inner + = this.serviceClient().getNsp(resourceGroupName, workspaceName, networkSecurityPerimeterConfigurationName); + if (inner != null) { + return new NetworkSecurityPerimeterConfigurationImpl(inner, this.manager()); + } else { + return null; + } + } + + public void reconcileNsp(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName) { + this.serviceClient().reconcileNsp(resourceGroupName, workspaceName, networkSecurityPerimeterConfigurationName); + } + + public void reconcileNsp(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName, Context context) { + this.serviceClient() + .reconcileNsp(resourceGroupName, workspaceName, networkSecurityPerimeterConfigurationName, context); + } + public Workspace getById(String id) { String resourceGroupName = ResourceManagerUtils.getValueFromIdByName(id, "resourcegroups"); if (resourceGroupName == null) { diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRule.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRule.java new file mode 100644 index 000000000000..0df999e62be1 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRule.java @@ -0,0 +1,124 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Access rule in a network security perimeter configuration profile. + */ +@Fluent +public final class AccessRule implements JsonSerializable { + /* + * Name of the access rule + */ + private String name; + + /* + * Properties of Access Rule + */ + private AccessRuleProperties properties; + + /** + * Creates an instance of AccessRule class. + */ + public AccessRule() { + } + + /** + * Get the name property: Name of the access rule. + * + * @return the name value. + */ + public String name() { + return this.name; + } + + /** + * Set the name property: Name of the access rule. + * + * @param name the name value to set. + * @return the AccessRule object itself. + */ + public AccessRule withName(String name) { + this.name = name; + return this; + } + + /** + * Get the properties property: Properties of Access Rule. + * + * @return the properties value. + */ + public AccessRuleProperties properties() { + return this.properties; + } + + /** + * Set the properties property: Properties of Access Rule. + * + * @param properties the properties value to set. + * @return the AccessRule object itself. + */ + public AccessRule withProperties(AccessRuleProperties properties) { + this.properties = properties; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (properties() != null) { + properties().validate(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeJsonField("properties", this.properties); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of AccessRule from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of AccessRule if the JsonReader was pointing to an instance of it, or null if it was pointing + * to JSON null. + * @throws IOException If an error occurs while reading the AccessRule. + */ + public static AccessRule fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + AccessRule deserializedAccessRule = new AccessRule(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("name".equals(fieldName)) { + deserializedAccessRule.name = reader.getString(); + } else if ("properties".equals(fieldName)) { + deserializedAccessRule.properties = AccessRuleProperties.fromJson(reader); + } else { + reader.skipChildren(); + } + } + + return deserializedAccessRule; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRuleDirection.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRuleDirection.java new file mode 100644 index 000000000000..2989aa7e7b6c --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRuleDirection.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Direction of Access Rule. + */ +public final class AccessRuleDirection extends ExpandableStringEnum { + /** + * Static value Inbound for AccessRuleDirection. + */ + public static final AccessRuleDirection INBOUND = fromString("Inbound"); + + /** + * Static value Outbound for AccessRuleDirection. + */ + public static final AccessRuleDirection OUTBOUND = fromString("Outbound"); + + /** + * Creates a new instance of AccessRuleDirection value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Deprecated + public AccessRuleDirection() { + } + + /** + * Creates or finds a AccessRuleDirection from its string representation. + * + * @param name a name to look for. + * @return the corresponding AccessRuleDirection. + */ + public static AccessRuleDirection fromString(String name) { + return fromString(name, AccessRuleDirection.class); + } + + /** + * Gets known AccessRuleDirection values. + * + * @return known AccessRuleDirection values. + */ + public static Collection values() { + return values(AccessRuleDirection.class); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRuleProperties.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRuleProperties.java new file mode 100644 index 000000000000..3b7fcbcb3551 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRuleProperties.java @@ -0,0 +1,281 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Properties of Access Rule. + */ +@Fluent +public final class AccessRuleProperties implements JsonSerializable { + /* + * Direction of Access Rule + */ + private AccessRuleDirection direction; + + /* + * Address prefixes in the CIDR format for inbound rules + */ + private List addressPrefixes; + + /* + * Subscriptions for inbound rules + */ + private List subscriptions; + + /* + * Network security perimeters for inbound rules + */ + private List networkSecurityPerimeters; + + /* + * Fully qualified domain names (FQDN) for outbound rules + */ + private List fullyQualifiedDomainNames; + + /* + * Email addresses for outbound rules + */ + private List emailAddresses; + + /* + * Phone numbers for outbound rules + */ + private List phoneNumbers; + + /** + * Creates an instance of AccessRuleProperties class. + */ + public AccessRuleProperties() { + } + + /** + * Get the direction property: Direction of Access Rule. + * + * @return the direction value. + */ + public AccessRuleDirection direction() { + return this.direction; + } + + /** + * Set the direction property: Direction of Access Rule. + * + * @param direction the direction value to set. + * @return the AccessRuleProperties object itself. + */ + public AccessRuleProperties withDirection(AccessRuleDirection direction) { + this.direction = direction; + return this; + } + + /** + * Get the addressPrefixes property: Address prefixes in the CIDR format for inbound rules. + * + * @return the addressPrefixes value. + */ + public List addressPrefixes() { + return this.addressPrefixes; + } + + /** + * Set the addressPrefixes property: Address prefixes in the CIDR format for inbound rules. + * + * @param addressPrefixes the addressPrefixes value to set. + * @return the AccessRuleProperties object itself. + */ + public AccessRuleProperties withAddressPrefixes(List addressPrefixes) { + this.addressPrefixes = addressPrefixes; + return this; + } + + /** + * Get the subscriptions property: Subscriptions for inbound rules. + * + * @return the subscriptions value. + */ + public List subscriptions() { + return this.subscriptions; + } + + /** + * Set the subscriptions property: Subscriptions for inbound rules. + * + * @param subscriptions the subscriptions value to set. + * @return the AccessRuleProperties object itself. + */ + public AccessRuleProperties withSubscriptions(List subscriptions) { + this.subscriptions = subscriptions; + return this; + } + + /** + * Get the networkSecurityPerimeters property: Network security perimeters for inbound rules. + * + * @return the networkSecurityPerimeters value. + */ + public List networkSecurityPerimeters() { + return this.networkSecurityPerimeters; + } + + /** + * Set the networkSecurityPerimeters property: Network security perimeters for inbound rules. + * + * @param networkSecurityPerimeters the networkSecurityPerimeters value to set. + * @return the AccessRuleProperties object itself. + */ + public AccessRuleProperties + withNetworkSecurityPerimeters(List networkSecurityPerimeters) { + this.networkSecurityPerimeters = networkSecurityPerimeters; + return this; + } + + /** + * Get the fullyQualifiedDomainNames property: Fully qualified domain names (FQDN) for outbound rules. + * + * @return the fullyQualifiedDomainNames value. + */ + public List fullyQualifiedDomainNames() { + return this.fullyQualifiedDomainNames; + } + + /** + * Set the fullyQualifiedDomainNames property: Fully qualified domain names (FQDN) for outbound rules. + * + * @param fullyQualifiedDomainNames the fullyQualifiedDomainNames value to set. + * @return the AccessRuleProperties object itself. + */ + public AccessRuleProperties withFullyQualifiedDomainNames(List fullyQualifiedDomainNames) { + this.fullyQualifiedDomainNames = fullyQualifiedDomainNames; + return this; + } + + /** + * Get the emailAddresses property: Email addresses for outbound rules. + * + * @return the emailAddresses value. + */ + public List emailAddresses() { + return this.emailAddresses; + } + + /** + * Set the emailAddresses property: Email addresses for outbound rules. + * + * @param emailAddresses the emailAddresses value to set. + * @return the AccessRuleProperties object itself. + */ + public AccessRuleProperties withEmailAddresses(List emailAddresses) { + this.emailAddresses = emailAddresses; + return this; + } + + /** + * Get the phoneNumbers property: Phone numbers for outbound rules. + * + * @return the phoneNumbers value. + */ + public List phoneNumbers() { + return this.phoneNumbers; + } + + /** + * Set the phoneNumbers property: Phone numbers for outbound rules. + * + * @param phoneNumbers the phoneNumbers value to set. + * @return the AccessRuleProperties object itself. + */ + public AccessRuleProperties withPhoneNumbers(List phoneNumbers) { + this.phoneNumbers = phoneNumbers; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (subscriptions() != null) { + subscriptions().forEach(e -> e.validate()); + } + if (networkSecurityPerimeters() != null) { + networkSecurityPerimeters().forEach(e -> e.validate()); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("direction", this.direction == null ? null : this.direction.toString()); + jsonWriter.writeArrayField("addressPrefixes", this.addressPrefixes, + (writer, element) -> writer.writeString(element)); + jsonWriter.writeArrayField("subscriptions", this.subscriptions, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeArrayField("networkSecurityPerimeters", this.networkSecurityPerimeters, + (writer, element) -> writer.writeJson(element)); + jsonWriter.writeArrayField("fullyQualifiedDomainNames", this.fullyQualifiedDomainNames, + (writer, element) -> writer.writeString(element)); + jsonWriter.writeArrayField("emailAddresses", this.emailAddresses, + (writer, element) -> writer.writeString(element)); + jsonWriter.writeArrayField("phoneNumbers", this.phoneNumbers, (writer, element) -> writer.writeString(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of AccessRuleProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of AccessRuleProperties if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the AccessRuleProperties. + */ + public static AccessRuleProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + AccessRuleProperties deserializedAccessRuleProperties = new AccessRuleProperties(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("direction".equals(fieldName)) { + deserializedAccessRuleProperties.direction = AccessRuleDirection.fromString(reader.getString()); + } else if ("addressPrefixes".equals(fieldName)) { + List addressPrefixes = reader.readArray(reader1 -> reader1.getString()); + deserializedAccessRuleProperties.addressPrefixes = addressPrefixes; + } else if ("subscriptions".equals(fieldName)) { + List subscriptions + = reader.readArray(reader1 -> AccessRulePropertiesSubscriptionsItem.fromJson(reader1)); + deserializedAccessRuleProperties.subscriptions = subscriptions; + } else if ("networkSecurityPerimeters".equals(fieldName)) { + List networkSecurityPerimeters + = reader.readArray(reader1 -> NetworkSecurityPerimeter.fromJson(reader1)); + deserializedAccessRuleProperties.networkSecurityPerimeters = networkSecurityPerimeters; + } else if ("fullyQualifiedDomainNames".equals(fieldName)) { + List fullyQualifiedDomainNames = reader.readArray(reader1 -> reader1.getString()); + deserializedAccessRuleProperties.fullyQualifiedDomainNames = fullyQualifiedDomainNames; + } else if ("emailAddresses".equals(fieldName)) { + List emailAddresses = reader.readArray(reader1 -> reader1.getString()); + deserializedAccessRuleProperties.emailAddresses = emailAddresses; + } else if ("phoneNumbers".equals(fieldName)) { + List phoneNumbers = reader.readArray(reader1 -> reader1.getString()); + deserializedAccessRuleProperties.phoneNumbers = phoneNumbers; + } else { + reader.skipChildren(); + } + } + + return deserializedAccessRuleProperties; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRulePropertiesSubscriptionsItem.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRulePropertiesSubscriptionsItem.java new file mode 100644 index 000000000000..162f403f2da9 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AccessRulePropertiesSubscriptionsItem.java @@ -0,0 +1,98 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Subscription identifiers. + */ +@Fluent +public final class AccessRulePropertiesSubscriptionsItem + implements JsonSerializable { + /* + * The fully qualified Azure resource ID of the subscription e.g. + * ('/subscriptions/00000000-0000-0000-0000-000000000000') + */ + private String id; + + /** + * Creates an instance of AccessRulePropertiesSubscriptionsItem class. + */ + public AccessRulePropertiesSubscriptionsItem() { + } + + /** + * Get the id property: The fully qualified Azure resource ID of the subscription e.g. + * ('/subscriptions/00000000-0000-0000-0000-000000000000'). + * + * @return the id value. + */ + public String id() { + return this.id; + } + + /** + * Set the id property: The fully qualified Azure resource ID of the subscription e.g. + * ('/subscriptions/00000000-0000-0000-0000-000000000000'). + * + * @param id the id value to set. + * @return the AccessRulePropertiesSubscriptionsItem object itself. + */ + public AccessRulePropertiesSubscriptionsItem withId(String id) { + this.id = id; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of AccessRulePropertiesSubscriptionsItem from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of AccessRulePropertiesSubscriptionsItem if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the AccessRulePropertiesSubscriptionsItem. + */ + public static AccessRulePropertiesSubscriptionsItem fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + AccessRulePropertiesSubscriptionsItem deserializedAccessRulePropertiesSubscriptionsItem + = new AccessRulePropertiesSubscriptionsItem(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("id".equals(fieldName)) { + deserializedAccessRulePropertiesSubscriptionsItem.id = reader.getString(); + } else { + reader.skipChildren(); + } + } + + return deserializedAccessRulePropertiesSubscriptionsItem; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AssociatedWorkspace.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AssociatedWorkspace.java index 5c61dfa853b2..7d47aa8f7013 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AssociatedWorkspace.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AssociatedWorkspace.java @@ -5,11 +5,14 @@ package com.azure.resourcemanager.loganalytics.models; import com.azure.core.annotation.Immutable; +import com.azure.core.util.CoreUtils; import com.azure.json.JsonReader; import com.azure.json.JsonSerializable; import com.azure.json.JsonToken; import com.azure.json.JsonWriter; import java.io.IOException; +import java.time.OffsetDateTime; +import java.util.UUID; /** * The list of Log Analytics workspaces associated with the cluster. @@ -19,7 +22,7 @@ public final class AssociatedWorkspace implements JsonSerializable UUID.fromString(nonNullReader.getString())); } else if ("workspaceName".equals(fieldName)) { deserializedAssociatedWorkspace.workspaceName = reader.getString(); } else if ("resourceId".equals(fieldName)) { deserializedAssociatedWorkspace.resourceId = reader.getString(); } else if ("associateDate".equals(fieldName)) { - deserializedAssociatedWorkspace.associateDate = reader.getString(); + deserializedAssociatedWorkspace.associateDate = reader + .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); } else { reader.skipChildren(); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AzureResourceProperties.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AzureResourceProperties.java deleted file mode 100644 index bc42393369e7..000000000000 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/AzureResourceProperties.java +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.loganalytics.models; - -import com.azure.core.annotation.Immutable; -import com.azure.core.management.SystemData; -import com.azure.json.JsonReader; -import com.azure.json.JsonSerializable; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import java.io.IOException; - -/** - * An Azure resource QueryPack-Query object. - */ -@Immutable -public class AzureResourceProperties implements JsonSerializable { - /* - * Azure resource Id - */ - private String id; - - /* - * Azure resource name - */ - private String name; - - /* - * Azure resource type - */ - private String type; - - /* - * Read only system data - */ - private SystemData systemData; - - /** - * Creates an instance of AzureResourceProperties class. - */ - public AzureResourceProperties() { - } - - /** - * Get the id property: Azure resource Id. - * - * @return the id value. - */ - public String id() { - return this.id; - } - - /** - * Set the id property: Azure resource Id. - * - * @param id the id value to set. - * @return the AzureResourceProperties object itself. - */ - AzureResourceProperties withId(String id) { - this.id = id; - return this; - } - - /** - * Get the name property: Azure resource name. - * - * @return the name value. - */ - public String name() { - return this.name; - } - - /** - * Set the name property: Azure resource name. - * - * @param name the name value to set. - * @return the AzureResourceProperties object itself. - */ - AzureResourceProperties withName(String name) { - this.name = name; - return this; - } - - /** - * Get the type property: Azure resource type. - * - * @return the type value. - */ - public String type() { - return this.type; - } - - /** - * Set the type property: Azure resource type. - * - * @param type the type value to set. - * @return the AzureResourceProperties object itself. - */ - AzureResourceProperties withType(String type) { - this.type = type; - return this; - } - - /** - * Get the systemData property: Read only system data. - * - * @return the systemData value. - */ - public SystemData systemData() { - return this.systemData; - } - - /** - * Set the systemData property: Read only system data. - * - * @param systemData the systemData value to set. - * @return the AzureResourceProperties object itself. - */ - AzureResourceProperties withSystemData(SystemData systemData) { - this.systemData = systemData; - return this; - } - - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - } - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of AzureResourceProperties from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of AzureResourceProperties if the JsonReader was pointing to an instance of it, or null if it - * was pointing to JSON null. - * @throws IOException If an error occurs while reading the AzureResourceProperties. - */ - public static AzureResourceProperties fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - AzureResourceProperties deserializedAzureResourceProperties = new AzureResourceProperties(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("id".equals(fieldName)) { - deserializedAzureResourceProperties.id = reader.getString(); - } else if ("name".equals(fieldName)) { - deserializedAzureResourceProperties.name = reader.getString(); - } else if ("type".equals(fieldName)) { - deserializedAzureResourceProperties.type = reader.getString(); - } else if ("systemData".equals(fieldName)) { - deserializedAzureResourceProperties.systemData = SystemData.fromJson(reader); - } else { - reader.skipChildren(); - } - } - - return deserializedAzureResourceProperties; - }); - } -} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Capacity.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Capacity.java deleted file mode 100644 index e163765d4c0a..000000000000 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Capacity.java +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.loganalytics.models; - -/** - * The capacity reservation level in Gigabytes for this cluster. - */ -public enum Capacity { - /** - * Enum value 100. - */ - ONE_ZERO_ZERO(100L), - - /** - * Enum value 200. - */ - TWO_ZERO_ZERO(200L), - - /** - * Enum value 300. - */ - THREE_ZERO_ZERO(300L), - - /** - * Enum value 400. - */ - FOUR_ZERO_ZERO(400L), - - /** - * Enum value 500. - */ - FIVE_ZERO_ZERO(500L), - - /** - * Enum value 1000. - */ - ONE_ZERO_ZERO_ZERO(1000L), - - /** - * Enum value 2000. - */ - TWO_ZERO_ZERO_ZERO(2000L), - - /** - * Enum value 5000. - */ - FIVE_ZERO_ZERO_ZERO(5000L), - - /** - * Enum value 10000. - */ - ONE_ZERO_ZERO_ZERO_ZERO(10000L), - - /** - * Enum value 25000. - */ - TWO_FIVE_ZERO_ZERO_ZERO(25000L), - - /** - * Enum value 50000. - */ - FIVE_ZERO_ZERO_ZERO_ZERO(50000L); - - /** - * The actual serialized value for a Capacity instance. - */ - private final long value; - - Capacity(long value) { - this.value = value; - } - - /** - * Parses a serialized value to a Capacity instance. - * - * @param value the serialized value to parse. - * @return the parsed Capacity object, or null if unable to parse. - */ - public static Capacity fromLong(long value) { - Capacity[] items = Capacity.values(); - for (Capacity item : items) { - if (item.toLong() == value) { - return item; - } - } - return null; - } - - /** - * De-serializes the instance to long value. - * - * @return the long value. - */ - public long toLong() { - return this.value; - } -} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/CapacityReservationLevel.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/CapacityReservationLevel.java deleted file mode 100644 index ceb411fc31f0..000000000000 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/CapacityReservationLevel.java +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.loganalytics.models; - -/** - * The capacity reservation level in GB for this workspace, when CapacityReservation sku is selected. - */ -public enum CapacityReservationLevel { - /** - * Enum value 100. - */ - ONE_ZERO_ZERO(100), - - /** - * Enum value 200. - */ - TWO_ZERO_ZERO(200), - - /** - * Enum value 300. - */ - THREE_ZERO_ZERO(300), - - /** - * Enum value 400. - */ - FOUR_ZERO_ZERO(400), - - /** - * Enum value 500. - */ - FIVE_ZERO_ZERO(500), - - /** - * Enum value 1000. - */ - ONE_ZERO_ZERO_ZERO(1000), - - /** - * Enum value 2000. - */ - TWO_ZERO_ZERO_ZERO(2000), - - /** - * Enum value 5000. - */ - FIVE_ZERO_ZERO_ZERO(5000); - - /** - * The actual serialized value for a CapacityReservationLevel instance. - */ - private final int value; - - CapacityReservationLevel(int value) { - this.value = value; - } - - /** - * Parses a serialized value to a CapacityReservationLevel instance. - * - * @param value the serialized value to parse. - * @return the parsed CapacityReservationLevel object, or null if unable to parse. - */ - public static CapacityReservationLevel fromInt(int value) { - CapacityReservationLevel[] items = CapacityReservationLevel.values(); - for (CapacityReservationLevel item : items) { - if (item.toInt() == value) { - return item; - } - } - return null; - } - - /** - * De-serializes the instance to int value. - * - * @return the int value. - */ - public int toInt() { - return this.value; - } -} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/CapacityReservationProperties.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/CapacityReservationProperties.java index 6d8bff2edc0b..8d05f51f98c5 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/CapacityReservationProperties.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/CapacityReservationProperties.java @@ -5,11 +5,13 @@ package com.azure.resourcemanager.loganalytics.models; import com.azure.core.annotation.Immutable; +import com.azure.core.util.CoreUtils; import com.azure.json.JsonReader; import com.azure.json.JsonSerializable; import com.azure.json.JsonToken; import com.azure.json.JsonWriter; import java.io.IOException; +import java.time.OffsetDateTime; /** * The Capacity Reservation properties. @@ -19,7 +21,7 @@ public final class CapacityReservationProperties implements JsonSerializable CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); } else if ("minCapacity".equals(fieldName)) { deserializedCapacityReservationProperties.minCapacity = reader.getNullable(JsonReader::getLong); } else { diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Cluster.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Cluster.java index acc232dd92e1..d02109357d71 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Cluster.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Cluster.java @@ -7,6 +7,7 @@ import com.azure.core.management.Region; import com.azure.core.util.Context; import com.azure.resourcemanager.loganalytics.fluent.models.ClusterInner; +import java.time.OffsetDateTime; import java.util.List; import java.util.Map; @@ -113,14 +114,14 @@ public interface Cluster { * * @return the lastModifiedDate value. */ - String lastModifiedDate(); + OffsetDateTime lastModifiedDate(); /** * Gets the createdDate property: The cluster creation time. * * @return the createdDate value. */ - String createdDate(); + OffsetDateTime createdDate(); /** * Gets the associatedWorkspaces property: The list of Log Analytics workspaces associated with the cluster. @@ -136,6 +137,13 @@ public interface Cluster { */ CapacityReservationProperties capacityReservationProperties(); + /** + * Gets the replication property: Cluster's replication properties. + * + * @return the replication value. + */ + ClusterReplicationProperties replication(); + /** * Gets the region of the resource. * @@ -222,7 +230,8 @@ interface WithResourceGroup { interface WithCreate extends DefinitionStages.WithTags, DefinitionStages.WithIdentity, DefinitionStages.WithSku, DefinitionStages.WithIsDoubleEncryptionEnabled, DefinitionStages.WithIsAvailabilityZonesEnabled, DefinitionStages.WithBillingType, DefinitionStages.WithKeyVaultProperties, - DefinitionStages.WithAssociatedWorkspaces, DefinitionStages.WithCapacityReservationProperties { + DefinitionStages.WithAssociatedWorkspaces, DefinitionStages.WithCapacityReservationProperties, + DefinitionStages.WithReplication { /** * Executes the create request. * @@ -363,6 +372,19 @@ interface WithCapacityReservationProperties { */ WithCreate withCapacityReservationProperties(CapacityReservationProperties capacityReservationProperties); } + + /** + * The stage of the Cluster definition allowing to specify replication. + */ + interface WithReplication { + /** + * Specifies the replication property: Cluster's replication properties.. + * + * @param replication Cluster's replication properties. + * @return the next definition stage. + */ + WithCreate withReplication(ClusterReplicationProperties replication); + } } /** diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ClusterReplicationProperties.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ClusterReplicationProperties.java new file mode 100644 index 000000000000..af1e66a31e6f --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ClusterReplicationProperties.java @@ -0,0 +1,208 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.util.CoreUtils; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.OffsetDateTime; + +/** + * Cluster replication properties. + */ +@Fluent +public final class ClusterReplicationProperties implements JsonSerializable { + /* + * The secondary location of the replication. If replication is being enabled, enabled must be provided. + */ + private String location; + + /* + * Specifies whether the replication is enabled or not. When true the cluster is replicate to the specified + * location. + */ + private Boolean enabled; + + /* + * Should enable AvailabilityZones for the given replicated cluster + */ + private Boolean isAvailabilityZonesEnabled; + + /* + * The provisioning state of the cluster replication. + */ + private ClusterReplicationState provisioningState; + + /* + * The cluster's replication creation time + */ + private OffsetDateTime createdDate; + + /* + * The last time the cluster's replication was updated. + */ + private OffsetDateTime lastModifiedDate; + + /** + * Creates an instance of ClusterReplicationProperties class. + */ + public ClusterReplicationProperties() { + } + + /** + * Get the location property: The secondary location of the replication. If replication is being enabled, enabled + * must be provided. + * + * @return the location value. + */ + public String location() { + return this.location; + } + + /** + * Set the location property: The secondary location of the replication. If replication is being enabled, enabled + * must be provided. + * + * @param location the location value to set. + * @return the ClusterReplicationProperties object itself. + */ + public ClusterReplicationProperties withLocation(String location) { + this.location = location; + return this; + } + + /** + * Get the enabled property: Specifies whether the replication is enabled or not. When true the cluster is replicate + * to the specified location. + * + * @return the enabled value. + */ + public Boolean enabled() { + return this.enabled; + } + + /** + * Set the enabled property: Specifies whether the replication is enabled or not. When true the cluster is replicate + * to the specified location. + * + * @param enabled the enabled value to set. + * @return the ClusterReplicationProperties object itself. + */ + public ClusterReplicationProperties withEnabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Get the isAvailabilityZonesEnabled property: Should enable AvailabilityZones for the given replicated cluster. + * + * @return the isAvailabilityZonesEnabled value. + */ + public Boolean isAvailabilityZonesEnabled() { + return this.isAvailabilityZonesEnabled; + } + + /** + * Set the isAvailabilityZonesEnabled property: Should enable AvailabilityZones for the given replicated cluster. + * + * @param isAvailabilityZonesEnabled the isAvailabilityZonesEnabled value to set. + * @return the ClusterReplicationProperties object itself. + */ + public ClusterReplicationProperties withIsAvailabilityZonesEnabled(Boolean isAvailabilityZonesEnabled) { + this.isAvailabilityZonesEnabled = isAvailabilityZonesEnabled; + return this; + } + + /** + * Get the provisioningState property: The provisioning state of the cluster replication. + * + * @return the provisioningState value. + */ + public ClusterReplicationState provisioningState() { + return this.provisioningState; + } + + /** + * Get the createdDate property: The cluster's replication creation time. + * + * @return the createdDate value. + */ + public OffsetDateTime createdDate() { + return this.createdDate; + } + + /** + * Get the lastModifiedDate property: The last time the cluster's replication was updated. + * + * @return the lastModifiedDate value. + */ + public OffsetDateTime lastModifiedDate() { + return this.lastModifiedDate; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("location", this.location); + jsonWriter.writeBooleanField("enabled", this.enabled); + jsonWriter.writeBooleanField("isAvailabilityZonesEnabled", this.isAvailabilityZonesEnabled); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ClusterReplicationProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ClusterReplicationProperties if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the ClusterReplicationProperties. + */ + public static ClusterReplicationProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ClusterReplicationProperties deserializedClusterReplicationProperties = new ClusterReplicationProperties(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("location".equals(fieldName)) { + deserializedClusterReplicationProperties.location = reader.getString(); + } else if ("enabled".equals(fieldName)) { + deserializedClusterReplicationProperties.enabled = reader.getNullable(JsonReader::getBoolean); + } else if ("isAvailabilityZonesEnabled".equals(fieldName)) { + deserializedClusterReplicationProperties.isAvailabilityZonesEnabled + = reader.getNullable(JsonReader::getBoolean); + } else if ("provisioningState".equals(fieldName)) { + deserializedClusterReplicationProperties.provisioningState + = ClusterReplicationState.fromString(reader.getString()); + } else if ("createdDate".equals(fieldName)) { + deserializedClusterReplicationProperties.createdDate = reader + .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); + } else if ("lastModifiedDate".equals(fieldName)) { + deserializedClusterReplicationProperties.lastModifiedDate = reader + .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); + } else { + reader.skipChildren(); + } + } + + return deserializedClusterReplicationProperties; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ClusterReplicationState.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ClusterReplicationState.java new file mode 100644 index 000000000000..0e275a7398cc --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ClusterReplicationState.java @@ -0,0 +1,86 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The provisioning state of the cluster replication. + */ +public final class ClusterReplicationState extends ExpandableStringEnum { + /** + * Static value Succeeded for ClusterReplicationState. + */ + public static final ClusterReplicationState SUCCEEDED = fromString("Succeeded"); + + /** + * Static value EnableRequested for ClusterReplicationState. + */ + public static final ClusterReplicationState ENABLE_REQUESTED = fromString("EnableRequested"); + + /** + * Static value Enabling for ClusterReplicationState. + */ + public static final ClusterReplicationState ENABLING = fromString("Enabling"); + + /** + * Static value DisableRequested for ClusterReplicationState. + */ + public static final ClusterReplicationState DISABLE_REQUESTED = fromString("DisableRequested"); + + /** + * Static value Disabling for ClusterReplicationState. + */ + public static final ClusterReplicationState DISABLING = fromString("Disabling"); + + /** + * Static value RollbackRequested for ClusterReplicationState. + */ + public static final ClusterReplicationState ROLLBACK_REQUESTED = fromString("RollbackRequested"); + + /** + * Static value RollingBack for ClusterReplicationState. + */ + public static final ClusterReplicationState ROLLING_BACK = fromString("RollingBack"); + + /** + * Static value Failed for ClusterReplicationState. + */ + public static final ClusterReplicationState FAILED = fromString("Failed"); + + /** + * Static value Canceled for ClusterReplicationState. + */ + public static final ClusterReplicationState CANCELED = fromString("Canceled"); + + /** + * Creates a new instance of ClusterReplicationState value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Deprecated + public ClusterReplicationState() { + } + + /** + * Creates or finds a ClusterReplicationState from its string representation. + * + * @param name a name to look for. + * @return the corresponding ClusterReplicationState. + */ + public static ClusterReplicationState fromString(String name) { + return fromString(name, ClusterReplicationState.class); + } + + /** + * Gets known ClusterReplicationState values. + * + * @return known ClusterReplicationState values. + */ + public static Collection values() { + return values(ClusterReplicationState.class); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ClusterSku.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ClusterSku.java index e9a032eba3f6..960dc8903e61 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ClusterSku.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ClusterSku.java @@ -19,7 +19,7 @@ public final class ClusterSku implements JsonSerializable { /* * The capacity reservation level in Gigabytes for this cluster. */ - private Capacity capacity; + private Long capacity; /* * The SKU (tier) of a cluster. @@ -37,7 +37,7 @@ public ClusterSku() { * * @return the capacity value. */ - public Capacity capacity() { + public Long capacity() { return this.capacity; } @@ -47,7 +47,7 @@ public Capacity capacity() { * @param capacity the capacity value to set. * @return the ClusterSku object itself. */ - public ClusterSku withCapacity(Capacity capacity) { + public ClusterSku withCapacity(Long capacity) { this.capacity = capacity; return this; } @@ -86,7 +86,7 @@ public void validate() { @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); - jsonWriter.writeNumberField("capacity", this.capacity == null ? null : this.capacity.toLong()); + jsonWriter.writeNumberField("capacity", this.capacity); jsonWriter.writeStringField("name", this.name == null ? null : this.name.toString()); return jsonWriter.writeEndObject(); } @@ -107,7 +107,7 @@ public static ClusterSku fromJson(JsonReader jsonReader) throws IOException { reader.nextToken(); if ("capacity".equals(fieldName)) { - deserializedClusterSku.capacity = Capacity.fromLong(reader.getLong()); + deserializedClusterSku.capacity = reader.getNullable(JsonReader::getLong); } else if ("name".equals(fieldName)) { deserializedClusterSku.name = ClusterSkuNameEnum.fromString(reader.getString()); } else { diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/CreatedByType.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/CreatedByType.java deleted file mode 100644 index 3097d8e5c784..000000000000 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/CreatedByType.java +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.loganalytics.models; - -import com.azure.core.util.ExpandableStringEnum; -import java.util.Collection; - -/** - * The type of identity that created the resource. - */ -public final class CreatedByType extends ExpandableStringEnum { - /** - * Static value User for CreatedByType. - */ - public static final CreatedByType USER = fromString("User"); - - /** - * Static value Application for CreatedByType. - */ - public static final CreatedByType APPLICATION = fromString("Application"); - - /** - * Static value ManagedIdentity for CreatedByType. - */ - public static final CreatedByType MANAGED_IDENTITY = fromString("ManagedIdentity"); - - /** - * Static value Key for CreatedByType. - */ - public static final CreatedByType KEY = fromString("Key"); - - /** - * Creates a new instance of CreatedByType value. - * - * @deprecated Use the {@link #fromString(String)} factory method. - */ - @Deprecated - public CreatedByType() { - } - - /** - * Creates or finds a CreatedByType from its string representation. - * - * @param name a name to look for. - * @return the corresponding CreatedByType. - */ - public static CreatedByType fromString(String name) { - return fromString(name, CreatedByType.class); - } - - /** - * Gets known CreatedByType values. - * - * @return known CreatedByType values. - */ - public static Collection values() { - return values(CreatedByType.class); - } -} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/IdentityType.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/IdentityType.java index c9267e6a3315..b1e162d20f3d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/IdentityType.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/IdentityType.java @@ -4,73 +4,58 @@ package com.azure.resourcemanager.loganalytics.models; -import com.azure.core.util.ExpandableStringEnum; -import java.util.Collection; - /** - * The type of identity that creates/modifies resources. + * Type of managed service identity. */ -public final class IdentityType extends ExpandableStringEnum { - /** - * Static value user for IdentityType. - */ - public static final IdentityType USER = fromString("user"); - +public enum IdentityType { /** - * Static value application for IdentityType. + * Enum value SystemAssigned. */ - public static final IdentityType APPLICATION = fromString("application"); + SYSTEM_ASSIGNED("SystemAssigned"), /** - * Static value managedIdentity for IdentityType. + * Enum value UserAssigned. */ - public static final IdentityType MANAGED_IDENTITY = fromString("managedIdentity"); + USER_ASSIGNED("UserAssigned"), /** - * Static value key for IdentityType. + * Enum value None. */ - public static final IdentityType KEY = fromString("key"); + NONE("None"); /** - * Static value SystemAssigned for IdentityType. + * The actual serialized value for a IdentityType instance. */ - public static final IdentityType SYSTEM_ASSIGNED = fromString("SystemAssigned"); + private final String value; - /** - * Static value UserAssigned for IdentityType. - */ - public static final IdentityType USER_ASSIGNED = fromString("UserAssigned"); - - /** - * Static value None for IdentityType. - */ - public static final IdentityType NONE = fromString("None"); - - /** - * Creates a new instance of IdentityType value. - * - * @deprecated Use the {@link #fromString(String)} factory method. - */ - @Deprecated - public IdentityType() { + IdentityType(String value) { + this.value = value; } /** - * Creates or finds a IdentityType from its string representation. + * Parses a serialized value to a IdentityType instance. * - * @param name a name to look for. - * @return the corresponding IdentityType. - */ - public static IdentityType fromString(String name) { - return fromString(name, IdentityType.class); + * @param value the serialized value to parse. + * @return the parsed IdentityType object, or null if unable to parse. + */ + public static IdentityType fromString(String value) { + if (value == null) { + return null; + } + IdentityType[] items = IdentityType.values(); + for (IdentityType item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; } /** - * Gets known IdentityType values. - * - * @return known IdentityType values. + * {@inheritDoc} */ - public static Collection values() { - return values(IdentityType.class); + @Override + public String toString() { + return this.value; } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/IssueType.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/IssueType.java new file mode 100644 index 000000000000..581221777587 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/IssueType.java @@ -0,0 +1,61 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Type of issue. + */ +public final class IssueType extends ExpandableStringEnum { + /** + * Static value Unknown for IssueType. + */ + public static final IssueType UNKNOWN = fromString("Unknown"); + + /** + * Static value ConfigurationPropagationFailure for IssueType. + */ + public static final IssueType CONFIGURATION_PROPAGATION_FAILURE = fromString("ConfigurationPropagationFailure"); + + /** + * Static value MissingPerimeterConfiguration for IssueType. + */ + public static final IssueType MISSING_PERIMETER_CONFIGURATION = fromString("MissingPerimeterConfiguration"); + + /** + * Static value MissingIdentityConfiguration for IssueType. + */ + public static final IssueType MISSING_IDENTITY_CONFIGURATION = fromString("MissingIdentityConfiguration"); + + /** + * Creates a new instance of IssueType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Deprecated + public IssueType() { + } + + /** + * Creates or finds a IssueType from its string representation. + * + * @param name a name to look for. + * @return the corresponding IssueType. + */ + public static IssueType fromString(String name) { + return fromString(name, IssueType.class); + } + + /** + * Gets known IssueType values. + * + * @return known IssueType values. + */ + public static Collection values() { + return values(IssueType.class); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/LogAnalyticsQueryPack.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/LogAnalyticsQueryPack.java index 25d15670f112..03d115294b06 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/LogAnalyticsQueryPack.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/LogAnalyticsQueryPack.java @@ -5,6 +5,7 @@ package com.azure.resourcemanager.loganalytics.models; import com.azure.core.management.Region; +import com.azure.core.management.SystemData; import com.azure.core.util.Context; import com.azure.resourcemanager.loganalytics.fluent.models.LogAnalyticsQueryPackInner; import java.time.OffsetDateTime; @@ -49,6 +50,13 @@ public interface LogAnalyticsQueryPack { */ Map tags(); + /** + * Gets the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information. + * + * @return the systemData value. + */ + SystemData systemData(); + /** * Gets the queryPackId property: The unique ID of your application. This field cannot be changed. * diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/LogAnalyticsQueryPackQuery.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/LogAnalyticsQueryPackQuery.java index 58d3966e6302..c04f014bf2e5 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/LogAnalyticsQueryPackQuery.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/LogAnalyticsQueryPackQuery.java @@ -16,28 +16,28 @@ */ public interface LogAnalyticsQueryPackQuery { /** - * Gets the id property: Azure resource Id. + * Gets the id property: Fully qualified resource Id for the resource. * * @return the id value. */ String id(); /** - * Gets the name property: Azure resource name. + * Gets the name property: The name of the resource. * * @return the name value. */ String name(); /** - * Gets the type property: Azure resource type. + * Gets the type property: The type of the resource. * * @return the type value. */ String type(); /** - * Gets the systemData property: Read only system data. + * Gets the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information. * * @return the systemData value. */ diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeter.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeter.java new file mode 100644 index 000000000000..1d02c7faddf9 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeter.java @@ -0,0 +1,152 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.Objects; +import java.util.UUID; + +/** + * Information about a network security perimeter (NSP). + */ +@Fluent +public final class NetworkSecurityPerimeter implements JsonSerializable { + /* + * Fully qualified Azure resource ID of the NSP resource + */ + private String id; + + /* + * Universal unique ID (UUID) of the network security perimeter + */ + private UUID perimeterGuid; + + /* + * Location of the network security perimeter + */ + private String location; + + /** + * Creates an instance of NetworkSecurityPerimeter class. + */ + public NetworkSecurityPerimeter() { + } + + /** + * Get the id property: Fully qualified Azure resource ID of the NSP resource. + * + * @return the id value. + */ + public String id() { + return this.id; + } + + /** + * Set the id property: Fully qualified Azure resource ID of the NSP resource. + * + * @param id the id value to set. + * @return the NetworkSecurityPerimeter object itself. + */ + public NetworkSecurityPerimeter withId(String id) { + this.id = id; + return this; + } + + /** + * Get the perimeterGuid property: Universal unique ID (UUID) of the network security perimeter. + * + * @return the perimeterGuid value. + */ + public UUID perimeterGuid() { + return this.perimeterGuid; + } + + /** + * Set the perimeterGuid property: Universal unique ID (UUID) of the network security perimeter. + * + * @param perimeterGuid the perimeterGuid value to set. + * @return the NetworkSecurityPerimeter object itself. + */ + public NetworkSecurityPerimeter withPerimeterGuid(UUID perimeterGuid) { + this.perimeterGuid = perimeterGuid; + return this; + } + + /** + * Get the location property: Location of the network security perimeter. + * + * @return the location value. + */ + public String location() { + return this.location; + } + + /** + * Set the location property: Location of the network security perimeter. + * + * @param location the location value to set. + * @return the NetworkSecurityPerimeter object itself. + */ + public NetworkSecurityPerimeter withLocation(String location) { + this.location = location; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("perimeterGuid", Objects.toString(this.perimeterGuid, null)); + jsonWriter.writeStringField("location", this.location); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of NetworkSecurityPerimeter from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of NetworkSecurityPerimeter if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IOException If an error occurs while reading the NetworkSecurityPerimeter. + */ + public static NetworkSecurityPerimeter fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + NetworkSecurityPerimeter deserializedNetworkSecurityPerimeter = new NetworkSecurityPerimeter(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("id".equals(fieldName)) { + deserializedNetworkSecurityPerimeter.id = reader.getString(); + } else if ("perimeterGuid".equals(fieldName)) { + deserializedNetworkSecurityPerimeter.perimeterGuid + = reader.getNullable(nonNullReader -> UUID.fromString(nonNullReader.getString())); + } else if ("location".equals(fieldName)) { + deserializedNetworkSecurityPerimeter.location = reader.getString(); + } else { + reader.skipChildren(); + } + } + + return deserializedNetworkSecurityPerimeter; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfiguration.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfiguration.java new file mode 100644 index 000000000000..b3f25088937a --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfiguration.java @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.management.SystemData; +import com.azure.resourcemanager.loganalytics.fluent.models.NetworkSecurityPerimeterConfigurationInner; + +/** + * An immutable client-side representation of NetworkSecurityPerimeterConfiguration. + */ +public interface NetworkSecurityPerimeterConfiguration { + /** + * Gets the id property: Fully qualified resource Id for the resource. + * + * @return the id value. + */ + String id(); + + /** + * Gets the name property: The name of the resource. + * + * @return the name value. + */ + String name(); + + /** + * Gets the type property: The type of the resource. + * + * @return the type value. + */ + String type(); + + /** + * Gets the properties property: Network security configuration properties. + * + * @return the properties value. + */ + NetworkSecurityPerimeterConfigurationProperties properties(); + + /** + * Gets the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information. + * + * @return the systemData value. + */ + SystemData systemData(); + + /** + * Gets the inner com.azure.resourcemanager.loganalytics.fluent.models.NetworkSecurityPerimeterConfigurationInner + * object. + * + * @return the inner object. + */ + NetworkSecurityPerimeterConfigurationInner innerModel(); +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfigurationListResult.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfigurationListResult.java new file mode 100644 index 000000000000..613196535fd8 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfigurationListResult.java @@ -0,0 +1,131 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import com.azure.resourcemanager.loganalytics.fluent.models.NetworkSecurityPerimeterConfigurationInner; +import java.io.IOException; +import java.util.List; + +/** + * Result of a list NSP (network security perimeter) configurations request. + */ +@Fluent +public final class NetworkSecurityPerimeterConfigurationListResult + implements JsonSerializable { + /* + * Array of network security perimeter results. + */ + private List value; + + /* + * The link used to get the next page of results. + */ + private String nextLink; + + /** + * Creates an instance of NetworkSecurityPerimeterConfigurationListResult class. + */ + public NetworkSecurityPerimeterConfigurationListResult() { + } + + /** + * Get the value property: Array of network security perimeter results. + * + * @return the value value. + */ + public List value() { + return this.value; + } + + /** + * Set the value property: Array of network security perimeter results. + * + * @param value the value value to set. + * @return the NetworkSecurityPerimeterConfigurationListResult object itself. + */ + public NetworkSecurityPerimeterConfigurationListResult + withValue(List value) { + this.value = value; + return this; + } + + /** + * Get the nextLink property: The link used to get the next page of results. + * + * @return the nextLink value. + */ + public String nextLink() { + return this.nextLink; + } + + /** + * Set the nextLink property: The link used to get the next page of results. + * + * @param nextLink the nextLink value to set. + * @return the NetworkSecurityPerimeterConfigurationListResult object itself. + */ + public NetworkSecurityPerimeterConfigurationListResult withNextLink(String nextLink) { + this.nextLink = nextLink; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (value() != null) { + value().forEach(e -> e.validate()); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("nextLink", this.nextLink); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of NetworkSecurityPerimeterConfigurationListResult from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of NetworkSecurityPerimeterConfigurationListResult if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the NetworkSecurityPerimeterConfigurationListResult. + */ + public static NetworkSecurityPerimeterConfigurationListResult fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + NetworkSecurityPerimeterConfigurationListResult deserializedNetworkSecurityPerimeterConfigurationListResult + = new NetworkSecurityPerimeterConfigurationListResult(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("value".equals(fieldName)) { + List value + = reader.readArray(reader1 -> NetworkSecurityPerimeterConfigurationInner.fromJson(reader1)); + deserializedNetworkSecurityPerimeterConfigurationListResult.value = value; + } else if ("nextLink".equals(fieldName)) { + deserializedNetworkSecurityPerimeterConfigurationListResult.nextLink = reader.getString(); + } else { + reader.skipChildren(); + } + } + + return deserializedNetworkSecurityPerimeterConfigurationListResult; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfigurationProperties.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfigurationProperties.java new file mode 100644 index 000000000000..65a18f9d8487 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfigurationProperties.java @@ -0,0 +1,205 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Network security configuration properties. + */ +@Fluent +public final class NetworkSecurityPerimeterConfigurationProperties + implements JsonSerializable { + /* + * Provisioning state of a network security perimeter configuration that is being created or updated. + */ + private NetworkSecurityPerimeterConfigurationProvisioningState provisioningState; + + /* + * List of provisioning issues, if any + */ + private List provisioningIssues; + + /* + * Information about a network security perimeter (NSP) + */ + private NetworkSecurityPerimeter networkSecurityPerimeter; + + /* + * Information about resource association + */ + private ResourceAssociation resourceAssociation; + + /* + * Network security perimeter configuration profile + */ + private NetworkSecurityProfile profile; + + /** + * Creates an instance of NetworkSecurityPerimeterConfigurationProperties class. + */ + public NetworkSecurityPerimeterConfigurationProperties() { + } + + /** + * Get the provisioningState property: Provisioning state of a network security perimeter configuration that is + * being created or updated. + * + * @return the provisioningState value. + */ + public NetworkSecurityPerimeterConfigurationProvisioningState provisioningState() { + return this.provisioningState; + } + + /** + * Get the provisioningIssues property: List of provisioning issues, if any. + * + * @return the provisioningIssues value. + */ + public List provisioningIssues() { + return this.provisioningIssues; + } + + /** + * Get the networkSecurityPerimeter property: Information about a network security perimeter (NSP). + * + * @return the networkSecurityPerimeter value. + */ + public NetworkSecurityPerimeter networkSecurityPerimeter() { + return this.networkSecurityPerimeter; + } + + /** + * Set the networkSecurityPerimeter property: Information about a network security perimeter (NSP). + * + * @param networkSecurityPerimeter the networkSecurityPerimeter value to set. + * @return the NetworkSecurityPerimeterConfigurationProperties object itself. + */ + public NetworkSecurityPerimeterConfigurationProperties + withNetworkSecurityPerimeter(NetworkSecurityPerimeter networkSecurityPerimeter) { + this.networkSecurityPerimeter = networkSecurityPerimeter; + return this; + } + + /** + * Get the resourceAssociation property: Information about resource association. + * + * @return the resourceAssociation value. + */ + public ResourceAssociation resourceAssociation() { + return this.resourceAssociation; + } + + /** + * Set the resourceAssociation property: Information about resource association. + * + * @param resourceAssociation the resourceAssociation value to set. + * @return the NetworkSecurityPerimeterConfigurationProperties object itself. + */ + public NetworkSecurityPerimeterConfigurationProperties + withResourceAssociation(ResourceAssociation resourceAssociation) { + this.resourceAssociation = resourceAssociation; + return this; + } + + /** + * Get the profile property: Network security perimeter configuration profile. + * + * @return the profile value. + */ + public NetworkSecurityProfile profile() { + return this.profile; + } + + /** + * Set the profile property: Network security perimeter configuration profile. + * + * @param profile the profile value to set. + * @return the NetworkSecurityPerimeterConfigurationProperties object itself. + */ + public NetworkSecurityPerimeterConfigurationProperties withProfile(NetworkSecurityProfile profile) { + this.profile = profile; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (provisioningIssues() != null) { + provisioningIssues().forEach(e -> e.validate()); + } + if (networkSecurityPerimeter() != null) { + networkSecurityPerimeter().validate(); + } + if (resourceAssociation() != null) { + resourceAssociation().validate(); + } + if (profile() != null) { + profile().validate(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("networkSecurityPerimeter", this.networkSecurityPerimeter); + jsonWriter.writeJsonField("resourceAssociation", this.resourceAssociation); + jsonWriter.writeJsonField("profile", this.profile); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of NetworkSecurityPerimeterConfigurationProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of NetworkSecurityPerimeterConfigurationProperties if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the NetworkSecurityPerimeterConfigurationProperties. + */ + public static NetworkSecurityPerimeterConfigurationProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + NetworkSecurityPerimeterConfigurationProperties deserializedNetworkSecurityPerimeterConfigurationProperties + = new NetworkSecurityPerimeterConfigurationProperties(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("provisioningState".equals(fieldName)) { + deserializedNetworkSecurityPerimeterConfigurationProperties.provisioningState + = NetworkSecurityPerimeterConfigurationProvisioningState.fromString(reader.getString()); + } else if ("provisioningIssues".equals(fieldName)) { + List provisioningIssues + = reader.readArray(reader1 -> ProvisioningIssue.fromJson(reader1)); + deserializedNetworkSecurityPerimeterConfigurationProperties.provisioningIssues = provisioningIssues; + } else if ("networkSecurityPerimeter".equals(fieldName)) { + deserializedNetworkSecurityPerimeterConfigurationProperties.networkSecurityPerimeter + = NetworkSecurityPerimeter.fromJson(reader); + } else if ("resourceAssociation".equals(fieldName)) { + deserializedNetworkSecurityPerimeterConfigurationProperties.resourceAssociation + = ResourceAssociation.fromJson(reader); + } else if ("profile".equals(fieldName)) { + deserializedNetworkSecurityPerimeterConfigurationProperties.profile + = NetworkSecurityProfile.fromJson(reader); + } else { + reader.skipChildren(); + } + } + + return deserializedNetworkSecurityPerimeterConfigurationProperties; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfigurationProvisioningState.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfigurationProvisioningState.java new file mode 100644 index 000000000000..14d7c837af16 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityPerimeterConfigurationProvisioningState.java @@ -0,0 +1,77 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Provisioning state of a network security perimeter configuration that is being created or updated. + */ +public final class NetworkSecurityPerimeterConfigurationProvisioningState + extends ExpandableStringEnum { + /** + * Static value Succeeded for NetworkSecurityPerimeterConfigurationProvisioningState. + */ + public static final NetworkSecurityPerimeterConfigurationProvisioningState SUCCEEDED = fromString("Succeeded"); + + /** + * Static value Creating for NetworkSecurityPerimeterConfigurationProvisioningState. + */ + public static final NetworkSecurityPerimeterConfigurationProvisioningState CREATING = fromString("Creating"); + + /** + * Static value Updating for NetworkSecurityPerimeterConfigurationProvisioningState. + */ + public static final NetworkSecurityPerimeterConfigurationProvisioningState UPDATING = fromString("Updating"); + + /** + * Static value Deleting for NetworkSecurityPerimeterConfigurationProvisioningState. + */ + public static final NetworkSecurityPerimeterConfigurationProvisioningState DELETING = fromString("Deleting"); + + /** + * Static value Accepted for NetworkSecurityPerimeterConfigurationProvisioningState. + */ + public static final NetworkSecurityPerimeterConfigurationProvisioningState ACCEPTED = fromString("Accepted"); + + /** + * Static value Failed for NetworkSecurityPerimeterConfigurationProvisioningState. + */ + public static final NetworkSecurityPerimeterConfigurationProvisioningState FAILED = fromString("Failed"); + + /** + * Static value Canceled for NetworkSecurityPerimeterConfigurationProvisioningState. + */ + public static final NetworkSecurityPerimeterConfigurationProvisioningState CANCELED = fromString("Canceled"); + + /** + * Creates a new instance of NetworkSecurityPerimeterConfigurationProvisioningState value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Deprecated + public NetworkSecurityPerimeterConfigurationProvisioningState() { + } + + /** + * Creates or finds a NetworkSecurityPerimeterConfigurationProvisioningState from its string representation. + * + * @param name a name to look for. + * @return the corresponding NetworkSecurityPerimeterConfigurationProvisioningState. + */ + public static NetworkSecurityPerimeterConfigurationProvisioningState fromString(String name) { + return fromString(name, NetworkSecurityPerimeterConfigurationProvisioningState.class); + } + + /** + * Gets known NetworkSecurityPerimeterConfigurationProvisioningState values. + * + * @return known NetworkSecurityPerimeterConfigurationProvisioningState values. + */ + public static Collection values() { + return values(NetworkSecurityPerimeterConfigurationProvisioningState.class); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityProfile.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityProfile.java new file mode 100644 index 000000000000..1eb214465188 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/NetworkSecurityProfile.java @@ -0,0 +1,213 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Network security perimeter configuration profile. + */ +@Fluent +public final class NetworkSecurityProfile implements JsonSerializable { + /* + * Name of the profile + */ + private String name; + + /* + * Current access rules version + */ + private Integer accessRulesVersion; + + /* + * List of Access Rules + */ + private List accessRules; + + /* + * Current diagnostic settings version + */ + private Integer diagnosticSettingsVersion; + + /* + * List of log categories that are enabled + */ + private List enabledLogCategories; + + /** + * Creates an instance of NetworkSecurityProfile class. + */ + public NetworkSecurityProfile() { + } + + /** + * Get the name property: Name of the profile. + * + * @return the name value. + */ + public String name() { + return this.name; + } + + /** + * Set the name property: Name of the profile. + * + * @param name the name value to set. + * @return the NetworkSecurityProfile object itself. + */ + public NetworkSecurityProfile withName(String name) { + this.name = name; + return this; + } + + /** + * Get the accessRulesVersion property: Current access rules version. + * + * @return the accessRulesVersion value. + */ + public Integer accessRulesVersion() { + return this.accessRulesVersion; + } + + /** + * Set the accessRulesVersion property: Current access rules version. + * + * @param accessRulesVersion the accessRulesVersion value to set. + * @return the NetworkSecurityProfile object itself. + */ + public NetworkSecurityProfile withAccessRulesVersion(Integer accessRulesVersion) { + this.accessRulesVersion = accessRulesVersion; + return this; + } + + /** + * Get the accessRules property: List of Access Rules. + * + * @return the accessRules value. + */ + public List accessRules() { + return this.accessRules; + } + + /** + * Set the accessRules property: List of Access Rules. + * + * @param accessRules the accessRules value to set. + * @return the NetworkSecurityProfile object itself. + */ + public NetworkSecurityProfile withAccessRules(List accessRules) { + this.accessRules = accessRules; + return this; + } + + /** + * Get the diagnosticSettingsVersion property: Current diagnostic settings version. + * + * @return the diagnosticSettingsVersion value. + */ + public Integer diagnosticSettingsVersion() { + return this.diagnosticSettingsVersion; + } + + /** + * Set the diagnosticSettingsVersion property: Current diagnostic settings version. + * + * @param diagnosticSettingsVersion the diagnosticSettingsVersion value to set. + * @return the NetworkSecurityProfile object itself. + */ + public NetworkSecurityProfile withDiagnosticSettingsVersion(Integer diagnosticSettingsVersion) { + this.diagnosticSettingsVersion = diagnosticSettingsVersion; + return this; + } + + /** + * Get the enabledLogCategories property: List of log categories that are enabled. + * + * @return the enabledLogCategories value. + */ + public List enabledLogCategories() { + return this.enabledLogCategories; + } + + /** + * Set the enabledLogCategories property: List of log categories that are enabled. + * + * @param enabledLogCategories the enabledLogCategories value to set. + * @return the NetworkSecurityProfile object itself. + */ + public NetworkSecurityProfile withEnabledLogCategories(List enabledLogCategories) { + this.enabledLogCategories = enabledLogCategories; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (accessRules() != null) { + accessRules().forEach(e -> e.validate()); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeNumberField("accessRulesVersion", this.accessRulesVersion); + jsonWriter.writeArrayField("accessRules", this.accessRules, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeNumberField("diagnosticSettingsVersion", this.diagnosticSettingsVersion); + jsonWriter.writeArrayField("enabledLogCategories", this.enabledLogCategories, + (writer, element) -> writer.writeString(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of NetworkSecurityProfile from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of NetworkSecurityProfile if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the NetworkSecurityProfile. + */ + public static NetworkSecurityProfile fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + NetworkSecurityProfile deserializedNetworkSecurityProfile = new NetworkSecurityProfile(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("name".equals(fieldName)) { + deserializedNetworkSecurityProfile.name = reader.getString(); + } else if ("accessRulesVersion".equals(fieldName)) { + deserializedNetworkSecurityProfile.accessRulesVersion = reader.getNullable(JsonReader::getInt); + } else if ("accessRules".equals(fieldName)) { + List accessRules = reader.readArray(reader1 -> AccessRule.fromJson(reader1)); + deserializedNetworkSecurityProfile.accessRules = accessRules; + } else if ("diagnosticSettingsVersion".equals(fieldName)) { + deserializedNetworkSecurityProfile.diagnosticSettingsVersion + = reader.getNullable(JsonReader::getInt); + } else if ("enabledLogCategories".equals(fieldName)) { + List enabledLogCategories = reader.readArray(reader1 -> reader1.getString()); + deserializedNetworkSecurityProfile.enabledLogCategories = enabledLogCategories; + } else { + reader.skipChildren(); + } + } + + return deserializedNetworkSecurityProfile; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ProvisioningIssue.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ProvisioningIssue.java new file mode 100644 index 000000000000..879dac647c66 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ProvisioningIssue.java @@ -0,0 +1,105 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Describes a provisioning issue for a network security perimeter configuration. + */ +@Immutable +public final class ProvisioningIssue implements JsonSerializable { + /* + * Name of the issue + */ + private String name; + + /* + * Details of a provisioning issue for a network security perimeter (NSP) configuration. Resource providers should + * generate separate provisioning issue elements for each separate issue detected, and include a meaningful and + * distinctive description, as well as any appropriate suggestedResourceIds and suggestedAccessRules + */ + private ProvisioningIssueProperties properties; + + /** + * Creates an instance of ProvisioningIssue class. + */ + public ProvisioningIssue() { + } + + /** + * Get the name property: Name of the issue. + * + * @return the name value. + */ + public String name() { + return this.name; + } + + /** + * Get the properties property: Details of a provisioning issue for a network security perimeter (NSP) + * configuration. Resource providers should generate separate provisioning issue elements for each separate issue + * detected, and include a meaningful and distinctive description, as well as any appropriate suggestedResourceIds + * and suggestedAccessRules. + * + * @return the properties value. + */ + public ProvisioningIssueProperties properties() { + return this.properties; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (properties() != null) { + properties().validate(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ProvisioningIssue from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ProvisioningIssue if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the ProvisioningIssue. + */ + public static ProvisioningIssue fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ProvisioningIssue deserializedProvisioningIssue = new ProvisioningIssue(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("name".equals(fieldName)) { + deserializedProvisioningIssue.name = reader.getString(); + } else if ("properties".equals(fieldName)) { + deserializedProvisioningIssue.properties = ProvisioningIssueProperties.fromJson(reader); + } else { + reader.skipChildren(); + } + } + + return deserializedProvisioningIssue; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ProvisioningIssueProperties.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ProvisioningIssueProperties.java new file mode 100644 index 000000000000..03b7d5581a79 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ProvisioningIssueProperties.java @@ -0,0 +1,156 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Details of a provisioning issue for a network security perimeter (NSP) configuration. Resource providers should + * generate separate provisioning issue elements for each separate issue detected, and include a meaningful and + * distinctive description, as well as any appropriate suggestedResourceIds and suggestedAccessRules. + */ +@Immutable +public final class ProvisioningIssueProperties implements JsonSerializable { + /* + * Type of issue + */ + private IssueType issueType; + + /* + * Severity of the issue. + */ + private Severity severity; + + /* + * Description of the issue + */ + private String description; + + /* + * Fully qualified resource IDs of suggested resources that can be associated to the network security perimeter + * (NSP) to remediate the issue. + */ + private List suggestedResourceIds; + + /* + * Access rules that can be added to the network security profile (NSP) to remediate the issue. + */ + private List suggestedAccessRules; + + /** + * Creates an instance of ProvisioningIssueProperties class. + */ + public ProvisioningIssueProperties() { + } + + /** + * Get the issueType property: Type of issue. + * + * @return the issueType value. + */ + public IssueType issueType() { + return this.issueType; + } + + /** + * Get the severity property: Severity of the issue. + * + * @return the severity value. + */ + public Severity severity() { + return this.severity; + } + + /** + * Get the description property: Description of the issue. + * + * @return the description value. + */ + public String description() { + return this.description; + } + + /** + * Get the suggestedResourceIds property: Fully qualified resource IDs of suggested resources that can be associated + * to the network security perimeter (NSP) to remediate the issue. + * + * @return the suggestedResourceIds value. + */ + public List suggestedResourceIds() { + return this.suggestedResourceIds; + } + + /** + * Get the suggestedAccessRules property: Access rules that can be added to the network security profile (NSP) to + * remediate the issue. + * + * @return the suggestedAccessRules value. + */ + public List suggestedAccessRules() { + return this.suggestedAccessRules; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (suggestedAccessRules() != null) { + suggestedAccessRules().forEach(e -> e.validate()); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ProvisioningIssueProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ProvisioningIssueProperties if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the ProvisioningIssueProperties. + */ + public static ProvisioningIssueProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ProvisioningIssueProperties deserializedProvisioningIssueProperties = new ProvisioningIssueProperties(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("issueType".equals(fieldName)) { + deserializedProvisioningIssueProperties.issueType = IssueType.fromString(reader.getString()); + } else if ("severity".equals(fieldName)) { + deserializedProvisioningIssueProperties.severity = Severity.fromString(reader.getString()); + } else if ("description".equals(fieldName)) { + deserializedProvisioningIssueProperties.description = reader.getString(); + } else if ("suggestedResourceIds".equals(fieldName)) { + List suggestedResourceIds = reader.readArray(reader1 -> reader1.getString()); + deserializedProvisioningIssueProperties.suggestedResourceIds = suggestedResourceIds; + } else if ("suggestedAccessRules".equals(fieldName)) { + List suggestedAccessRules = reader.readArray(reader1 -> AccessRule.fromJson(reader1)); + deserializedProvisioningIssueProperties.suggestedAccessRules = suggestedAccessRules; + } else { + reader.skipChildren(); + } + } + + return deserializedProvisioningIssueProperties; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/PublicNetworkAccessType.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/PublicNetworkAccessType.java index 443126c11d10..96b101885afc 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/PublicNetworkAccessType.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/PublicNetworkAccessType.java @@ -21,6 +21,11 @@ public final class PublicNetworkAccessType extends ExpandableStringEnum tags) { - super.withTags(tags); - return this; - } - - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - } - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - jsonWriter.writeStringField("location", location()); - jsonWriter.writeMapField("tags", tags(), (writer, element) -> writer.writeString(element)); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of QueryPacksResource from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of QueryPacksResource if the JsonReader was pointing to an instance of it, or null if it was - * pointing to JSON null. - * @throws IllegalStateException If the deserialized JSON object was missing any required properties. - * @throws IOException If an error occurs while reading the QueryPacksResource. - */ - public static QueryPacksResource fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - QueryPacksResource deserializedQueryPacksResource = new QueryPacksResource(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("id".equals(fieldName)) { - deserializedQueryPacksResource.id = reader.getString(); - } else if ("name".equals(fieldName)) { - deserializedQueryPacksResource.name = reader.getString(); - } else if ("type".equals(fieldName)) { - deserializedQueryPacksResource.type = reader.getString(); - } else if ("location".equals(fieldName)) { - deserializedQueryPacksResource.withLocation(reader.getString()); - } else if ("tags".equals(fieldName)) { - Map tags = reader.readMap(reader1 -> reader1.getString()); - deserializedQueryPacksResource.withTags(tags); - } else { - reader.skipChildren(); - } - } - - return deserializedQueryPacksResource; - }); - } -} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ResourceAssociation.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ResourceAssociation.java new file mode 100644 index 000000000000..27f7152f88ae --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ResourceAssociation.java @@ -0,0 +1,122 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Information about resource association. + */ +@Fluent +public final class ResourceAssociation implements JsonSerializable { + /* + * Name of the resource association + */ + private String name; + + /* + * Access mode of the resource association + */ + private ResourceAssociationAccessMode accessMode; + + /** + * Creates an instance of ResourceAssociation class. + */ + public ResourceAssociation() { + } + + /** + * Get the name property: Name of the resource association. + * + * @return the name value. + */ + public String name() { + return this.name; + } + + /** + * Set the name property: Name of the resource association. + * + * @param name the name value to set. + * @return the ResourceAssociation object itself. + */ + public ResourceAssociation withName(String name) { + this.name = name; + return this; + } + + /** + * Get the accessMode property: Access mode of the resource association. + * + * @return the accessMode value. + */ + public ResourceAssociationAccessMode accessMode() { + return this.accessMode; + } + + /** + * Set the accessMode property: Access mode of the resource association. + * + * @param accessMode the accessMode value to set. + * @return the ResourceAssociation object itself. + */ + public ResourceAssociation withAccessMode(ResourceAssociationAccessMode accessMode) { + this.accessMode = accessMode; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeStringField("accessMode", this.accessMode == null ? null : this.accessMode.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ResourceAssociation from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ResourceAssociation if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the ResourceAssociation. + */ + public static ResourceAssociation fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ResourceAssociation deserializedResourceAssociation = new ResourceAssociation(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("name".equals(fieldName)) { + deserializedResourceAssociation.name = reader.getString(); + } else if ("accessMode".equals(fieldName)) { + deserializedResourceAssociation.accessMode + = ResourceAssociationAccessMode.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + + return deserializedResourceAssociation; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ResourceAssociationAccessMode.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ResourceAssociationAccessMode.java new file mode 100644 index 000000000000..503c299a0176 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/ResourceAssociationAccessMode.java @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Access mode of the resource association. + */ +public final class ResourceAssociationAccessMode extends ExpandableStringEnum { + /** + * Static value Enforced for ResourceAssociationAccessMode. + */ + public static final ResourceAssociationAccessMode ENFORCED = fromString("Enforced"); + + /** + * Static value Learning for ResourceAssociationAccessMode. + */ + public static final ResourceAssociationAccessMode LEARNING = fromString("Learning"); + + /** + * Static value Audit for ResourceAssociationAccessMode. + */ + public static final ResourceAssociationAccessMode AUDIT = fromString("Audit"); + + /** + * Creates a new instance of ResourceAssociationAccessMode value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Deprecated + public ResourceAssociationAccessMode() { + } + + /** + * Creates or finds a ResourceAssociationAccessMode from its string representation. + * + * @param name a name to look for. + * @return the corresponding ResourceAssociationAccessMode. + */ + public static ResourceAssociationAccessMode fromString(String name) { + return fromString(name, ResourceAssociationAccessMode.class); + } + + /** + * Gets known ResourceAssociationAccessMode values. + * + * @return known ResourceAssociationAccessMode values. + */ + public static Collection values() { + return values(ResourceAssociationAccessMode.class); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/RuleDefinition.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/RuleDefinition.java new file mode 100644 index 000000000000..aa6a607c3036 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/RuleDefinition.java @@ -0,0 +1,226 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.util.CoreUtils; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; + +/** + * Rule definition parameters. + */ +@Fluent +public final class RuleDefinition implements JsonSerializable { + /* + * Summary rule query. + */ + private String query; + + /* + * Scheduled window in minutes. Allowed values: 20, 30, 60, 120, 180, 360, 720, 1440. + */ + private Integer binSize; + + /* + * The minimum delay in seconds before bin processing. + */ + private Integer binDelay; + + /* + * The start time (UTC) when Summary rule execution starts. + */ + private OffsetDateTime binStartTime; + + /* + * The time cursor used in Summary rules bins processing, e.g. TimeGenerated. + */ + private TimeSelectorEnum timeSelector; + + /* + * The destination table used for the Summary rule results. + */ + private String destinationTable; + + /** + * Creates an instance of RuleDefinition class. + */ + public RuleDefinition() { + } + + /** + * Get the query property: Summary rule query. + * + * @return the query value. + */ + public String query() { + return this.query; + } + + /** + * Set the query property: Summary rule query. + * + * @param query the query value to set. + * @return the RuleDefinition object itself. + */ + public RuleDefinition withQuery(String query) { + this.query = query; + return this; + } + + /** + * Get the binSize property: Scheduled window in minutes. Allowed values: 20, 30, 60, 120, 180, 360, 720, 1440. + * + * @return the binSize value. + */ + public Integer binSize() { + return this.binSize; + } + + /** + * Set the binSize property: Scheduled window in minutes. Allowed values: 20, 30, 60, 120, 180, 360, 720, 1440. + * + * @param binSize the binSize value to set. + * @return the RuleDefinition object itself. + */ + public RuleDefinition withBinSize(Integer binSize) { + this.binSize = binSize; + return this; + } + + /** + * Get the binDelay property: The minimum delay in seconds before bin processing. + * + * @return the binDelay value. + */ + public Integer binDelay() { + return this.binDelay; + } + + /** + * Set the binDelay property: The minimum delay in seconds before bin processing. + * + * @param binDelay the binDelay value to set. + * @return the RuleDefinition object itself. + */ + public RuleDefinition withBinDelay(Integer binDelay) { + this.binDelay = binDelay; + return this; + } + + /** + * Get the binStartTime property: The start time (UTC) when Summary rule execution starts. + * + * @return the binStartTime value. + */ + public OffsetDateTime binStartTime() { + return this.binStartTime; + } + + /** + * Set the binStartTime property: The start time (UTC) when Summary rule execution starts. + * + * @param binStartTime the binStartTime value to set. + * @return the RuleDefinition object itself. + */ + public RuleDefinition withBinStartTime(OffsetDateTime binStartTime) { + this.binStartTime = binStartTime; + return this; + } + + /** + * Get the timeSelector property: The time cursor used in Summary rules bins processing, e.g. TimeGenerated. + * + * @return the timeSelector value. + */ + public TimeSelectorEnum timeSelector() { + return this.timeSelector; + } + + /** + * Set the timeSelector property: The time cursor used in Summary rules bins processing, e.g. TimeGenerated. + * + * @param timeSelector the timeSelector value to set. + * @return the RuleDefinition object itself. + */ + public RuleDefinition withTimeSelector(TimeSelectorEnum timeSelector) { + this.timeSelector = timeSelector; + return this; + } + + /** + * Get the destinationTable property: The destination table used for the Summary rule results. + * + * @return the destinationTable value. + */ + public String destinationTable() { + return this.destinationTable; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("query", this.query); + jsonWriter.writeNumberField("binSize", this.binSize); + jsonWriter.writeNumberField("binDelay", this.binDelay); + jsonWriter.writeStringField("binStartTime", + this.binStartTime == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.binStartTime)); + jsonWriter.writeStringField("timeSelector", this.timeSelector == null ? null : this.timeSelector.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RuleDefinition from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RuleDefinition if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the RuleDefinition. + */ + public static RuleDefinition fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RuleDefinition deserializedRuleDefinition = new RuleDefinition(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("query".equals(fieldName)) { + deserializedRuleDefinition.query = reader.getString(); + } else if ("binSize".equals(fieldName)) { + deserializedRuleDefinition.binSize = reader.getNullable(JsonReader::getInt); + } else if ("binDelay".equals(fieldName)) { + deserializedRuleDefinition.binDelay = reader.getNullable(JsonReader::getInt); + } else if ("binStartTime".equals(fieldName)) { + deserializedRuleDefinition.binStartTime = reader + .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); + } else if ("timeSelector".equals(fieldName)) { + deserializedRuleDefinition.timeSelector = TimeSelectorEnum.fromString(reader.getString()); + } else if ("destinationTable".equals(fieldName)) { + deserializedRuleDefinition.destinationTable = reader.getString(); + } else { + reader.skipChildren(); + } + } + + return deserializedRuleDefinition; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/RuleTypeEnum.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/RuleTypeEnum.java new file mode 100644 index 000000000000..2e757c9ed2d6 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/RuleTypeEnum.java @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * SummaryRules rule type: User. + */ +public final class RuleTypeEnum extends ExpandableStringEnum { + /** + * Static value User for RuleTypeEnum. + */ + public static final RuleTypeEnum USER = fromString("User"); + + /** + * Creates a new instance of RuleTypeEnum value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Deprecated + public RuleTypeEnum() { + } + + /** + * Creates or finds a RuleTypeEnum from its string representation. + * + * @param name a name to look for. + * @return the corresponding RuleTypeEnum. + */ + public static RuleTypeEnum fromString(String name) { + return fromString(name, RuleTypeEnum.class); + } + + /** + * Gets known RuleTypeEnum values. + * + * @return known RuleTypeEnum values. + */ + public static Collection values() { + return values(RuleTypeEnum.class); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Severity.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Severity.java new file mode 100644 index 000000000000..b9ce652f7e05 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Severity.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Severity of the issue. + */ +public final class Severity extends ExpandableStringEnum { + /** + * Static value Warning for Severity. + */ + public static final Severity WARNING = fromString("Warning"); + + /** + * Static value Error for Severity. + */ + public static final Severity ERROR = fromString("Error"); + + /** + * Creates a new instance of Severity value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Deprecated + public Severity() { + } + + /** + * Creates or finds a Severity from its string representation. + * + * @param name a name to look for. + * @return the corresponding Severity. + */ + public static Severity fromString(String name) { + return fromString(name, Severity.class); + } + + /** + * Gets known Severity values. + * + * @return known Severity values. + */ + public static Collection values() { + return values(Severity.class); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/StatusCodeEnum.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/StatusCodeEnum.java new file mode 100644 index 000000000000..9aaf9f5b5e43 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/StatusCodeEnum.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Indicates the reason for rule deactivation. + */ +public final class StatusCodeEnum extends ExpandableStringEnum { + /** + * Static value UserAction for StatusCodeEnum. + */ + public static final StatusCodeEnum USER_ACTION = fromString("UserAction"); + + /** + * Static value DataPlaneError for StatusCodeEnum. + */ + public static final StatusCodeEnum DATA_PLANE_ERROR = fromString("DataPlaneError"); + + /** + * Creates a new instance of StatusCodeEnum value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Deprecated + public StatusCodeEnum() { + } + + /** + * Creates or finds a StatusCodeEnum from its string representation. + * + * @param name a name to look for. + * @return the corresponding StatusCodeEnum. + */ + public static StatusCodeEnum fromString(String name) { + return fromString(name, StatusCodeEnum.class); + } + + /** + * Gets known StatusCodeEnum values. + * + * @return known StatusCodeEnum values. + */ + public static Collection values() { + return values(StatusCodeEnum.class); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogs.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogs.java new file mode 100644 index 000000000000..ea4a2602b17f --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogs.java @@ -0,0 +1,372 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.http.rest.Response; +import com.azure.core.management.SystemData; +import com.azure.core.util.Context; +import com.azure.resourcemanager.loganalytics.fluent.models.SummaryLogsInner; + +/** + * An immutable client-side representation of SummaryLogs. + */ +public interface SummaryLogs { + /** + * Gets the id property: Fully qualified resource Id for the resource. + * + * @return the id value. + */ + String id(); + + /** + * Gets the name property: The name of the resource. + * + * @return the name value. + */ + String name(); + + /** + * Gets the type property: The type of the resource. + * + * @return the type value. + */ + String type(); + + /** + * Gets the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information. + * + * @return the systemData value. + */ + SystemData systemData(); + + /** + * Gets the ruleType property: SummaryRules rule type: User. + * + * @return the ruleType value. + */ + RuleTypeEnum ruleType(); + + /** + * Gets the displayName property: The display name of the Summary rule. + * + * @return the displayName value. + */ + String displayName(); + + /** + * Gets the description property: The description of the Summary rule. + * + * @return the description value. + */ + String description(); + + /** + * Gets the isActive property: Indicates if Summary rule is active. If not, Summary rule execution stops. + * + * @return the isActive value. + */ + Boolean isActive(); + + /** + * Gets the statusCode property: Indicates the reason for rule deactivation. + * + * @return the statusCode value. + */ + StatusCodeEnum statusCode(); + + /** + * Gets the provisioningState property: Summary rule is in provisioning state. If set to 'updating' or 'deleting', + * indicates a resource lock due to an ongoing operation, preventing any update to the Summary rule until the + * operation is complete. + * + * @return the provisioningState value. + */ + ProvisioningStateEnum provisioningState(); + + /** + * Gets the ruleDefinition property: Rule definition parameters. + * + * @return the ruleDefinition value. + */ + RuleDefinition ruleDefinition(); + + /** + * Gets the name of the resource group. + * + * @return the name of the resource group. + */ + String resourceGroupName(); + + /** + * Gets the inner com.azure.resourcemanager.loganalytics.fluent.models.SummaryLogsInner object. + * + * @return the inner object. + */ + SummaryLogsInner innerModel(); + + /** + * The entirety of the SummaryLogs definition. + */ + interface Definition + extends DefinitionStages.Blank, DefinitionStages.WithParentResource, DefinitionStages.WithCreate { + } + + /** + * The SummaryLogs definition stages. + */ + interface DefinitionStages { + /** + * The first stage of the SummaryLogs definition. + */ + interface Blank extends WithParentResource { + } + + /** + * The stage of the SummaryLogs definition allowing to specify parent resource. + */ + interface WithParentResource { + /** + * Specifies resourceGroupName, workspaceName. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @return the next definition stage. + */ + WithCreate withExistingWorkspace(String resourceGroupName, String workspaceName); + } + + /** + * The stage of the SummaryLogs definition which contains all the minimum required properties for the resource + * to be created, but also allows for any other optional properties to be specified. + */ + interface WithCreate extends DefinitionStages.WithRuleType, DefinitionStages.WithDisplayName, + DefinitionStages.WithDescription, DefinitionStages.WithRuleDefinition { + /** + * Executes the create request. + * + * @return the created resource. + */ + SummaryLogs create(); + + /** + * Executes the create request. + * + * @param context The context to associate with this operation. + * @return the created resource. + */ + SummaryLogs create(Context context); + } + + /** + * The stage of the SummaryLogs definition allowing to specify ruleType. + */ + interface WithRuleType { + /** + * Specifies the ruleType property: SummaryRules rule type: User.. + * + * @param ruleType SummaryRules rule type: User. + * @return the next definition stage. + */ + WithCreate withRuleType(RuleTypeEnum ruleType); + } + + /** + * The stage of the SummaryLogs definition allowing to specify displayName. + */ + interface WithDisplayName { + /** + * Specifies the displayName property: The display name of the Summary rule.. + * + * @param displayName The display name of the Summary rule. + * @return the next definition stage. + */ + WithCreate withDisplayName(String displayName); + } + + /** + * The stage of the SummaryLogs definition allowing to specify description. + */ + interface WithDescription { + /** + * Specifies the description property: The description of the Summary rule.. + * + * @param description The description of the Summary rule. + * @return the next definition stage. + */ + WithCreate withDescription(String description); + } + + /** + * The stage of the SummaryLogs definition allowing to specify ruleDefinition. + */ + interface WithRuleDefinition { + /** + * Specifies the ruleDefinition property: Rule definition parameters.. + * + * @param ruleDefinition Rule definition parameters. + * @return the next definition stage. + */ + WithCreate withRuleDefinition(RuleDefinition ruleDefinition); + } + } + + /** + * Begins update for the SummaryLogs resource. + * + * @return the stage of resource update. + */ + SummaryLogs.Update update(); + + /** + * The template for SummaryLogs update. + */ + interface Update extends UpdateStages.WithRuleType, UpdateStages.WithDisplayName, UpdateStages.WithDescription, + UpdateStages.WithRuleDefinition { + /** + * Executes the update request. + * + * @return the updated resource. + */ + SummaryLogs apply(); + + /** + * Executes the update request. + * + * @param context The context to associate with this operation. + * @return the updated resource. + */ + SummaryLogs apply(Context context); + } + + /** + * The SummaryLogs update stages. + */ + interface UpdateStages { + /** + * The stage of the SummaryLogs update allowing to specify ruleType. + */ + interface WithRuleType { + /** + * Specifies the ruleType property: SummaryRules rule type: User.. + * + * @param ruleType SummaryRules rule type: User. + * @return the next definition stage. + */ + Update withRuleType(RuleTypeEnum ruleType); + } + + /** + * The stage of the SummaryLogs update allowing to specify displayName. + */ + interface WithDisplayName { + /** + * Specifies the displayName property: The display name of the Summary rule.. + * + * @param displayName The display name of the Summary rule. + * @return the next definition stage. + */ + Update withDisplayName(String displayName); + } + + /** + * The stage of the SummaryLogs update allowing to specify description. + */ + interface WithDescription { + /** + * Specifies the description property: The description of the Summary rule.. + * + * @param description The description of the Summary rule. + * @return the next definition stage. + */ + Update withDescription(String description); + } + + /** + * The stage of the SummaryLogs update allowing to specify ruleDefinition. + */ + interface WithRuleDefinition { + /** + * Specifies the ruleDefinition property: Rule definition parameters.. + * + * @param ruleDefinition Rule definition parameters. + * @return the next definition stage. + */ + Update withRuleDefinition(RuleDefinition ruleDefinition); + } + } + + /** + * Refreshes the resource to sync with Azure. + * + * @return the refreshed resource. + */ + SummaryLogs refresh(); + + /** + * Refreshes the resource to sync with Azure. + * + * @param context The context to associate with this operation. + * @return the refreshed resource. + */ + SummaryLogs refresh(Context context); + + /** + * Starts an inactive Summary rule. + * + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void start(); + + /** + * Starts an inactive Summary rule. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void start(Context context); + + /** + * Stops an active Summary rule. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + Response stopWithResponse(Context context); + + /** + * Stops an active Summary rule. + * + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void stop(); + + /** + * Retries a failed Summary rule bin. + * + * @param parameters The parameters required to retry a Summary rule bin. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void retryBin(SummaryLogsRetryBin parameters); + + /** + * Retries a failed Summary rule bin. + * + * @param parameters The parameters required to retry a Summary rule bin. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void retryBin(SummaryLogsRetryBin parameters, Context context); +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsListResult.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsListResult.java new file mode 100644 index 000000000000..ddae71e9904c --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsListResult.java @@ -0,0 +1,115 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import com.azure.resourcemanager.loganalytics.fluent.models.SummaryLogsInner; +import java.io.IOException; +import java.util.List; + +/** + * The list Summary rule operation response. + */ +@Fluent +public final class SummaryLogsListResult implements JsonSerializable { + /* + * A list of Summary rules. + */ + private List value; + + /* + * URL to retrieve the next set of operation list results, if available. + */ + private String nextLink; + + /** + * Creates an instance of SummaryLogsListResult class. + */ + public SummaryLogsListResult() { + } + + /** + * Get the value property: A list of Summary rules. + * + * @return the value value. + */ + public List value() { + return this.value; + } + + /** + * Set the value property: A list of Summary rules. + * + * @param value the value value to set. + * @return the SummaryLogsListResult object itself. + */ + public SummaryLogsListResult withValue(List value) { + this.value = value; + return this; + } + + /** + * Get the nextLink property: URL to retrieve the next set of operation list results, if available. + * + * @return the nextLink value. + */ + public String nextLink() { + return this.nextLink; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (value() != null) { + value().forEach(e -> e.validate()); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of SummaryLogsListResult from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of SummaryLogsListResult if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the SummaryLogsListResult. + */ + public static SummaryLogsListResult fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + SummaryLogsListResult deserializedSummaryLogsListResult = new SummaryLogsListResult(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("value".equals(fieldName)) { + List value = reader.readArray(reader1 -> SummaryLogsInner.fromJson(reader1)); + deserializedSummaryLogsListResult.value = value; + } else if ("nextLink".equals(fieldName)) { + deserializedSummaryLogsListResult.nextLink = reader.getString(); + } else { + reader.skipChildren(); + } + } + + return deserializedSummaryLogsListResult; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsOperations.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsOperations.java new file mode 100644 index 000000000000..08256a10029e --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsOperations.java @@ -0,0 +1,227 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.Response; +import com.azure.core.util.Context; + +/** + * Resource collection API of SummaryLogsOperations. + */ +public interface SummaryLogsOperations { + /** + * Gets all summary rules for the specified Log Analytics workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return all summary rules for the specified Log Analytics workspace as paginated response with + * {@link PagedIterable}. + */ + PagedIterable listByWorkspace(String resourceGroupName, String workspaceName); + + /** + * Gets all summary rules for the specified Log Analytics workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return all summary rules for the specified Log Analytics workspace as paginated response with + * {@link PagedIterable}. + */ + PagedIterable listByWorkspace(String resourceGroupName, String workspaceName, Context context); + + /** + * Gets Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return log Analytics workspace Summary rules along with {@link Response}. + */ + Response getWithResponse(String resourceGroupName, String workspaceName, String summaryLogsName, + Context context); + + /** + * Gets Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return log Analytics workspace Summary rules. + */ + SummaryLogs get(String resourceGroupName, String workspaceName, String summaryLogsName); + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void delete(String resourceGroupName, String workspaceName, String summaryLogsName); + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void delete(String resourceGroupName, String workspaceName, String summaryLogsName, Context context); + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void start(String resourceGroupName, String workspaceName, String summaryLogsName); + + /** + * Starts an inactive Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void start(String resourceGroupName, String workspaceName, String summaryLogsName, Context context); + + /** + * Stops an active Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + Response stopWithResponse(String resourceGroupName, String workspaceName, String summaryLogsName, + Context context); + + /** + * Stops an active Summary rule. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void stop(String resourceGroupName, String workspaceName, String summaryLogsName); + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void retryBin(String resourceGroupName, String workspaceName, String summaryLogsName, + SummaryLogsRetryBin parameters); + + /** + * Retries a failed Summary rule bin. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param summaryLogsName The name of the summary logs. Must not contain '/'. + * @param parameters The parameters required to retry a Summary rule bin. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void retryBin(String resourceGroupName, String workspaceName, String summaryLogsName, + SummaryLogsRetryBin parameters, Context context); + + /** + * Gets Log Analytics workspace Summary rules. + * + * @param id the resource ID. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return log Analytics workspace Summary rules along with {@link Response}. + */ + SummaryLogs getById(String id); + + /** + * Gets Log Analytics workspace Summary rules. + * + * @param id the resource ID. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return log Analytics workspace Summary rules along with {@link Response}. + */ + Response getByIdWithResponse(String id, Context context); + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param id the resource ID. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void deleteById(String id); + + /** + * Deletes Log Analytics workspace Summary rules. + * + * @param id the resource ID. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void deleteByIdWithResponse(String id, Context context); + + /** + * Begins definition for a new SummaryLogs resource. + * + * @param name resource name. + * @return the first stage of the new SummaryLogs definition. + */ + SummaryLogs.DefinitionStages.Blank define(String name); +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsRetryBin.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsRetryBin.java new file mode 100644 index 000000000000..a766e7736945 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsRetryBin.java @@ -0,0 +1,96 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Request to retry a summary logs bin. + */ +@Fluent +public final class SummaryLogsRetryBin implements JsonSerializable { + /* + * Retry bin properties. + */ + private SummaryLogsRetryBinProperties properties; + + /** + * Creates an instance of SummaryLogsRetryBin class. + */ + public SummaryLogsRetryBin() { + } + + /** + * Get the properties property: Retry bin properties. + * + * @return the properties value. + */ + public SummaryLogsRetryBinProperties properties() { + return this.properties; + } + + /** + * Set the properties property: Retry bin properties. + * + * @param properties the properties value to set. + * @return the SummaryLogsRetryBin object itself. + */ + public SummaryLogsRetryBin withProperties(SummaryLogsRetryBinProperties properties) { + this.properties = properties; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (properties() != null) { + properties().validate(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("properties", this.properties); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of SummaryLogsRetryBin from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of SummaryLogsRetryBin if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the SummaryLogsRetryBin. + */ + public static SummaryLogsRetryBin fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + SummaryLogsRetryBin deserializedSummaryLogsRetryBin = new SummaryLogsRetryBin(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("properties".equals(fieldName)) { + deserializedSummaryLogsRetryBin.properties = SummaryLogsRetryBinProperties.fromJson(reader); + } else { + reader.skipChildren(); + } + } + + return deserializedSummaryLogsRetryBin; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsRetryBinProperties.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsRetryBinProperties.java new file mode 100644 index 000000000000..8b0ce563b9b2 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SummaryLogsRetryBinProperties.java @@ -0,0 +1,110 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.util.CoreUtils; +import com.azure.core.util.logging.ClientLogger; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; + +/** + * Properties for retrying a Summary rule bin. + */ +@Fluent +public final class SummaryLogsRetryBinProperties implements JsonSerializable { + /* + * The time (UTC) of the bin to retry. + */ + private OffsetDateTime retryBinStartTime; + + /** + * Creates an instance of SummaryLogsRetryBinProperties class. + */ + public SummaryLogsRetryBinProperties() { + } + + /** + * Get the retryBinStartTime property: The time (UTC) of the bin to retry. + * + * @return the retryBinStartTime value. + */ + public OffsetDateTime retryBinStartTime() { + return this.retryBinStartTime; + } + + /** + * Set the retryBinStartTime property: The time (UTC) of the bin to retry. + * + * @param retryBinStartTime the retryBinStartTime value to set. + * @return the SummaryLogsRetryBinProperties object itself. + */ + public SummaryLogsRetryBinProperties withRetryBinStartTime(OffsetDateTime retryBinStartTime) { + this.retryBinStartTime = retryBinStartTime; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (retryBinStartTime() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Missing required property retryBinStartTime in model SummaryLogsRetryBinProperties")); + } + } + + private static final ClientLogger LOGGER = new ClientLogger(SummaryLogsRetryBinProperties.class); + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("retryBinStartTime", + this.retryBinStartTime == null + ? null + : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.retryBinStartTime)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of SummaryLogsRetryBinProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of SummaryLogsRetryBinProperties if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the SummaryLogsRetryBinProperties. + */ + public static SummaryLogsRetryBinProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + SummaryLogsRetryBinProperties deserializedSummaryLogsRetryBinProperties + = new SummaryLogsRetryBinProperties(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("retryBinStartTime".equals(fieldName)) { + deserializedSummaryLogsRetryBinProperties.retryBinStartTime = reader + .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); + } else { + reader.skipChildren(); + } + } + + return deserializedSummaryLogsRetryBinProperties; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SystemDataAutoGenerated.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SystemDataAutoGenerated.java deleted file mode 100644 index 6e27ad4d2842..000000000000 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/SystemDataAutoGenerated.java +++ /dev/null @@ -1,242 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.loganalytics.models; - -import com.azure.core.annotation.Fluent; -import com.azure.core.util.CoreUtils; -import com.azure.json.JsonReader; -import com.azure.json.JsonSerializable; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import java.io.IOException; -import java.time.OffsetDateTime; -import java.time.format.DateTimeFormatter; - -/** - * Metadata pertaining to creation and last modification of the resource. - */ -@Fluent -public final class SystemDataAutoGenerated implements JsonSerializable { - /* - * The identity that created the resource. - */ - private String createdBy; - - /* - * The type of identity that created the resource. - */ - private CreatedByType createdByType; - - /* - * The timestamp of resource creation (UTC). - */ - private OffsetDateTime createdAt; - - /* - * The identity that last modified the resource. - */ - private String lastModifiedBy; - - /* - * The type of identity that last modified the resource. - */ - private CreatedByType lastModifiedByType; - - /* - * The timestamp of resource last modification (UTC) - */ - private OffsetDateTime lastModifiedAt; - - /** - * Creates an instance of SystemDataAutoGenerated class. - */ - public SystemDataAutoGenerated() { - } - - /** - * Get the createdBy property: The identity that created the resource. - * - * @return the createdBy value. - */ - public String createdBy() { - return this.createdBy; - } - - /** - * Set the createdBy property: The identity that created the resource. - * - * @param createdBy the createdBy value to set. - * @return the SystemDataAutoGenerated object itself. - */ - public SystemDataAutoGenerated withCreatedBy(String createdBy) { - this.createdBy = createdBy; - return this; - } - - /** - * Get the createdByType property: The type of identity that created the resource. - * - * @return the createdByType value. - */ - public CreatedByType createdByType() { - return this.createdByType; - } - - /** - * Set the createdByType property: The type of identity that created the resource. - * - * @param createdByType the createdByType value to set. - * @return the SystemDataAutoGenerated object itself. - */ - public SystemDataAutoGenerated withCreatedByType(CreatedByType createdByType) { - this.createdByType = createdByType; - return this; - } - - /** - * Get the createdAt property: The timestamp of resource creation (UTC). - * - * @return the createdAt value. - */ - public OffsetDateTime createdAt() { - return this.createdAt; - } - - /** - * Set the createdAt property: The timestamp of resource creation (UTC). - * - * @param createdAt the createdAt value to set. - * @return the SystemDataAutoGenerated object itself. - */ - public SystemDataAutoGenerated withCreatedAt(OffsetDateTime createdAt) { - this.createdAt = createdAt; - return this; - } - - /** - * Get the lastModifiedBy property: The identity that last modified the resource. - * - * @return the lastModifiedBy value. - */ - public String lastModifiedBy() { - return this.lastModifiedBy; - } - - /** - * Set the lastModifiedBy property: The identity that last modified the resource. - * - * @param lastModifiedBy the lastModifiedBy value to set. - * @return the SystemDataAutoGenerated object itself. - */ - public SystemDataAutoGenerated withLastModifiedBy(String lastModifiedBy) { - this.lastModifiedBy = lastModifiedBy; - return this; - } - - /** - * Get the lastModifiedByType property: The type of identity that last modified the resource. - * - * @return the lastModifiedByType value. - */ - public CreatedByType lastModifiedByType() { - return this.lastModifiedByType; - } - - /** - * Set the lastModifiedByType property: The type of identity that last modified the resource. - * - * @param lastModifiedByType the lastModifiedByType value to set. - * @return the SystemDataAutoGenerated object itself. - */ - public SystemDataAutoGenerated withLastModifiedByType(CreatedByType lastModifiedByType) { - this.lastModifiedByType = lastModifiedByType; - return this; - } - - /** - * Get the lastModifiedAt property: The timestamp of resource last modification (UTC). - * - * @return the lastModifiedAt value. - */ - public OffsetDateTime lastModifiedAt() { - return this.lastModifiedAt; - } - - /** - * Set the lastModifiedAt property: The timestamp of resource last modification (UTC). - * - * @param lastModifiedAt the lastModifiedAt value to set. - * @return the SystemDataAutoGenerated object itself. - */ - public SystemDataAutoGenerated withLastModifiedAt(OffsetDateTime lastModifiedAt) { - this.lastModifiedAt = lastModifiedAt; - return this; - } - - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - } - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - jsonWriter.writeStringField("createdBy", this.createdBy); - jsonWriter.writeStringField("createdByType", this.createdByType == null ? null : this.createdByType.toString()); - jsonWriter.writeStringField("createdAt", - this.createdAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.createdAt)); - jsonWriter.writeStringField("lastModifiedBy", this.lastModifiedBy); - jsonWriter.writeStringField("lastModifiedByType", - this.lastModifiedByType == null ? null : this.lastModifiedByType.toString()); - jsonWriter.writeStringField("lastModifiedAt", - this.lastModifiedAt == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.lastModifiedAt)); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of SystemDataAutoGenerated from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of SystemDataAutoGenerated if the JsonReader was pointing to an instance of it, or null if it - * was pointing to JSON null. - * @throws IOException If an error occurs while reading the SystemDataAutoGenerated. - */ - public static SystemDataAutoGenerated fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - SystemDataAutoGenerated deserializedSystemDataAutoGenerated = new SystemDataAutoGenerated(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("createdBy".equals(fieldName)) { - deserializedSystemDataAutoGenerated.createdBy = reader.getString(); - } else if ("createdByType".equals(fieldName)) { - deserializedSystemDataAutoGenerated.createdByType = CreatedByType.fromString(reader.getString()); - } else if ("createdAt".equals(fieldName)) { - deserializedSystemDataAutoGenerated.createdAt = reader - .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); - } else if ("lastModifiedBy".equals(fieldName)) { - deserializedSystemDataAutoGenerated.lastModifiedBy = reader.getString(); - } else if ("lastModifiedByType".equals(fieldName)) { - deserializedSystemDataAutoGenerated.lastModifiedByType - = CreatedByType.fromString(reader.getString()); - } else if ("lastModifiedAt".equals(fieldName)) { - deserializedSystemDataAutoGenerated.lastModifiedAt = reader - .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); - } else { - reader.skipChildren(); - } - } - - return deserializedSystemDataAutoGenerated; - }); - } -} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Table.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Table.java index a132b06efdf1..bb6b889337dc 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Table.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Table.java @@ -5,6 +5,7 @@ package com.azure.resourcemanager.loganalytics.models; import com.azure.core.http.rest.Response; +import com.azure.core.management.SystemData; import com.azure.core.util.Context; import com.azure.resourcemanager.loganalytics.fluent.models.TableInner; @@ -38,11 +39,12 @@ public interface Table { * * @return the systemData value. */ - SystemDataAutoGenerated systemData(); + SystemData systemData(); /** - * Gets the retentionInDays property: The table retention in days, between 4 and 730. Setting this property to -1 - * will default to the workspace retention. + * Gets the retentionInDays property: In Analytics table: the tables analytics retention in days, between 4 and 730. + * Setting this property to -1 will default to the workspace retention. In Basic and Auxiliary table: read only + * property. * * @return the retentionInDays value. */ @@ -50,14 +52,14 @@ public interface Table { /** * Gets the totalRetentionInDays property: The table total retention in days, between 4 and 4383. Setting this - * property to -1 will default to table retention. + * property to -1 will default to retentionInDays. * * @return the totalRetentionInDays value. */ Integer totalRetentionInDays(); /** - * Gets the archiveRetentionInDays property: The table data archive retention in days. Calculated as + * Gets the archiveRetentionInDays property: The tables long-term retention in days. Calculated as * (totalRetentionInDays-retentionInDays). * * @return the archiveRetentionInDays value. @@ -204,11 +206,13 @@ interface WithCreate extends DefinitionStages.WithRetentionInDays, DefinitionSta */ interface WithRetentionInDays { /** - * Specifies the retentionInDays property: The table retention in days, between 4 and 730. Setting this - * property to -1 will default to the workspace retention.. + * Specifies the retentionInDays property: In Analytics table: the tables analytics retention in days, + * between 4 and 730. Setting this property to -1 will default to the workspace retention. In Basic and + * Auxiliary table: read only property.. * - * @param retentionInDays The table retention in days, between 4 and 730. Setting this property to -1 will - * default to the workspace retention. + * @param retentionInDays In Analytics table: the tables analytics retention in days, between 4 and 730. + * Setting this property to -1 will default to the workspace retention. In Basic and Auxiliary table: read + * only property. * @return the next definition stage. */ WithCreate withRetentionInDays(Integer retentionInDays); @@ -220,10 +224,10 @@ interface WithRetentionInDays { interface WithTotalRetentionInDays { /** * Specifies the totalRetentionInDays property: The table total retention in days, between 4 and 4383. - * Setting this property to -1 will default to table retention.. + * Setting this property to -1 will default to retentionInDays.. * * @param totalRetentionInDays The table total retention in days, between 4 and 4383. Setting this property - * to -1 will default to table retention. + * to -1 will default to retentionInDays. * @return the next definition stage. */ WithCreate withTotalRetentionInDays(Integer totalRetentionInDays); @@ -320,11 +324,13 @@ interface UpdateStages { */ interface WithRetentionInDays { /** - * Specifies the retentionInDays property: The table retention in days, between 4 and 730. Setting this - * property to -1 will default to the workspace retention.. + * Specifies the retentionInDays property: In Analytics table: the tables analytics retention in days, + * between 4 and 730. Setting this property to -1 will default to the workspace retention. In Basic and + * Auxiliary table: read only property.. * - * @param retentionInDays The table retention in days, between 4 and 730. Setting this property to -1 will - * default to the workspace retention. + * @param retentionInDays In Analytics table: the tables analytics retention in days, between 4 and 730. + * Setting this property to -1 will default to the workspace retention. In Basic and Auxiliary table: read + * only property. * @return the next definition stage. */ Update withRetentionInDays(Integer retentionInDays); @@ -336,10 +342,10 @@ interface WithRetentionInDays { interface WithTotalRetentionInDays { /** * Specifies the totalRetentionInDays property: The table total retention in days, between 4 and 4383. - * Setting this property to -1 will default to table retention.. + * Setting this property to -1 will default to retentionInDays.. * * @param totalRetentionInDays The table total retention in days, between 4 and 4383. Setting this property - * to -1 will default to table retention. + * to -1 will default to retentionInDays. * @return the next definition stage. */ Update withTotalRetentionInDays(Integer totalRetentionInDays); diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/TablePlanEnum.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/TablePlanEnum.java index 6f506423c429..7eeece0a7632 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/TablePlanEnum.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/TablePlanEnum.java @@ -21,6 +21,11 @@ public final class TablePlanEnum extends ExpandableStringEnum { */ public static final TablePlanEnum ANALYTICS = fromString("Analytics"); + /** + * Static value Auxiliary for TablePlanEnum. + */ + public static final TablePlanEnum AUXILIARY = fromString("Auxiliary"); + /** * Creates a new instance of TablePlanEnum value. * diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/TimeSelectorEnum.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/TimeSelectorEnum.java new file mode 100644 index 000000000000..3f038ed82aa0 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/TimeSelectorEnum.java @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The time cursor used in Summary rules bins processing, e.g. TimeGenerated. + */ +public final class TimeSelectorEnum extends ExpandableStringEnum { + /** + * Static value TimeGenerated for TimeSelectorEnum. + */ + public static final TimeSelectorEnum TIME_GENERATED = fromString("TimeGenerated"); + + /** + * Creates a new instance of TimeSelectorEnum value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Deprecated + public TimeSelectorEnum() { + } + + /** + * Creates or finds a TimeSelectorEnum from its string representation. + * + * @param name a name to look for. + * @return the corresponding TimeSelectorEnum. + */ + public static TimeSelectorEnum fromString(String name) { + return fromString(name, TimeSelectorEnum.class); + } + + /** + * Gets known TimeSelectorEnum values. + * + * @return known TimeSelectorEnum values. + */ + public static Collection values() { + return values(TimeSelectorEnum.class); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Workspace.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Workspace.java index 1565231d5312..9d7cd91cc51a 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Workspace.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Workspace.java @@ -5,8 +5,10 @@ package com.azure.resourcemanager.loganalytics.models; import com.azure.core.management.Region; +import com.azure.core.management.SystemData; import com.azure.core.util.Context; import com.azure.resourcemanager.loganalytics.fluent.models.WorkspaceInner; +import java.time.OffsetDateTime; import java.util.List; import java.util.Map; @@ -61,7 +63,7 @@ public interface Workspace { * * @return the systemData value. */ - SystemDataAutoGenerated systemData(); + SystemData systemData(); /** * Gets the etag property: The etag of the workspace. @@ -111,14 +113,14 @@ public interface Workspace { * * @return the createdDate value. */ - String createdDate(); + OffsetDateTime createdDate(); /** * Gets the modifiedDate property: Workspace modification date. * * @return the modifiedDate value. */ - String modifiedDate(); + OffsetDateTime modifiedDate(); /** * Gets the publicNetworkAccessForIngestion property: The network access type for accessing Log Analytics ingestion. @@ -164,6 +166,20 @@ public interface Workspace { */ String defaultDataCollectionRuleResourceId(); + /** + * Gets the replication property: workspace replication properties. + * + * @return the replication value. + */ + WorkspaceReplicationProperties replication(); + + /** + * Gets the failover property: workspace failover properties. + * + * @return the failover value. + */ + WorkspaceFailoverProperties failover(); + /** * Gets the region of the resource. * @@ -251,7 +267,8 @@ interface WithCreate extends DefinitionStages.WithTags, DefinitionStages.WithIde DefinitionStages.WithEtag, DefinitionStages.WithSku, DefinitionStages.WithRetentionInDays, DefinitionStages.WithWorkspaceCapping, DefinitionStages.WithPublicNetworkAccessForIngestion, DefinitionStages.WithPublicNetworkAccessForQuery, DefinitionStages.WithForceCmkForQuery, - DefinitionStages.WithFeatures, DefinitionStages.WithDefaultDataCollectionRuleResourceId { + DefinitionStages.WithFeatures, DefinitionStages.WithDefaultDataCollectionRuleResourceId, + DefinitionStages.WithReplication, DefinitionStages.WithFailover { /** * Executes the create request. * @@ -419,6 +436,32 @@ interface WithDefaultDataCollectionRuleResourceId { */ WithCreate withDefaultDataCollectionRuleResourceId(String defaultDataCollectionRuleResourceId); } + + /** + * The stage of the Workspace definition allowing to specify replication. + */ + interface WithReplication { + /** + * Specifies the replication property: workspace replication properties.. + * + * @param replication workspace replication properties. + * @return the next definition stage. + */ + WithCreate withReplication(WorkspaceReplicationProperties replication); + } + + /** + * The stage of the Workspace definition allowing to specify failover. + */ + interface WithFailover { + /** + * Specifies the failover property: workspace failover properties.. + * + * @param failover workspace failover properties. + * @return the next definition stage. + */ + WithCreate withFailover(WorkspaceFailoverProperties failover); + } } /** @@ -435,7 +478,7 @@ interface Update extends UpdateStages.WithTags, UpdateStages.WithIdentity, Updat UpdateStages.WithRetentionInDays, UpdateStages.WithWorkspaceCapping, UpdateStages.WithPublicNetworkAccessForIngestion, UpdateStages.WithPublicNetworkAccessForQuery, UpdateStages.WithForceCmkForQuery, UpdateStages.WithFeatures, - UpdateStages.WithDefaultDataCollectionRuleResourceId { + UpdateStages.WithDefaultDataCollectionRuleResourceId, UpdateStages.WithReplication, UpdateStages.WithFailover { /** * Executes the update request. * @@ -594,6 +637,32 @@ interface WithDefaultDataCollectionRuleResourceId { */ Update withDefaultDataCollectionRuleResourceId(String defaultDataCollectionRuleResourceId); } + + /** + * The stage of the Workspace update allowing to specify replication. + */ + interface WithReplication { + /** + * Specifies the replication property: workspace replication properties.. + * + * @param replication workspace replication properties. + * @return the next definition stage. + */ + Update withReplication(WorkspaceReplicationProperties replication); + } + + /** + * The stage of the Workspace update allowing to specify failover. + */ + interface WithFailover { + /** + * Specifies the failover property: workspace failover properties.. + * + * @param failover workspace failover properties. + * @return the next definition stage. + */ + Update withFailover(WorkspaceFailoverProperties failover); + } } /** diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceFailoverProperties.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceFailoverProperties.java new file mode 100644 index 000000000000..2c21e573155e --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceFailoverProperties.java @@ -0,0 +1,101 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Immutable; +import com.azure.core.util.CoreUtils; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.OffsetDateTime; + +/** + * The failover state of the replication. + */ +@Immutable +public final class WorkspaceFailoverProperties implements JsonSerializable { + /* + * The failover state of the replication. + */ + private WorkspaceFailoverState state; + + /* + * The last time when the failover state was updated. + */ + private OffsetDateTime lastModifiedDate; + + /** + * Creates an instance of WorkspaceFailoverProperties class. + */ + public WorkspaceFailoverProperties() { + } + + /** + * Get the state property: The failover state of the replication. + * + * @return the state value. + */ + public WorkspaceFailoverState state() { + return this.state; + } + + /** + * Get the lastModifiedDate property: The last time when the failover state was updated. + * + * @return the lastModifiedDate value. + */ + public OffsetDateTime lastModifiedDate() { + return this.lastModifiedDate; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of WorkspaceFailoverProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of WorkspaceFailoverProperties if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the WorkspaceFailoverProperties. + */ + public static WorkspaceFailoverProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + WorkspaceFailoverProperties deserializedWorkspaceFailoverProperties = new WorkspaceFailoverProperties(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("state".equals(fieldName)) { + deserializedWorkspaceFailoverProperties.state + = WorkspaceFailoverState.fromString(reader.getString()); + } else if ("lastModifiedDate".equals(fieldName)) { + deserializedWorkspaceFailoverProperties.lastModifiedDate = reader + .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); + } else { + reader.skipChildren(); + } + } + + return deserializedWorkspaceFailoverProperties; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceFailoverState.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceFailoverState.java new file mode 100644 index 000000000000..9e737290b651 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceFailoverState.java @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The failover state of the replication. + */ +public final class WorkspaceFailoverState extends ExpandableStringEnum { + /** + * Static value Inactive for WorkspaceFailoverState. + */ + public static final WorkspaceFailoverState INACTIVE = fromString("Inactive"); + + /** + * Static value Activating for WorkspaceFailoverState. + */ + public static final WorkspaceFailoverState ACTIVATING = fromString("Activating"); + + /** + * Static value Active for WorkspaceFailoverState. + */ + public static final WorkspaceFailoverState ACTIVE = fromString("Active"); + + /** + * Static value Deactivating for WorkspaceFailoverState. + */ + public static final WorkspaceFailoverState DEACTIVATING = fromString("Deactivating"); + + /** + * Static value Failed for WorkspaceFailoverState. + */ + public static final WorkspaceFailoverState FAILED = fromString("Failed"); + + /** + * Creates a new instance of WorkspaceFailoverState value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Deprecated + public WorkspaceFailoverState() { + } + + /** + * Creates or finds a WorkspaceFailoverState from its string representation. + * + * @param name a name to look for. + * @return the corresponding WorkspaceFailoverState. + */ + public static WorkspaceFailoverState fromString(String name) { + return fromString(name, WorkspaceFailoverState.class); + } + + /** + * Gets known WorkspaceFailoverState values. + * + * @return known WorkspaceFailoverState values. + */ + public static Collection values() { + return values(WorkspaceFailoverState.class); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceFeatures.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceFeatures.java index a9df6beb1b9b..e99d2e623119 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceFeatures.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceFeatures.java @@ -11,6 +11,7 @@ import com.azure.json.JsonWriter; import java.io.IOException; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; /** @@ -43,6 +44,17 @@ public final class WorkspaceFeatures implements JsonSerializable associations; + /* * Workspace features. */ @@ -157,6 +169,26 @@ public WorkspaceFeatures withDisableLocalAuth(Boolean disableLocalAuth) { return this; } + /** + * Get the unifiedSentinelBillingOnly property: An indication if the specify workspace is limited to sentinel's + * unified billing model only. + * + * @return the unifiedSentinelBillingOnly value. + */ + public Boolean unifiedSentinelBillingOnly() { + return this.unifiedSentinelBillingOnly; + } + + /** + * Get the associations property: List of associations for the workspace. Indicates if the workspace is associated + * with any of the following experiences: MDC, Sentinel, SentinelGraph, etc. + * + * @return the associations value. + */ + public List associations() { + return this.associations; + } + /** * Get the additionalProperties property: Workspace features. * @@ -233,6 +265,12 @@ public static WorkspaceFeatures fromJson(JsonReader jsonReader) throws IOExcepti deserializedWorkspaceFeatures.clusterResourceId = reader.getString(); } else if ("disableLocalAuth".equals(fieldName)) { deserializedWorkspaceFeatures.disableLocalAuth = reader.getNullable(JsonReader::getBoolean); + } else if ("unifiedSentinelBillingOnly".equals(fieldName)) { + deserializedWorkspaceFeatures.unifiedSentinelBillingOnly + = reader.getNullable(JsonReader::getBoolean); + } else if ("associations".equals(fieldName)) { + List associations = reader.readArray(reader1 -> reader1.getString()); + deserializedWorkspaceFeatures.associations = associations; } else { if (additionalProperties == null) { additionalProperties = new LinkedHashMap<>(); diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspacePatch.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspacePatch.java index a535826fce8c..cc71120c2510 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspacePatch.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspacePatch.java @@ -10,6 +10,7 @@ import com.azure.json.JsonWriter; import com.azure.resourcemanager.loganalytics.fluent.models.WorkspaceProperties; import java.io.IOException; +import java.time.OffsetDateTime; import java.util.List; import java.util.Map; @@ -242,7 +243,7 @@ public WorkspacePatch withWorkspaceCapping(WorkspaceCapping workspaceCapping) { * * @return the createdDate value. */ - public String createdDate() { + public OffsetDateTime createdDate() { return this.innerProperties() == null ? null : this.innerProperties().createdDate(); } @@ -251,7 +252,7 @@ public String createdDate() { * * @return the modifiedDate value. */ - public String modifiedDate() { + public OffsetDateTime modifiedDate() { return this.innerProperties() == null ? null : this.innerProperties().modifiedDate(); } @@ -383,6 +384,52 @@ public WorkspacePatch withDefaultDataCollectionRuleResourceId(String defaultData return this; } + /** + * Get the replication property: workspace replication properties. + * + * @return the replication value. + */ + public WorkspaceReplicationProperties replication() { + return this.innerProperties() == null ? null : this.innerProperties().replication(); + } + + /** + * Set the replication property: workspace replication properties. + * + * @param replication the replication value to set. + * @return the WorkspacePatch object itself. + */ + public WorkspacePatch withReplication(WorkspaceReplicationProperties replication) { + if (this.innerProperties() == null) { + this.innerProperties = new WorkspaceProperties(); + } + this.innerProperties().withReplication(replication); + return this; + } + + /** + * Get the failover property: workspace failover properties. + * + * @return the failover value. + */ + public WorkspaceFailoverProperties failover() { + return this.innerProperties() == null ? null : this.innerProperties().failover(); + } + + /** + * Set the failover property: workspace failover properties. + * + * @param failover the failover value to set. + * @return the WorkspacePatch object itself. + */ + public WorkspacePatch withFailover(WorkspaceFailoverProperties failover) { + if (this.innerProperties() == null) { + this.innerProperties = new WorkspaceProperties(); + } + this.innerProperties().withFailover(failover); + return this; + } + /** * Validates the instance. * diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspacePurgeBodyFilters.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspacePurgeBodyFilters.java index dc6ff302ce36..ea933e471b37 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspacePurgeBodyFilters.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspacePurgeBodyFilters.java @@ -148,7 +148,9 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); jsonWriter.writeStringField("column", this.column); jsonWriter.writeStringField("operator", this.operator); - jsonWriter.writeUntypedField("value", this.value); + if (this.value != null) { + jsonWriter.writeUntypedField("value", this.value); + } jsonWriter.writeStringField("key", this.key); return jsonWriter.writeEndObject(); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceReplicationProperties.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceReplicationProperties.java new file mode 100644 index 000000000000..3221198b5a6a --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceReplicationProperties.java @@ -0,0 +1,178 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.util.CoreUtils; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.OffsetDateTime; + +/** + * Workspace replication properties. + */ +@Fluent +public final class WorkspaceReplicationProperties implements JsonSerializable { + /* + * The location of the replication. + */ + private String location; + + /* + * Specifies whether the replication is enabled or not. When true, workspace configuration and data is replicated to + * the specified location. If replication is been enabled, location must be provided. + */ + private Boolean enabled; + + /* + * The provisioning state of the replication. + */ + private WorkspaceReplicationState provisioningState; + + /* + * The last time when the replication was enabled. + */ + private OffsetDateTime createdDate; + + /* + * The last time when the replication was updated. + */ + private OffsetDateTime lastModifiedDate; + + /** + * Creates an instance of WorkspaceReplicationProperties class. + */ + public WorkspaceReplicationProperties() { + } + + /** + * Get the location property: The location of the replication. + * + * @return the location value. + */ + public String location() { + return this.location; + } + + /** + * Set the location property: The location of the replication. + * + * @param location the location value to set. + * @return the WorkspaceReplicationProperties object itself. + */ + public WorkspaceReplicationProperties withLocation(String location) { + this.location = location; + return this; + } + + /** + * Get the enabled property: Specifies whether the replication is enabled or not. When true, workspace configuration + * and data is replicated to the specified location. If replication is been enabled, location must be provided. + * + * @return the enabled value. + */ + public Boolean enabled() { + return this.enabled; + } + + /** + * Set the enabled property: Specifies whether the replication is enabled or not. When true, workspace configuration + * and data is replicated to the specified location. If replication is been enabled, location must be provided. + * + * @param enabled the enabled value to set. + * @return the WorkspaceReplicationProperties object itself. + */ + public WorkspaceReplicationProperties withEnabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Get the provisioningState property: The provisioning state of the replication. + * + * @return the provisioningState value. + */ + public WorkspaceReplicationState provisioningState() { + return this.provisioningState; + } + + /** + * Get the createdDate property: The last time when the replication was enabled. + * + * @return the createdDate value. + */ + public OffsetDateTime createdDate() { + return this.createdDate; + } + + /** + * Get the lastModifiedDate property: The last time when the replication was updated. + * + * @return the lastModifiedDate value. + */ + public OffsetDateTime lastModifiedDate() { + return this.lastModifiedDate; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("location", this.location); + jsonWriter.writeBooleanField("enabled", this.enabled); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of WorkspaceReplicationProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of WorkspaceReplicationProperties if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the WorkspaceReplicationProperties. + */ + public static WorkspaceReplicationProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + WorkspaceReplicationProperties deserializedWorkspaceReplicationProperties + = new WorkspaceReplicationProperties(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("location".equals(fieldName)) { + deserializedWorkspaceReplicationProperties.location = reader.getString(); + } else if ("enabled".equals(fieldName)) { + deserializedWorkspaceReplicationProperties.enabled = reader.getNullable(JsonReader::getBoolean); + } else if ("provisioningState".equals(fieldName)) { + deserializedWorkspaceReplicationProperties.provisioningState + = WorkspaceReplicationState.fromString(reader.getString()); + } else if ("createdDate".equals(fieldName)) { + deserializedWorkspaceReplicationProperties.createdDate = reader + .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); + } else if ("lastModifiedDate".equals(fieldName)) { + deserializedWorkspaceReplicationProperties.lastModifiedDate = reader + .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); + } else { + reader.skipChildren(); + } + } + + return deserializedWorkspaceReplicationProperties; + }); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceReplicationState.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceReplicationState.java new file mode 100644 index 000000000000..3012cd8a21ed --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceReplicationState.java @@ -0,0 +1,86 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.models; + +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The provisioning state of the replication. + */ +public final class WorkspaceReplicationState extends ExpandableStringEnum { + /** + * Static value Succeeded for WorkspaceReplicationState. + */ + public static final WorkspaceReplicationState SUCCEEDED = fromString("Succeeded"); + + /** + * Static value EnableRequested for WorkspaceReplicationState. + */ + public static final WorkspaceReplicationState ENABLE_REQUESTED = fromString("EnableRequested"); + + /** + * Static value Enabling for WorkspaceReplicationState. + */ + public static final WorkspaceReplicationState ENABLING = fromString("Enabling"); + + /** + * Static value DisableRequested for WorkspaceReplicationState. + */ + public static final WorkspaceReplicationState DISABLE_REQUESTED = fromString("DisableRequested"); + + /** + * Static value Disabling for WorkspaceReplicationState. + */ + public static final WorkspaceReplicationState DISABLING = fromString("Disabling"); + + /** + * Static value RollbackRequested for WorkspaceReplicationState. + */ + public static final WorkspaceReplicationState ROLLBACK_REQUESTED = fromString("RollbackRequested"); + + /** + * Static value RollingBack for WorkspaceReplicationState. + */ + public static final WorkspaceReplicationState ROLLING_BACK = fromString("RollingBack"); + + /** + * Static value Failed for WorkspaceReplicationState. + */ + public static final WorkspaceReplicationState FAILED = fromString("Failed"); + + /** + * Static value Canceled for WorkspaceReplicationState. + */ + public static final WorkspaceReplicationState CANCELED = fromString("Canceled"); + + /** + * Creates a new instance of WorkspaceReplicationState value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Deprecated + public WorkspaceReplicationState() { + } + + /** + * Creates or finds a WorkspaceReplicationState from its string representation. + * + * @param name a name to look for. + * @return the corresponding WorkspaceReplicationState. + */ + public static WorkspaceReplicationState fromString(String name) { + return fromString(name, WorkspaceReplicationState.class); + } + + /** + * Gets known WorkspaceReplicationState values. + * + * @return known WorkspaceReplicationState values. + */ + public static Collection values() { + return values(WorkspaceReplicationState.class); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceSku.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceSku.java index 2d7a1192b4f8..af77ce68904e 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceSku.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/WorkspaceSku.java @@ -5,12 +5,14 @@ package com.azure.resourcemanager.loganalytics.models; import com.azure.core.annotation.Fluent; +import com.azure.core.util.CoreUtils; import com.azure.core.util.logging.ClientLogger; import com.azure.json.JsonReader; import com.azure.json.JsonSerializable; import com.azure.json.JsonToken; import com.azure.json.JsonWriter; import java.io.IOException; +import java.time.OffsetDateTime; /** * The SKU (tier) of a workspace. @@ -25,12 +27,12 @@ public final class WorkspaceSku implements JsonSerializable { /* * The capacity reservation level in GB for this workspace, when CapacityReservation sku is selected. */ - private CapacityReservationLevel capacityReservationLevel; + private Integer capacityReservationLevel; /* * The last time when the sku was updated. */ - private String lastSkuUpdate; + private OffsetDateTime lastSkuUpdate; /** * Creates an instance of WorkspaceSku class. @@ -64,7 +66,7 @@ public WorkspaceSku withName(WorkspaceSkuNameEnum name) { * * @return the capacityReservationLevel value. */ - public CapacityReservationLevel capacityReservationLevel() { + public Integer capacityReservationLevel() { return this.capacityReservationLevel; } @@ -75,7 +77,7 @@ public CapacityReservationLevel capacityReservationLevel() { * @param capacityReservationLevel the capacityReservationLevel value to set. * @return the WorkspaceSku object itself. */ - public WorkspaceSku withCapacityReservationLevel(CapacityReservationLevel capacityReservationLevel) { + public WorkspaceSku withCapacityReservationLevel(Integer capacityReservationLevel) { this.capacityReservationLevel = capacityReservationLevel; return this; } @@ -85,7 +87,7 @@ public WorkspaceSku withCapacityReservationLevel(CapacityReservationLevel capaci * * @return the lastSkuUpdate value. */ - public String lastSkuUpdate() { + public OffsetDateTime lastSkuUpdate() { return this.lastSkuUpdate; } @@ -110,8 +112,7 @@ public void validate() { public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); jsonWriter.writeStringField("name", this.name == null ? null : this.name.toString()); - jsonWriter.writeNumberField("capacityReservationLevel", - this.capacityReservationLevel == null ? null : this.capacityReservationLevel.toInt()); + jsonWriter.writeNumberField("capacityReservationLevel", this.capacityReservationLevel); return jsonWriter.writeEndObject(); } @@ -134,10 +135,10 @@ public static WorkspaceSku fromJson(JsonReader jsonReader) throws IOException { if ("name".equals(fieldName)) { deserializedWorkspaceSku.name = WorkspaceSkuNameEnum.fromString(reader.getString()); } else if ("capacityReservationLevel".equals(fieldName)) { - deserializedWorkspaceSku.capacityReservationLevel - = CapacityReservationLevel.fromInt(reader.getInt()); + deserializedWorkspaceSku.capacityReservationLevel = reader.getNullable(JsonReader::getInt); } else if ("lastSkuUpdate".equals(fieldName)) { - deserializedWorkspaceSku.lastSkuUpdate = reader.getString(); + deserializedWorkspaceSku.lastSkuUpdate = reader + .getNullable(nonNullReader -> CoreUtils.parseBestOffsetDateTime(nonNullReader.getString())); } else { reader.skipChildren(); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Workspaces.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Workspaces.java index aded531c69b2..c83b5b4f9374 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Workspaces.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/Workspaces.java @@ -109,6 +109,149 @@ public interface Workspaces { */ Workspace getByResourceGroup(String resourceGroupName, String workspaceName); + /** + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void failover(String resourceGroupName, String location, String workspaceName); + + /** + * Activates failover for the specified workspace. + * + * The specified replication location must match the location of the enabled replication for this workspace. The + * failover operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can be + * checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param location The name of the Azure region. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void failover(String resourceGroupName, String location, String workspaceName, Context context); + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void failback(String resourceGroupName, String workspaceName); + + /** + * Deactivates failover for the specified workspace. + * + * The failback operation is asynchronous and can take up to 30 minutes to complete. The status of the operation can + * be checked using the operationId returned in the response. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void failback(String resourceGroupName, String workspaceName, Context context); + + /** + * Gets a list of NSP configurations for specified workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of NSP configurations for specified workspace as paginated response with {@link PagedIterable}. + */ + PagedIterable listNsp(String resourceGroupName, String workspaceName); + + /** + * Gets a list of NSP configurations for specified workspace. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a list of NSP configurations for specified workspace as paginated response with {@link PagedIterable}. + */ + PagedIterable listNsp(String resourceGroupName, String workspaceName, + Context context); + + /** + * Gets a network security perimeter configuration. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a network security perimeter configuration along with {@link Response}. + */ + Response getNspWithResponse(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName, Context context); + + /** + * Gets a network security perimeter configuration. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a network security perimeter configuration. + */ + NetworkSecurityPerimeterConfiguration getNsp(String resourceGroupName, String workspaceName, + String networkSecurityPerimeterConfigurationName); + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void reconcileNsp(String resourceGroupName, String workspaceName, String networkSecurityPerimeterConfigurationName); + + /** + * Reconcile network security perimeter configuration for Workspace resource. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param workspaceName The name of the workspace. + * @param networkSecurityPerimeterConfigurationName The name for a network security perimeter configuration. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void reconcileNsp(String resourceGroupName, String workspaceName, String networkSecurityPerimeterConfigurationName, + Context context); + /** * Gets a workspace instance. * diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-loganalytics/proxy-config.json b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-loganalytics/proxy-config.json index 96beaa4260d6..207d3ba1bca3 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-loganalytics/proxy-config.json +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-loganalytics/proxy-config.json @@ -1 +1 @@ -[["com.azure.resourcemanager.loganalytics.implementation.AvailableServiceTiersClientImpl$AvailableServiceTiersService"],["com.azure.resourcemanager.loganalytics.implementation.ClustersClientImpl$ClustersService"],["com.azure.resourcemanager.loganalytics.implementation.DataExportsClientImpl$DataExportsService"],["com.azure.resourcemanager.loganalytics.implementation.DataSourcesClientImpl$DataSourcesService"],["com.azure.resourcemanager.loganalytics.implementation.DeletedWorkspacesClientImpl$DeletedWorkspacesService"],["com.azure.resourcemanager.loganalytics.implementation.GatewaysClientImpl$GatewaysService"],["com.azure.resourcemanager.loganalytics.implementation.IntelligencePacksClientImpl$IntelligencePacksService"],["com.azure.resourcemanager.loganalytics.implementation.LinkedServicesClientImpl$LinkedServicesService"],["com.azure.resourcemanager.loganalytics.implementation.LinkedStorageAccountsClientImpl$LinkedStorageAccountsService"],["com.azure.resourcemanager.loganalytics.implementation.ManagementGroupsClientImpl$ManagementGroupsService"],["com.azure.resourcemanager.loganalytics.implementation.OperationStatusesClientImpl$OperationStatusesService"],["com.azure.resourcemanager.loganalytics.implementation.OperationsClientImpl$OperationsService"],["com.azure.resourcemanager.loganalytics.implementation.QueriesClientImpl$QueriesService"],["com.azure.resourcemanager.loganalytics.implementation.QueryPacksClientImpl$QueryPacksService"],["com.azure.resourcemanager.loganalytics.implementation.SavedSearchesClientImpl$SavedSearchesService"],["com.azure.resourcemanager.loganalytics.implementation.SchemasClientImpl$SchemasService"],["com.azure.resourcemanager.loganalytics.implementation.SharedKeysOperationsClientImpl$SharedKeysOperationsService"],["com.azure.resourcemanager.loganalytics.implementation.StorageInsightConfigsClientImpl$StorageInsightConfigsService"],["com.azure.resourcemanager.loganalytics.implementation.TablesClientImpl$TablesService"],["com.azure.resourcemanager.loganalytics.implementation.UsagesClientImpl$UsagesService"],["com.azure.resourcemanager.loganalytics.implementation.WorkspacePurgesClientImpl$WorkspacePurgesService"],["com.azure.resourcemanager.loganalytics.implementation.WorkspacesClientImpl$WorkspacesService"]] \ No newline at end of file +[["com.azure.resourcemanager.loganalytics.implementation.AvailableServiceTiersClientImpl$AvailableServiceTiersService"],["com.azure.resourcemanager.loganalytics.implementation.ClustersClientImpl$ClustersService"],["com.azure.resourcemanager.loganalytics.implementation.DataExportsClientImpl$DataExportsService"],["com.azure.resourcemanager.loganalytics.implementation.DataSourcesClientImpl$DataSourcesService"],["com.azure.resourcemanager.loganalytics.implementation.DeletedWorkspacesClientImpl$DeletedWorkspacesService"],["com.azure.resourcemanager.loganalytics.implementation.GatewaysClientImpl$GatewaysService"],["com.azure.resourcemanager.loganalytics.implementation.IntelligencePacksClientImpl$IntelligencePacksService"],["com.azure.resourcemanager.loganalytics.implementation.LinkedServicesClientImpl$LinkedServicesService"],["com.azure.resourcemanager.loganalytics.implementation.LinkedStorageAccountsClientImpl$LinkedStorageAccountsService"],["com.azure.resourcemanager.loganalytics.implementation.ManagementGroupsClientImpl$ManagementGroupsService"],["com.azure.resourcemanager.loganalytics.implementation.OperationStatusesClientImpl$OperationStatusesService"],["com.azure.resourcemanager.loganalytics.implementation.OperationsClientImpl$OperationsService"],["com.azure.resourcemanager.loganalytics.implementation.QueriesClientImpl$QueriesService"],["com.azure.resourcemanager.loganalytics.implementation.QueryPacksClientImpl$QueryPacksService"],["com.azure.resourcemanager.loganalytics.implementation.SavedSearchesClientImpl$SavedSearchesService"],["com.azure.resourcemanager.loganalytics.implementation.SchemasClientImpl$SchemasService"],["com.azure.resourcemanager.loganalytics.implementation.SharedKeysOperationsClientImpl$SharedKeysOperationsService"],["com.azure.resourcemanager.loganalytics.implementation.StorageInsightConfigsClientImpl$StorageInsightConfigsService"],["com.azure.resourcemanager.loganalytics.implementation.SummaryLogsOperationsClientImpl$SummaryLogsOperationsService"],["com.azure.resourcemanager.loganalytics.implementation.TablesClientImpl$TablesService"],["com.azure.resourcemanager.loganalytics.implementation.UsagesClientImpl$UsagesService"],["com.azure.resourcemanager.loganalytics.implementation.WorkspacePurgesClientImpl$WorkspacePurgesService"],["com.azure.resourcemanager.loganalytics.implementation.WorkspacesClientImpl$WorkspacesService"]] \ No newline at end of file diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/resources/azure-resourcemanager-loganalytics.properties b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/resources/azure-resourcemanager-loganalytics.properties new file mode 100644 index 000000000000..defbd48204e4 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/resources/azure-resourcemanager-loganalytics.properties @@ -0,0 +1 @@ +version=${project.version} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/AvailableServiceTiersListByWorkspaceSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/AvailableServiceTiersListByWorkspaceSamples.java index 6027c2a37478..911dda2f39eb 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/AvailableServiceTiersListByWorkspaceSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/AvailableServiceTiersListByWorkspaceSamples.java @@ -10,8 +10,8 @@ public final class AvailableServiceTiersListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesAvailableServiceTiers.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesAvailableServiceTiers.json */ /** * Sample code: AvailableServiceTiers. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersCreateOrUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersCreateOrUpdateSamples.java index cdf8a9d5ec19..baa8ce2485b5 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersCreateOrUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersCreateOrUpdateSamples.java @@ -4,7 +4,6 @@ package com.azure.resourcemanager.loganalytics.generated; -import com.azure.resourcemanager.loganalytics.models.Capacity; import com.azure.resourcemanager.loganalytics.models.ClusterSku; import com.azure.resourcemanager.loganalytics.models.ClusterSkuNameEnum; import java.util.HashMap; @@ -16,8 +15,8 @@ public final class ClustersCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * ClustersCreate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/ClustersCreate.json */ /** * Sample code: ClustersCreate. @@ -27,11 +26,10 @@ public final class ClustersCreateOrUpdateSamples { public static void clustersCreate(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { manager.clusters() .define("oiautorest6685") - .withRegion("australiasoutheast") + .withRegion("eastus") .withExistingResourceGroup("oiautorest6685") .withTags(mapOf("tag1", "val1")) - .withSku(new ClusterSku().withCapacity(Capacity.ONE_ZERO_ZERO_ZERO) - .withName(ClusterSkuNameEnum.CAPACITY_RESERVATION)) + .withSku(new ClusterSku().withCapacity(100L).withName(ClusterSkuNameEnum.CAPACITY_RESERVATION)) .create(); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersDeleteSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersDeleteSamples.java index 7e221b1ec4d4..8fe3dc91ea5d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersDeleteSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersDeleteSamples.java @@ -10,8 +10,8 @@ public final class ClustersDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * ClustersDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/ClustersDelete.json */ /** * Sample code: ClustersDelete. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersGetByResourceGroupSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersGetByResourceGroupSamples.java index b7bb8dade85b..235514d4ac46 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersGetByResourceGroupSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersGetByResourceGroupSamples.java @@ -10,8 +10,8 @@ public final class ClustersGetByResourceGroupSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * ClustersGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/ClustersGet.json */ /** * Sample code: ClustersGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersListByResourceGroupSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersListByResourceGroupSamples.java index 90e2eb2da761..159a51548e82 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersListByResourceGroupSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersListByResourceGroupSamples.java @@ -10,8 +10,8 @@ public final class ClustersListByResourceGroupSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * ClustersListByResourceGroup.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/ClustersListByResourceGroup.json */ /** * Sample code: ClustersGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersListSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersListSamples.java index 4444ec1d187b..42ff400e6863 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersListSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersListSamples.java @@ -10,8 +10,8 @@ public final class ClustersListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * ClustersSubscriptionList.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/ClustersSubscriptionList.json */ /** * Sample code: ClustersSubscriptionList. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersUpdateSamples.java index 49cc21a3ef7b..75b135ad8a7e 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ClustersUpdateSamples.java @@ -4,7 +4,6 @@ package com.azure.resourcemanager.loganalytics.generated; -import com.azure.resourcemanager.loganalytics.models.Capacity; import com.azure.resourcemanager.loganalytics.models.Cluster; import com.azure.resourcemanager.loganalytics.models.ClusterSku; import com.azure.resourcemanager.loganalytics.models.ClusterSkuNameEnum; @@ -21,8 +20,8 @@ public final class ClustersUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * ClustersUpdate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/ClustersUpdate.json */ /** * Sample code: ClustersPatch. @@ -39,8 +38,7 @@ public static void clustersPatch(com.azure.resourcemanager.loganalytics.LogAnaly .withUserAssignedIdentities(mapOf( "/subscriptions/53bc36c5-91e1-4d09-92c9-63b89e571926/resourcegroups/oiautorest6685/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myidentity", new UserAssignedIdentity()))) - .withSku(new ClusterSku().withCapacity(Capacity.ONE_ZERO_ZERO_ZERO) - .withName(ClusterSkuNameEnum.CAPACITY_RESERVATION)) + .withSku(new ClusterSku().withCapacity(1000L).withName(ClusterSkuNameEnum.CAPACITY_RESERVATION)) .withKeyVaultProperties(new KeyVaultProperties().withKeyVaultUri("fakeTokenPlaceholder") .withKeyName("fakeTokenPlaceholder") .withKeyVersion("fakeTokenPlaceholder") diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsCreateOrUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsCreateOrUpdateSamples.java index f7c685d67ebd..1f0b3ff72ea1 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsCreateOrUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsCreateOrUpdateSamples.java @@ -12,8 +12,8 @@ public final class DataExportsCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataExportCreateOrUpdate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataExportCreateOrUpdate.json */ /** * Sample code: DataExportCreate. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsDeleteSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsDeleteSamples.java index 5abe36f0e084..eae061c19485 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsDeleteSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsDeleteSamples.java @@ -10,8 +10,8 @@ public final class DataExportsDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataExportDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataExportDelete.json */ /** * Sample code: DataExportDelete. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsGetSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsGetSamples.java index 5a2a5d2d9db2..c371b5126462 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsGetSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsGetSamples.java @@ -10,8 +10,8 @@ public final class DataExportsGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataExportGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataExportGet.json */ /** * Sample code: DataExportGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsListByWorkspaceSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsListByWorkspaceSamples.java index 7ab637466708..a694e9c8e953 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsListByWorkspaceSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataExportsListByWorkspaceSamples.java @@ -10,8 +10,8 @@ public final class DataExportsListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataExportListByWorkspace.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataExportListByWorkspace.json */ /** * Sample code: DataExportGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesCreateOrUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesCreateOrUpdateSamples.java index 25d3636d4c2d..5aeed8a77a3b 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesCreateOrUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesCreateOrUpdateSamples.java @@ -15,8 +15,8 @@ public final class DataSourcesCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataSourcesCreate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataSourcesCreate.json */ /** * Sample code: DataSourcesCreate. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesDeleteSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesDeleteSamples.java index a57cb035de24..097b75afe896 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesDeleteSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesDeleteSamples.java @@ -10,8 +10,8 @@ public final class DataSourcesDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataSourcesDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataSourcesDelete.json */ /** * Sample code: DataSourcesDelete. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesGetSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesGetSamples.java index ee60fa9ca0f5..7ac3c72825d4 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesGetSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesGetSamples.java @@ -10,8 +10,8 @@ public final class DataSourcesGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataSourcesGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataSourcesGet.json */ /** * Sample code: DataSourcesGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesListByWorkspaceSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesListByWorkspaceSamples.java index 64401d4f00c1..252e6c639b1e 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesListByWorkspaceSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesListByWorkspaceSamples.java @@ -10,8 +10,8 @@ public final class DataSourcesListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * DataSourcesListByWorkspace.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/DataSourcesListByWorkspace.json */ /** * Sample code: DataSourcesListByWorkspace. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListByResourceGroupSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListByResourceGroupSamples.java index f6a8ed6871cf..621b15cca97c 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListByResourceGroupSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListByResourceGroupSamples.java @@ -10,8 +10,8 @@ public final class DeletedWorkspacesListByResourceGroupSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesListByResourceGroup.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesListByResourceGroup.json */ /** * Sample code: WorkspacesGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListSamples.java index ad2ba98f0b64..89a8ba8021c7 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListSamples.java @@ -10,8 +10,8 @@ public final class DeletedWorkspacesListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesSubscriptionList.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesSubscriptionList.json */ /** * Sample code: WorkspacesSubscriptionList. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/GatewaysDeleteSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/GatewaysDeleteSamples.java index 28cc492db409..0ab01ac2110c 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/GatewaysDeleteSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/GatewaysDeleteSamples.java @@ -10,8 +10,8 @@ public final class GatewaysDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesGatewaysDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesGatewaysDelete.json */ /** * Sample code: DeleteGateways. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksDisableSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksDisableSamples.java index 9eebdb756452..cc5836d941b7 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksDisableSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksDisableSamples.java @@ -10,8 +10,8 @@ public final class IntelligencePacksDisableSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesDisableIntelligencePack.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesDisableIntelligencePack.json */ /** * Sample code: IntelligencePacksDisable. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksEnableSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksEnableSamples.java index 250a7dba63b5..ad921383e09c 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksEnableSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksEnableSamples.java @@ -10,8 +10,8 @@ public final class IntelligencePacksEnableSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesEnableIntelligencePack.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesEnableIntelligencePack.json */ /** * Sample code: IntelligencePacksEnable. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksListSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksListSamples.java index 9b2a6df40974..a5e77a1a6180 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksListSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksListSamples.java @@ -10,8 +10,8 @@ public final class IntelligencePacksListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesListIntelligencePacks.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesListIntelligencePacks.json */ /** * Sample code: IntelligencePacksList. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesCreateOrUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesCreateOrUpdateSamples.java index 4073959caf7a..7f3f67f2240f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesCreateOrUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesCreateOrUpdateSamples.java @@ -10,8 +10,8 @@ public final class LinkedServicesCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedServicesCreate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedServicesCreate.json */ /** * Sample code: LinkedServicesCreate. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesDeleteSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesDeleteSamples.java index 02d4c9ba5ae8..868474b2ac6f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesDeleteSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesDeleteSamples.java @@ -10,8 +10,8 @@ public final class LinkedServicesDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedServicesDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedServicesDelete.json */ /** * Sample code: LinkedServicesDelete. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesGetSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesGetSamples.java index f8d21b5a25d1..39852dc3b62f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesGetSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesGetSamples.java @@ -10,8 +10,8 @@ public final class LinkedServicesGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedServicesGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedServicesGet.json */ /** * Sample code: LinkedServicesGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesListByWorkspaceSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesListByWorkspaceSamples.java index 468ce3a9a4ef..be21065fff0c 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesListByWorkspaceSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesListByWorkspaceSamples.java @@ -10,8 +10,8 @@ public final class LinkedServicesListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedServicesListByWorkspace.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedServicesListByWorkspace.json */ /** * Sample code: LinkedServicesListByWorkspace. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsCreateOrUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsCreateOrUpdateSamples.java index 5ec9c7aa0f5f..3cb1a6f23dfb 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsCreateOrUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsCreateOrUpdateSamples.java @@ -13,8 +13,8 @@ public final class LinkedStorageAccountsCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedStorageAccountsCreate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedStorageAccountsCreate.json */ /** * Sample code: LinkedStorageAccountsCreate. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsDeleteSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsDeleteSamples.java index 1ce389516f57..c09d2da814b2 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsDeleteSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsDeleteSamples.java @@ -12,8 +12,8 @@ public final class LinkedStorageAccountsDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedStorageAccountsDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedStorageAccountsDelete.json */ /** * Sample code: LinkedStorageAccountsDelete. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsGetSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsGetSamples.java index 9a0d884e4eaf..8daaa01f4b01 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsGetSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsGetSamples.java @@ -12,8 +12,8 @@ public final class LinkedStorageAccountsGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedStorageAccountsGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedStorageAccountsGet.json */ /** * Sample code: LinkedStorageAccountsGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsListByWorkspaceSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsListByWorkspaceSamples.java index e1ae26a204db..fe8d0ae5dedd 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsListByWorkspaceSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsListByWorkspaceSamples.java @@ -10,8 +10,8 @@ public final class LinkedStorageAccountsListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * LinkedStorageAccountsListByWorkspace.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/LinkedStorageAccountsListByWorkspace.json */ /** * Sample code: Gets list of linked storage accounts on a workspace. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupsListSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupsListSamples.java index 0cdabc9ffbb7..a5cae6936dfc 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupsListSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupsListSamples.java @@ -10,8 +10,8 @@ public final class ManagementGroupsListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesListManagementGroups.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesListManagementGroups.json */ /** * Sample code: WorkspacesListManagementGroups. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/OperationStatusesGetSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/OperationStatusesGetSamples.java index 853be869b15e..51a13f359a24 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/OperationStatusesGetSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/OperationStatusesGetSamples.java @@ -10,8 +10,8 @@ public final class OperationStatusesGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * OperationStatusesGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/OperationStatusesGet.json */ /** * Sample code: Get specific operation status. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/OperationsListSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/OperationsListSamples.java index 374a6f18606b..5319828b6c8e 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/OperationsListSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/OperationsListSamples.java @@ -10,8 +10,8 @@ public final class OperationsListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * OperationsListByTenant.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/OperationsListByTenant.json */ /** * Sample code: Get specific operation status. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesDeleteSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesDeleteSamples.java index 387ca164856b..6a94f9eea7f9 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesDeleteSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesDeleteSamples.java @@ -10,8 +10,8 @@ public final class QueriesDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPackQueriesDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPackQueriesDelete.json */ /** * Sample code: QueryDelete. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesGetSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesGetSamples.java index 064096ffaa8b..e9a55236fc7d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesGetSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesGetSamples.java @@ -10,8 +10,8 @@ public final class QueriesGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPackQueriesGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPackQueriesGet.json */ /** * Sample code: QueryGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesListSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesListSamples.java index aa03bcd8a840..eb84f1e717ff 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesListSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesListSamples.java @@ -10,8 +10,8 @@ public final class QueriesListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPackQueriesList.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPackQueriesList.json */ /** * Sample code: QueryList. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesPutSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesPutSamples.java index 0ad9950cf1db..29d0da6c96b1 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesPutSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesPutSamples.java @@ -15,8 +15,8 @@ public final class QueriesPutSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPackQueriesPut.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPackQueriesPut.json */ /** * Sample code: QueryPut. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesSearchSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesSearchSamples.java index 95c9a54af48e..90defb533d09 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesSearchSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesSearchSamples.java @@ -16,8 +16,8 @@ public final class QueriesSearchSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPackQueriesSearch.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPackQueriesSearch.json */ /** * Sample code: QuerySearch. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesUpdateSamples.java index aa5b79266f20..642be814b4cd 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueriesUpdateSamples.java @@ -16,8 +16,8 @@ public final class QueriesUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPackQueriesUpdate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPackQueriesUpdate.json */ /** * Sample code: QueryPatch. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateSamples.java index c12df416effa..45c21ff9f308 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateSamples.java @@ -13,8 +13,8 @@ public final class QueryPacksCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksCreate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksCreate.json */ /** * Sample code: QueryPackCreate. @@ -31,8 +31,8 @@ public static void queryPackCreate(com.azure.resourcemanager.loganalytics.LogAna /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksUpdate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksUpdate.json */ /** * Sample code: QueryPackUpdate. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateWithoutNameSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateWithoutNameSamples.java index ea6b29b2488a..95d70e02bfc1 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateWithoutNameSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateWithoutNameSamples.java @@ -14,8 +14,8 @@ public final class QueryPacksCreateOrUpdateWithoutNameSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksCreateNoName.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksCreateNoName.json */ /** * Sample code: QueryPackCreateNoName. @@ -30,8 +30,8 @@ public static void queryPackCreateNoName(com.azure.resourcemanager.loganalytics. /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPackUpdateNoName.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPackUpdateNoName.json */ /** * Sample code: QueryPackUpdateNoName. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksDeleteSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksDeleteSamples.java index 71a8666537c5..1decd4ade04c 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksDeleteSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksDeleteSamples.java @@ -10,8 +10,8 @@ public final class QueryPacksDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksDelete.json */ /** * Sample code: QueryPacksDelete. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksGetByResourceGroupSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksGetByResourceGroupSamples.java index bb2f520554f9..4b604de0c92c 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksGetByResourceGroupSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksGetByResourceGroupSamples.java @@ -10,8 +10,8 @@ public final class QueryPacksGetByResourceGroupSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksGet.json */ /** * Sample code: QueryPackGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListByResourceGroupSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListByResourceGroupSamples.java index d6a9196b8adf..4c31805b962e 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListByResourceGroupSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListByResourceGroupSamples.java @@ -10,8 +10,8 @@ public final class QueryPacksListByResourceGroupSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksListByResourceGroup.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksListByResourceGroup.json */ /** * Sample code: QueryPackListByResourceGroup. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListSamples.java index cfbfa4347068..5355f9299ebd 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListSamples.java @@ -10,8 +10,8 @@ public final class QueryPacksListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksList.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksList.json */ /** * Sample code: QueryPacksList. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksUpdateTagsSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksUpdateTagsSamples.java index 5dd53593eed6..88b05a54b46e 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksUpdateTagsSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksUpdateTagsSamples.java @@ -14,8 +14,8 @@ public final class QueryPacksUpdateTagsSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2019-09-01/examples/ - * QueryPacksUpdateTagsOnly.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/QueryPacksUpdateTagsOnly.json */ /** * Sample code: QueryPackUpdateTagsOnly. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesCreateOrUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesCreateOrUpdateSamples.java index d1eb2e1ebce7..7c2e0682ff07 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesCreateOrUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesCreateOrUpdateSamples.java @@ -13,8 +13,8 @@ public final class SavedSearchesCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesSavedSearchesCreateOrUpdate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesSavedSearchesCreateOrUpdate.json */ /** * Sample code: SavedSearchCreateOrUpdate. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesDeleteSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesDeleteSamples.java index cb0a0e4c8fd1..1d3b072e2c4e 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesDeleteSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesDeleteSamples.java @@ -10,8 +10,8 @@ public final class SavedSearchesDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesDeleteSavedSearches.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesDeleteSavedSearches.json */ /** * Sample code: SavedSearchesDelete. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesGetSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesGetSamples.java index dda1d9c87f7c..e07b43e10354 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesGetSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesGetSamples.java @@ -10,8 +10,8 @@ public final class SavedSearchesGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesSavedSearchesGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesSavedSearchesGet.json */ /** * Sample code: SavedSearchesGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesListByWorkspaceSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesListByWorkspaceSamples.java index 7bf9bc3c73fb..2931575b93b6 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesListByWorkspaceSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesListByWorkspaceSamples.java @@ -10,8 +10,8 @@ public final class SavedSearchesListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * SavedSearchesListByWorkspace.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SavedSearchesListByWorkspace.json */ /** * Sample code: SavedSearchesList. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SchemaGetSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SchemaGetSamples.java index 33fa55b4dd20..3fdd88e572db 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SchemaGetSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SchemaGetSamples.java @@ -10,8 +10,8 @@ public final class SchemaGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * SavedSearchesGetSchema.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SavedSearchesGetSchema.json */ /** * Sample code: WorkspacesGetSchema. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SharedKeysOperationGetSharedKeysSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SharedKeysOperationGetSharedKeysSamples.java index 68efb62c6ca4..abe0dae55397 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SharedKeysOperationGetSharedKeysSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SharedKeysOperationGetSharedKeysSamples.java @@ -10,8 +10,8 @@ public final class SharedKeysOperationGetSharedKeysSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesGetSharedKeys.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesGetSharedKeys.json */ /** * Sample code: SharedKeysList. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SharedKeysOperationRegenerateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SharedKeysOperationRegenerateSamples.java index 1739d55e2a41..80804317660d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SharedKeysOperationRegenerateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SharedKeysOperationRegenerateSamples.java @@ -10,8 +10,8 @@ public final class SharedKeysOperationRegenerateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesRegenerateSharedKeys.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesRegenerateSharedKeys.json */ /** * Sample code: RegenerateSharedKeys. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsCreateOrUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsCreateOrUpdateSamples.java index a36413877d66..91fd24cca068 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsCreateOrUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsCreateOrUpdateSamples.java @@ -13,8 +13,8 @@ public final class StorageInsightConfigsCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * StorageInsightsCreateOrUpdate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/StorageInsightsCreateOrUpdate.json */ /** * Sample code: StorageInsightsCreate. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsDeleteSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsDeleteSamples.java index fd6a760cda89..7a5f529dcfc3 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsDeleteSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsDeleteSamples.java @@ -10,8 +10,8 @@ public final class StorageInsightConfigsDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * StorageInsightsDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/StorageInsightsDelete.json */ /** * Sample code: StorageInsightsDelete. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsGetSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsGetSamples.java index 0f9fcc8b7936..58ba9630b883 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsGetSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsGetSamples.java @@ -10,8 +10,8 @@ public final class StorageInsightConfigsGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * StorageInsightsGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/StorageInsightsGet.json */ /** * Sample code: StorageInsightsGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsListByWorkspaceSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsListByWorkspaceSamples.java index b7b8e6125f33..ac06f1708f10 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsListByWorkspaceSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsListByWorkspaceSamples.java @@ -10,8 +10,8 @@ public final class StorageInsightConfigsListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * StorageInsightsListByWorkspace.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/StorageInsightsListByWorkspace.json */ /** * Sample code: StorageInsightsList. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationCreateOrUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationCreateOrUpdateSamples.java new file mode 100644 index 000000000000..b902ab163ad7 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationCreateOrUpdateSamples.java @@ -0,0 +1,36 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.resourcemanager.loganalytics.models.RuleDefinition; +import com.azure.resourcemanager.loganalytics.models.RuleTypeEnum; +import java.time.OffsetDateTime; + +/** + * Samples for SummaryLogsOperation CreateOrUpdate. + */ +public final class SummaryLogsOperationCreateOrUpdateSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SummaryLogsUpsert.json + */ + /** + * Sample code: SummaryLogsUpsert. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void summaryLogsUpsert(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.summaryLogsOperations() + .define("summarylogs1") + .withExistingWorkspace("oiautorest6685", "oiautorest6685") + .withRuleType(RuleTypeEnum.USER) + .withRuleDefinition(new RuleDefinition().withQuery("MyTable_CL") + .withBinSize(180) + .withBinDelay(10) + .withBinStartTime(OffsetDateTime.parse("2020-02-03T04:05:06Z"))) + .create(); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationDeleteSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationDeleteSamples.java new file mode 100644 index 000000000000..b6408d8f24ad --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationDeleteSamples.java @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +/** + * Samples for SummaryLogsOperation Delete. + */ +public final class SummaryLogsOperationDeleteSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SummaryLogsDelete.json + */ + /** + * Sample code: SummaryLogsDelete. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void summaryLogsDelete(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.summaryLogsOperations() + .delete("oiautorest6685", "oiautorest6685", "summarylogs1", com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationGetSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationGetSamples.java new file mode 100644 index 000000000000..0d582cfee879 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationGetSamples.java @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +/** + * Samples for SummaryLogsOperation Get. + */ +public final class SummaryLogsOperationGetSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SummaryLogsGet.json + */ + /** + * Sample code: SummaryLogsGet. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void summaryLogsGet(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.summaryLogsOperations() + .getWithResponse("oiautorest6685", "oiautorest6685", "summarylogs1", com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationListByWorkspaceSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationListByWorkspaceSamples.java new file mode 100644 index 000000000000..8d9b0affc88c --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationListByWorkspaceSamples.java @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +/** + * Samples for SummaryLogsOperation ListByWorkspace. + */ +public final class SummaryLogsOperationListByWorkspaceSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SummaryLogsList.json + */ + /** + * Sample code: SummaryLogsListByWorkspace. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void summaryLogsListByWorkspace(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.summaryLogsOperations() + .listByWorkspace("oiautorest6685", "oiautorest6685", com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationRetryBinSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationRetryBinSamples.java new file mode 100644 index 000000000000..d85ecb3f400b --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationRetryBinSamples.java @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.resourcemanager.loganalytics.models.SummaryLogsRetryBin; +import com.azure.resourcemanager.loganalytics.models.SummaryLogsRetryBinProperties; +import java.time.OffsetDateTime; + +/** + * Samples for SummaryLogsOperation RetryBin. + */ +public final class SummaryLogsOperationRetryBinSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SummaryLogsRetryBin.json + */ + /** + * Sample code: SummaryLogsRetryBin. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void summaryLogsRetryBin(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.summaryLogsOperations() + .retryBin("oiautorest6685", "oiautorest6685", "summarylogs1", + new SummaryLogsRetryBin().withProperties(new SummaryLogsRetryBinProperties() + .withRetryBinStartTime(OffsetDateTime.parse("2020-02-03T04:00:00Z"))), + com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationStartSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationStartSamples.java new file mode 100644 index 000000000000..eda03e18fabc --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationStartSamples.java @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +/** + * Samples for SummaryLogsOperation Start. + */ +public final class SummaryLogsOperationStartSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SummaryLogsStart.json + */ + /** + * Sample code: SummaryLogsStart. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void summaryLogsStart(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.summaryLogsOperations() + .start("exampleresourcegroup", "exampleworkspace", "summarylogs3", com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationStopSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationStopSamples.java new file mode 100644 index 000000000000..17f38ebd3033 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationStopSamples.java @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +/** + * Samples for SummaryLogsOperation Stop. + */ +public final class SummaryLogsOperationStopSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/SummaryLogsStop.json + */ + /** + * Sample code: SummaryLogsStop. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void summaryLogsStop(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.summaryLogsOperations() + .stopWithResponse("oiautorest6685", "oiautorest6685", "summarylogs1", com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesCancelSearchSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesCancelSearchSamples.java index 6afa7f1b9cfe..30c81cbb67d6 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesCancelSearchSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesCancelSearchSamples.java @@ -10,8 +10,8 @@ public final class TablesCancelSearchSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * TablesSearchCancel.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/TablesSearchCancel.json */ /** * Sample code: TablesSearchCancel. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesCreateOrUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesCreateOrUpdateSamples.java index 9a6bd6faddec..d7c87acef97f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesCreateOrUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesCreateOrUpdateSamples.java @@ -15,8 +15,8 @@ public final class TablesCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * TablesUpsert.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/TablesUpsert.json */ /** * Sample code: TablesUpsert. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesDeleteSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesDeleteSamples.java index b7172bcbfb3e..60b8aa3ff60c 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesDeleteSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesDeleteSamples.java @@ -10,8 +10,8 @@ public final class TablesDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * TablesDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/TablesDelete.json */ /** * Sample code: TablesDelete. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesGetSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesGetSamples.java index 05d356b11506..2d33860a4c20 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesGetSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesGetSamples.java @@ -10,8 +10,8 @@ public final class TablesGetSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * TablesGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/TablesGet.json */ /** * Sample code: TablesGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesListByWorkspaceSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesListByWorkspaceSamples.java index 15fea02884c7..071274de8c87 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesListByWorkspaceSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesListByWorkspaceSamples.java @@ -10,8 +10,8 @@ public final class TablesListByWorkspaceSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * TablesList.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/TablesList.json */ /** * Sample code: TablesListByWorkspace. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesMigrateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesMigrateSamples.java index 8e0515e6611a..fb24107ad910 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesMigrateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesMigrateSamples.java @@ -10,8 +10,8 @@ public final class TablesMigrateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * TablesMigrate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/TablesMigrate.json */ /** * Sample code: TablesMigrate. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesUpdateSamples.java index ecb767fb0cee..55b3e1add3ab 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/TablesUpdateSamples.java @@ -16,8 +16,8 @@ public final class TablesUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * TablesUpsert.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/TablesUpsert.json */ /** * Sample code: TablesUpsert. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/UsagesListSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/UsagesListSamples.java index 1d4068a6ee85..5ab1c8899e83 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/UsagesListSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/UsagesListSamples.java @@ -10,8 +10,8 @@ public final class UsagesListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesListUsages.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesListUsages.json */ /** * Sample code: UsagesList. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgeGetPurgeStatusSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgeGetPurgeStatusSamples.java index 69ff88bf84d6..28923a3085aa 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgeGetPurgeStatusSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgeGetPurgeStatusSamples.java @@ -10,8 +10,8 @@ public final class WorkspacePurgeGetPurgeStatusSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesPurgeOperation.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesPurgeOperation.json */ /** * Sample code: WorkspacePurgeOperation. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgePurgeSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgePurgeSamples.java index 1dd676c20ecb..9e7fa0a8e4d3 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgePurgeSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgePurgeSamples.java @@ -14,8 +14,8 @@ public final class WorkspacePurgePurgeSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesPurgeResourceId.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesPurgeResourceId.json */ /** * Sample code: WorkspacePurgeResourceId. @@ -34,8 +34,8 @@ public static void workspacePurgeResourceId(com.azure.resourcemanager.loganalyti /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2020-08-01/examples/ - * WorkspacesPurge.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesPurge.json */ /** * Sample code: WorkspacePurge. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesCreateOrUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesCreateOrUpdateSamples.java index abce117e89b4..d70ce13ef48d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesCreateOrUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesCreateOrUpdateSamples.java @@ -15,8 +15,8 @@ public final class WorkspacesCreateOrUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesCreate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesCreate.json */ /** * Sample code: WorkspacesCreate. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesDeleteSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesDeleteSamples.java index dac400c21743..03b2a34a2113 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesDeleteSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesDeleteSamples.java @@ -10,8 +10,8 @@ public final class WorkspacesDeleteSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesDelete.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesDelete.json */ /** * Sample code: WorkspacesDelete. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesFailbackSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesFailbackSamples.java new file mode 100644 index 000000000000..63a6e1af3357 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesFailbackSamples.java @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +/** + * Samples for Workspaces Failback. + */ +public final class WorkspacesFailbackSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesFailback.json + */ + /** + * Sample code: WorkspacesFailover. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void workspacesFailover(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.workspaces().failback("oiautorest6685", "oiautorest6685", com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesFailoverSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesFailoverSamples.java new file mode 100644 index 000000000000..364b08df0dea --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesFailoverSamples.java @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +/** + * Samples for Workspaces Failover. + */ +public final class WorkspacesFailoverSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesFailover.json + */ + /** + * Sample code: WorkspacesFailover. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void workspacesFailover(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.workspaces().failover("oiautorest6685", "eastus", "oiautorest6685", com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetByResourceGroupSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetByResourceGroupSamples.java index 845b2fba7be5..5cd903c4e779 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetByResourceGroupSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetByResourceGroupSamples.java @@ -10,8 +10,8 @@ public final class WorkspacesGetByResourceGroupSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesGet.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesGet.json */ /** * Sample code: WorkspaceGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetNspSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetNspSamples.java new file mode 100644 index 000000000000..3fc7ad9c9b00 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetNspSamples.java @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +/** + * Samples for Workspaces GetNsp. + */ +public final class WorkspacesGetNspSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/NSPForWorkspaces_Get.json + */ + /** + * Sample code: Get NSP config by name for Scheduled Query Rule. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void + getNSPConfigByNameForScheduledQueryRule(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.workspaces() + .getNspWithResponse("exampleRG", "someWorkspace", "somePerimeterConfiguration", + com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListByResourceGroupSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListByResourceGroupSamples.java index 165d1c4d6af1..d16ea5977e33 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListByResourceGroupSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListByResourceGroupSamples.java @@ -10,8 +10,8 @@ public final class WorkspacesListByResourceGroupSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesListByResourceGroup.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesListByResourceGroup.json */ /** * Sample code: WorkspacesGet. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListNspSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListNspSamples.java new file mode 100644 index 000000000000..296676ebf5d6 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListNspSamples.java @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +/** + * Samples for Workspaces ListNsp. + */ +public final class WorkspacesListNspSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/NSPForWorkspaces_List.json + */ + /** + * Sample code: List NSP configs by Scheduled Query Rule. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void + listNSPConfigsByScheduledQueryRule(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.workspaces().listNsp("exampleRG", "someWorkspace", com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListSamples.java index 535445f0da1b..ebbbd4be541e 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListSamples.java @@ -10,8 +10,8 @@ public final class WorkspacesListSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesSubscriptionList.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesSubscriptionList.json */ /** * Sample code: WorkspacesSubscriptionList. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesReconcileNspSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesReconcileNspSamples.java new file mode 100644 index 000000000000..066789b7ff8f --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesReconcileNspSamples.java @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +/** + * Samples for Workspaces ReconcileNsp. + */ +public final class WorkspacesReconcileNspSamples { + /* + * x-ms-original-file: + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/NSPForWorkspaces_Reconcile.json + */ + /** + * Sample code: Reconcile NSP config for Scheduled Query Rule. + * + * @param manager Entry point to LogAnalyticsManager. + */ + public static void + reconcileNSPConfigForScheduledQueryRule(com.azure.resourcemanager.loganalytics.LogAnalyticsManager manager) { + manager.workspaces() + .reconcileNsp("exampleRG", "someWorkspace", "somePerimeterConfiguration", com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesUpdateSamples.java index 9d1fef46d1c6..c41aee9f55da 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesUpdateSamples.java @@ -15,8 +15,8 @@ public final class WorkspacesUpdateSamples { /* * x-ms-original-file: - * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/stable/2022-10-01/examples/ - * WorkspacesUpdate.json + * specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/stable/2025- + * 07-01/examples/WorkspacesUpdate.json */ /** * Sample code: WorkspacesPatch. diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRulePropertiesSubscriptionsItemTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRulePropertiesSubscriptionsItemTests.java new file mode 100644 index 000000000000..af4fbaa556d3 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRulePropertiesSubscriptionsItemTests.java @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.AccessRulePropertiesSubscriptionsItem; +import org.junit.jupiter.api.Assertions; + +public final class AccessRulePropertiesSubscriptionsItemTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + AccessRulePropertiesSubscriptionsItem model = BinaryData.fromString("{\"id\":\"mzdlyjdfqwmkyo\"}") + .toObject(AccessRulePropertiesSubscriptionsItem.class); + Assertions.assertEquals("mzdlyjdfqwmkyo", model.id()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + AccessRulePropertiesSubscriptionsItem model + = new AccessRulePropertiesSubscriptionsItem().withId("mzdlyjdfqwmkyo"); + model = BinaryData.fromObject(model).toObject(AccessRulePropertiesSubscriptionsItem.class); + Assertions.assertEquals("mzdlyjdfqwmkyo", model.id()); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRulePropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRulePropertiesTests.java new file mode 100644 index 000000000000..ef4918aed685 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRulePropertiesTests.java @@ -0,0 +1,67 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.AccessRuleDirection; +import com.azure.resourcemanager.loganalytics.models.AccessRuleProperties; +import com.azure.resourcemanager.loganalytics.models.AccessRulePropertiesSubscriptionsItem; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeter; +import java.util.Arrays; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; + +public final class AccessRulePropertiesTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + AccessRuleProperties model = BinaryData.fromString( + "{\"direction\":\"Outbound\",\"addressPrefixes\":[\"ywuhpsvfuur\",\"tlwexxwlalniexz\",\"rzpgep\"],\"subscriptions\":[{\"id\":\"bwwpgdakchzy\"}],\"networkSecurityPerimeters\":[{\"id\":\"q\",\"perimeterGuid\":\"93bc26fc-f9fb-4e69-9852-158903792b58\",\"location\":\"cxkjibnxmysuxswq\"},{\"id\":\"tvlwijpsttexoq\",\"perimeterGuid\":\"4eded75f-0555-44c1-944a-0d0074ddf66e\",\"location\":\"cyyufmh\"},{\"id\":\"nc\",\"perimeterGuid\":\"344e5ead-a6e5-4329-9351-1a3ed62f4f98\",\"location\":\"qspkcdqzhlctd\"},{\"id\":\"nqndyfpchrqbn\",\"perimeterGuid\":\"de737e0c-b524-425d-b66b-095fab635f9c\",\"location\":\"cgegydcwbo\"}],\"fullyQualifiedDomainNames\":[\"mvqqolih\"],\"emailAddresses\":[\"iouaubrjt\",\"oq\",\"fuojrngif\"],\"phoneNumbers\":[\"pasccbi\"]}") + .toObject(AccessRuleProperties.class); + Assertions.assertEquals(AccessRuleDirection.OUTBOUND, model.direction()); + Assertions.assertEquals("ywuhpsvfuur", model.addressPrefixes().get(0)); + Assertions.assertEquals("bwwpgdakchzy", model.subscriptions().get(0).id()); + Assertions.assertEquals("q", model.networkSecurityPerimeters().get(0).id()); + Assertions.assertEquals(UUID.fromString("93bc26fc-f9fb-4e69-9852-158903792b58"), + model.networkSecurityPerimeters().get(0).perimeterGuid()); + Assertions.assertEquals("cxkjibnxmysuxswq", model.networkSecurityPerimeters().get(0).location()); + Assertions.assertEquals("mvqqolih", model.fullyQualifiedDomainNames().get(0)); + Assertions.assertEquals("iouaubrjt", model.emailAddresses().get(0)); + Assertions.assertEquals("pasccbi", model.phoneNumbers().get(0)); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + AccessRuleProperties model = new AccessRuleProperties().withDirection(AccessRuleDirection.OUTBOUND) + .withAddressPrefixes(Arrays.asList("ywuhpsvfuur", "tlwexxwlalniexz", "rzpgep")) + .withSubscriptions(Arrays.asList(new AccessRulePropertiesSubscriptionsItem().withId("bwwpgdakchzy"))) + .withNetworkSecurityPerimeters(Arrays.asList( + new NetworkSecurityPerimeter().withId("q") + .withPerimeterGuid(UUID.fromString("93bc26fc-f9fb-4e69-9852-158903792b58")) + .withLocation("cxkjibnxmysuxswq"), + new NetworkSecurityPerimeter().withId("tvlwijpsttexoq") + .withPerimeterGuid(UUID.fromString("4eded75f-0555-44c1-944a-0d0074ddf66e")) + .withLocation("cyyufmh"), + new NetworkSecurityPerimeter().withId("nc") + .withPerimeterGuid(UUID.fromString("344e5ead-a6e5-4329-9351-1a3ed62f4f98")) + .withLocation("qspkcdqzhlctd"), + new NetworkSecurityPerimeter().withId("nqndyfpchrqbn") + .withPerimeterGuid(UUID.fromString("de737e0c-b524-425d-b66b-095fab635f9c")) + .withLocation("cgegydcwbo"))) + .withFullyQualifiedDomainNames(Arrays.asList("mvqqolih")) + .withEmailAddresses(Arrays.asList("iouaubrjt", "oq", "fuojrngif")) + .withPhoneNumbers(Arrays.asList("pasccbi")); + model = BinaryData.fromObject(model).toObject(AccessRuleProperties.class); + Assertions.assertEquals(AccessRuleDirection.OUTBOUND, model.direction()); + Assertions.assertEquals("ywuhpsvfuur", model.addressPrefixes().get(0)); + Assertions.assertEquals("bwwpgdakchzy", model.subscriptions().get(0).id()); + Assertions.assertEquals("q", model.networkSecurityPerimeters().get(0).id()); + Assertions.assertEquals(UUID.fromString("93bc26fc-f9fb-4e69-9852-158903792b58"), + model.networkSecurityPerimeters().get(0).perimeterGuid()); + Assertions.assertEquals("cxkjibnxmysuxswq", model.networkSecurityPerimeters().get(0).location()); + Assertions.assertEquals("mvqqolih", model.fullyQualifiedDomainNames().get(0)); + Assertions.assertEquals("iouaubrjt", model.emailAddresses().get(0)); + Assertions.assertEquals("pasccbi", model.phoneNumbers().get(0)); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRuleTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRuleTests.java new file mode 100644 index 000000000000..3bf48de73d63 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRuleTests.java @@ -0,0 +1,71 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.AccessRule; +import com.azure.resourcemanager.loganalytics.models.AccessRuleDirection; +import com.azure.resourcemanager.loganalytics.models.AccessRuleProperties; +import com.azure.resourcemanager.loganalytics.models.AccessRulePropertiesSubscriptionsItem; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeter; +import java.util.Arrays; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; + +public final class AccessRuleTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + AccessRule model = BinaryData.fromString( + "{\"name\":\"yrxpdlcgqls\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"rddga\",\"quhiosrsjuivf\",\"disyirnxz\",\"czexrxzbujrtrhqv\"],\"subscriptions\":[{\"id\":\"khgn\"}],\"networkSecurityPerimeters\":[{\"id\":\"nzlrpiqywncvjt\",\"perimeterGuid\":\"da835f74-0b91-40ea-b2cb-eb01d99bf24d\",\"location\":\"ofizehtdhgbj\"},{\"id\":\"reljeamur\",\"perimeterGuid\":\"214214b7-277e-49e9-9256-f50f7ae9cacc\",\"location\":\"lovuana\"},{\"id\":\"cxlpmjerb\",\"perimeterGuid\":\"3dbe07f2-7712-4b46-8c7a-50c7f90f2469\",\"location\":\"lvidizozs\"},{\"id\":\"ccxjm\",\"perimeterGuid\":\"86b2dc0b-6721-48cf-9996-5475b5828c29\",\"location\":\"dgnwncypuuwwlt\"}],\"fullyQualifiedDomainNames\":[\"jctzenkei\",\"zzhmkd\",\"svflyhbxcudch\"],\"emailAddresses\":[\"rb\",\"ldforobwj\",\"vizbfhfo\"],\"phoneNumbers\":[\"cqpbtuo\",\"xesz\",\"bbelawumuaslzk\",\"rrwoycqucwyhahn\"]}}") + .toObject(AccessRule.class); + Assertions.assertEquals("yrxpdlcgqls", model.name()); + Assertions.assertEquals(AccessRuleDirection.OUTBOUND, model.properties().direction()); + Assertions.assertEquals("rddga", model.properties().addressPrefixes().get(0)); + Assertions.assertEquals("khgn", model.properties().subscriptions().get(0).id()); + Assertions.assertEquals("nzlrpiqywncvjt", model.properties().networkSecurityPerimeters().get(0).id()); + Assertions.assertEquals(UUID.fromString("da835f74-0b91-40ea-b2cb-eb01d99bf24d"), + model.properties().networkSecurityPerimeters().get(0).perimeterGuid()); + Assertions.assertEquals("ofizehtdhgbj", model.properties().networkSecurityPerimeters().get(0).location()); + Assertions.assertEquals("jctzenkei", model.properties().fullyQualifiedDomainNames().get(0)); + Assertions.assertEquals("rb", model.properties().emailAddresses().get(0)); + Assertions.assertEquals("cqpbtuo", model.properties().phoneNumbers().get(0)); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + AccessRule model = new AccessRule().withName("yrxpdlcgqls") + .withProperties(new AccessRuleProperties().withDirection(AccessRuleDirection.OUTBOUND) + .withAddressPrefixes(Arrays.asList("rddga", "quhiosrsjuivf", "disyirnxz", "czexrxzbujrtrhqv")) + .withSubscriptions(Arrays.asList(new AccessRulePropertiesSubscriptionsItem().withId("khgn"))) + .withNetworkSecurityPerimeters(Arrays.asList( + new NetworkSecurityPerimeter().withId("nzlrpiqywncvjt") + .withPerimeterGuid(UUID.fromString("da835f74-0b91-40ea-b2cb-eb01d99bf24d")) + .withLocation("ofizehtdhgbj"), + new NetworkSecurityPerimeter().withId("reljeamur") + .withPerimeterGuid(UUID.fromString("214214b7-277e-49e9-9256-f50f7ae9cacc")) + .withLocation("lovuana"), + new NetworkSecurityPerimeter().withId("cxlpmjerb") + .withPerimeterGuid(UUID.fromString("3dbe07f2-7712-4b46-8c7a-50c7f90f2469")) + .withLocation("lvidizozs"), + new NetworkSecurityPerimeter().withId("ccxjm") + .withPerimeterGuid(UUID.fromString("86b2dc0b-6721-48cf-9996-5475b5828c29")) + .withLocation("dgnwncypuuwwlt"))) + .withFullyQualifiedDomainNames(Arrays.asList("jctzenkei", "zzhmkd", "svflyhbxcudch")) + .withEmailAddresses(Arrays.asList("rb", "ldforobwj", "vizbfhfo")) + .withPhoneNumbers(Arrays.asList("cqpbtuo", "xesz", "bbelawumuaslzk", "rrwoycqucwyhahn"))); + model = BinaryData.fromObject(model).toObject(AccessRule.class); + Assertions.assertEquals("yrxpdlcgqls", model.name()); + Assertions.assertEquals(AccessRuleDirection.OUTBOUND, model.properties().direction()); + Assertions.assertEquals("rddga", model.properties().addressPrefixes().get(0)); + Assertions.assertEquals("khgn", model.properties().subscriptions().get(0).id()); + Assertions.assertEquals("nzlrpiqywncvjt", model.properties().networkSecurityPerimeters().get(0).id()); + Assertions.assertEquals(UUID.fromString("da835f74-0b91-40ea-b2cb-eb01d99bf24d"), + model.properties().networkSecurityPerimeters().get(0).perimeterGuid()); + Assertions.assertEquals("ofizehtdhgbj", model.properties().networkSecurityPerimeters().get(0).location()); + Assertions.assertEquals("jctzenkei", model.properties().fullyQualifiedDomainNames().get(0)); + Assertions.assertEquals("rb", model.properties().emailAddresses().get(0)); + Assertions.assertEquals("cqpbtuo", model.properties().phoneNumbers().get(0)); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AssociatedWorkspaceTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AssociatedWorkspaceTests.java index 2a0ff4de6028..76f9fa64d04b 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AssociatedWorkspaceTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AssociatedWorkspaceTests.java @@ -11,7 +11,7 @@ public final class AssociatedWorkspaceTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { AssociatedWorkspace model = BinaryData.fromString( - "{\"workspaceId\":\"pagao\",\"workspaceName\":\"ulpqblylsyxkqjn\",\"resourceId\":\"ervtiagxs\",\"associateDate\":\"zuempsbzkf\"}") + "{\"workspaceId\":\"a86d2e6d-74b6-4e05-a0b9-c41d1cdb673b\",\"workspaceName\":\"cqhsm\",\"resourceId\":\"rkdtmlxh\",\"associateDate\":\"2021-09-14T21:41:32Z\"}") .toObject(AssociatedWorkspace.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AvailableServiceTierInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AvailableServiceTierInnerTests.java index 13f701c200bb..75085a254fff 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AvailableServiceTierInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AvailableServiceTierInnerTests.java @@ -11,7 +11,7 @@ public final class AvailableServiceTierInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { AvailableServiceTierInner model = BinaryData.fromString( - "{\"serviceTier\":\"Premium\",\"enabled\":true,\"minimumRetention\":2447311563304363726,\"maximumRetention\":2614637191948743156,\"defaultRetention\":5459563894986340273,\"capacityReservationLevel\":7110930774958137161,\"lastSkuUpdate\":\"piexpbtgiw\"}") + "{\"serviceTier\":\"Standalone\",\"enabled\":true,\"minimumRetention\":1510156696946077578,\"maximumRetention\":4193584240156362355,\"defaultRetention\":6508308958074251403,\"capacityReservationLevel\":550039120288444364,\"lastSkuUpdate\":\"mtz\"}") .toObject(AvailableServiceTierInner.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AvailableServiceTiersListByWorkspaceWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AvailableServiceTiersListByWorkspaceWithResponseMockTests.java index 11fb44320e42..a99343810768 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AvailableServiceTiersListByWorkspaceWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AvailableServiceTiersListByWorkspaceWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.AvailableServiceTier; @@ -21,17 +21,17 @@ public final class AvailableServiceTiersListByWorkspaceWithResponseMockTests { @Test public void testListByWorkspaceWithResponse() throws Exception { String responseStr - = "[{\"serviceTier\":\"CapacityReservation\",\"enabled\":true,\"minimumRetention\":3767644182859901371,\"maximumRetention\":7248546755237746462,\"defaultRetention\":840422895247134750,\"capacityReservationLevel\":8295020029995054755,\"lastSkuUpdate\":\"ujr\"},{\"serviceTier\":\"PerGB2018\",\"enabled\":false,\"minimumRetention\":120736086062160717,\"maximumRetention\":2641992673329436235,\"defaultRetention\":3461505183507942780,\"capacityReservationLevel\":854242813011904996,\"lastSkuUpdate\":\"ikzoeovvtzejetj\"},{\"serviceTier\":\"Free\",\"enabled\":false,\"minimumRetention\":7781117605646169012,\"maximumRetention\":159668866868514414,\"defaultRetention\":7370744360813533838,\"capacityReservationLevel\":700409671675457936,\"lastSkuUpdate\":\"rzvh\"}]"; + = "[{\"serviceTier\":\"CapacityReservation\",\"enabled\":false,\"minimumRetention\":1432087697888177845,\"maximumRetention\":8313394416637011338,\"defaultRetention\":5559566767637280772,\"capacityReservationLevel\":6950782705334382897,\"lastSkuUpdate\":\"jg\"},{\"serviceTier\":\"Premium\",\"enabled\":true,\"minimumRetention\":5983360915282781316,\"maximumRetention\":4653983891463635460,\"defaultRetention\":3143366093760834812,\"capacityReservationLevel\":4708968390247773451,\"lastSkuUpdate\":\"ltxijjumfqwazln\"},{\"serviceTier\":\"PerGB2018\",\"enabled\":false,\"minimumRetention\":3523690994753868801,\"maximumRetention\":3035438207417975715,\"defaultRetention\":1193446146950584030,\"capacityReservationLevel\":6287732006458517592,\"lastSkuUpdate\":\"yfu\"},{\"serviceTier\":\"Standalone\",\"enabled\":true,\"minimumRetention\":3265340554220962405,\"maximumRetention\":1400392420008149330,\"defaultRetention\":2431415951490180842,\"capacityReservationLevel\":3788300585704298114,\"lastSkuUpdate\":\"hm\"}]"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); List response = manager.availableServiceTiers() - .listByWorkspaceWithResponse("ztlvtmvagbwidqlv", "ukoveofi", com.azure.core.util.Context.NONE) + .listByWorkspaceWithResponse("qtferrqwexjkmf", "apjwogqqnobpudcd", com.azure.core.util.Context.NONE) .getValue(); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AzureEntityResourceTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AzureEntityResourceTests.java index aec477e4178d..5755d7c4687c 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AzureEntityResourceTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AzureEntityResourceTests.java @@ -10,9 +10,9 @@ public final class AzureEntityResourceTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - AzureEntityResource model = BinaryData - .fromString("{\"etag\":\"slbi\",\"id\":\"kojgcyzts\",\"name\":\"mznbaeqphch\",\"type\":\"nrnrp\"}") - .toObject(AzureEntityResource.class); + AzureEntityResource model + = BinaryData.fromString("{\"etag\":\"whcjyxcc\",\"id\":\"bvpa\",\"name\":\"akkud\",\"type\":\"px\"}") + .toObject(AzureEntityResource.class); } @org.junit.jupiter.api.Test diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AzureResourcePropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AzureResourcePropertiesTests.java deleted file mode 100644 index d2daa1af46c4..000000000000 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AzureResourcePropertiesTests.java +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.loganalytics.generated; - -import com.azure.core.util.BinaryData; -import com.azure.resourcemanager.loganalytics.models.AzureResourceProperties; - -public final class AzureResourcePropertiesTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - AzureResourceProperties model - = BinaryData.fromString("{\"id\":\"sxlzevgbmqj\",\"name\":\"bcypmi\",\"type\":\"w\"}") - .toObject(AzureResourceProperties.class); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - AzureResourceProperties model = new AzureResourceProperties(); - model = BinaryData.fromObject(model).toObject(AzureResourceProperties.class); - } -} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/CapacityReservationPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/CapacityReservationPropertiesTests.java index a404402661f5..18652f10597f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/CapacityReservationPropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/CapacityReservationPropertiesTests.java @@ -11,7 +11,7 @@ public final class CapacityReservationPropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { CapacityReservationProperties model - = BinaryData.fromString("{\"lastSkuUpdate\":\"eyvpnqicvinvkj\",\"minCapacity\":2624293456615314766}") + = BinaryData.fromString("{\"lastSkuUpdate\":\"2021-01-05T18:43:06Z\",\"minCapacity\":8378841457136361246}") .toObject(CapacityReservationProperties.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ClusterReplicationPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ClusterReplicationPropertiesTests.java new file mode 100644 index 000000000000..ea1c0aeecb42 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ClusterReplicationPropertiesTests.java @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.ClusterReplicationProperties; +import org.junit.jupiter.api.Assertions; + +public final class ClusterReplicationPropertiesTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + ClusterReplicationProperties model = BinaryData.fromString( + "{\"location\":\"kc\",\"enabled\":false,\"isAvailabilityZonesEnabled\":true,\"provisioningState\":\"Enabling\",\"createdDate\":\"2021-03-12T09:05:14Z\",\"lastModifiedDate\":\"2021-11-03T04:50:08Z\"}") + .toObject(ClusterReplicationProperties.class); + Assertions.assertEquals("kc", model.location()); + Assertions.assertFalse(model.enabled()); + Assertions.assertTrue(model.isAvailabilityZonesEnabled()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + ClusterReplicationProperties model = new ClusterReplicationProperties().withLocation("kc") + .withEnabled(false) + .withIsAvailabilityZonesEnabled(true); + model = BinaryData.fromObject(model).toObject(ClusterReplicationProperties.class); + Assertions.assertEquals("kc", model.location()); + Assertions.assertFalse(model.enabled()); + Assertions.assertTrue(model.isAvailabilityZonesEnabled()); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ClusterSkuTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ClusterSkuTests.java index 9a2be34cbd19..ec54834d00ab 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ClusterSkuTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ClusterSkuTests.java @@ -5,7 +5,6 @@ package com.azure.resourcemanager.loganalytics.generated; import com.azure.core.util.BinaryData; -import com.azure.resourcemanager.loganalytics.models.Capacity; import com.azure.resourcemanager.loganalytics.models.ClusterSku; import com.azure.resourcemanager.loganalytics.models.ClusterSkuNameEnum; import org.junit.jupiter.api.Assertions; @@ -13,18 +12,18 @@ public final class ClusterSkuTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - ClusterSku model - = BinaryData.fromString("{\"capacity\":2000,\"name\":\"CapacityReservation\"}").toObject(ClusterSku.class); - Assertions.assertEquals(Capacity.TWO_ZERO_ZERO_ZERO, model.capacity()); + ClusterSku model = BinaryData.fromString("{\"capacity\":4121879659269768466,\"name\":\"CapacityReservation\"}") + .toObject(ClusterSku.class); + Assertions.assertEquals(4121879659269768466L, model.capacity()); Assertions.assertEquals(ClusterSkuNameEnum.CAPACITY_RESERVATION, model.name()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - ClusterSku model = new ClusterSku().withCapacity(Capacity.TWO_ZERO_ZERO_ZERO) - .withName(ClusterSkuNameEnum.CAPACITY_RESERVATION); + ClusterSku model + = new ClusterSku().withCapacity(4121879659269768466L).withName(ClusterSkuNameEnum.CAPACITY_RESERVATION); model = BinaryData.fromObject(model).toObject(ClusterSku.class); - Assertions.assertEquals(Capacity.TWO_ZERO_ZERO_ZERO, model.capacity()); + Assertions.assertEquals(4121879659269768466L, model.capacity()); Assertions.assertEquals(ClusterSkuNameEnum.CAPACITY_RESERVATION, model.name()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ClustersDeleteMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ClustersDeleteMockTests.java index 57864c8d9600..ab6b2cc44564 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ClustersDeleteMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ClustersDeleteMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import java.nio.charset.StandardCharsets; @@ -25,9 +25,9 @@ public void testDelete() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - manager.clusters().delete("rnfxtgddp", "th", com.azure.core.util.Context.NONE); + manager.clusters().delete("aglkafhon", "juj", com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ColumnTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ColumnTests.java index e3f8126a79ec..fb56750955dd 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ColumnTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ColumnTests.java @@ -14,27 +14,27 @@ public final class ColumnTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { Column model = BinaryData.fromString( - "{\"name\":\"q\",\"type\":\"dateTime\",\"dataTypeHint\":\"guid\",\"displayName\":\"jb\",\"description\":\"gaehvvibrxjjst\",\"isDefaultDisplay\":false,\"isHidden\":false}") + "{\"name\":\"pikpz\",\"type\":\"real\",\"dataTypeHint\":\"uri\",\"displayName\":\"nlfzxiavrmbz\",\"description\":\"okixrjqcir\",\"isDefaultDisplay\":false,\"isHidden\":true}") .toObject(Column.class); - Assertions.assertEquals("q", model.name()); - Assertions.assertEquals(ColumnTypeEnum.DATE_TIME, model.type()); - Assertions.assertEquals(ColumnDataTypeHintEnum.GUID, model.dataTypeHint()); - Assertions.assertEquals("jb", model.displayName()); - Assertions.assertEquals("gaehvvibrxjjst", model.description()); + Assertions.assertEquals("pikpz", model.name()); + Assertions.assertEquals(ColumnTypeEnum.REAL, model.type()); + Assertions.assertEquals(ColumnDataTypeHintEnum.URI, model.dataTypeHint()); + Assertions.assertEquals("nlfzxiavrmbz", model.displayName()); + Assertions.assertEquals("okixrjqcir", model.description()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - Column model = new Column().withName("q") - .withType(ColumnTypeEnum.DATE_TIME) - .withDataTypeHint(ColumnDataTypeHintEnum.GUID) - .withDisplayName("jb") - .withDescription("gaehvvibrxjjst"); + Column model = new Column().withName("pikpz") + .withType(ColumnTypeEnum.REAL) + .withDataTypeHint(ColumnDataTypeHintEnum.URI) + .withDisplayName("nlfzxiavrmbz") + .withDescription("okixrjqcir"); model = BinaryData.fromObject(model).toObject(Column.class); - Assertions.assertEquals("q", model.name()); - Assertions.assertEquals(ColumnTypeEnum.DATE_TIME, model.type()); - Assertions.assertEquals(ColumnDataTypeHintEnum.GUID, model.dataTypeHint()); - Assertions.assertEquals("jb", model.displayName()); - Assertions.assertEquals("gaehvvibrxjjst", model.description()); + Assertions.assertEquals("pikpz", model.name()); + Assertions.assertEquals(ColumnTypeEnum.REAL, model.type()); + Assertions.assertEquals(ColumnDataTypeHintEnum.URI, model.dataTypeHint()); + Assertions.assertEquals("nlfzxiavrmbz", model.displayName()); + Assertions.assertEquals("okixrjqcir", model.description()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/CoreSummaryTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/CoreSummaryTests.java index 7ac059f116db..2bb6c7f6df27 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/CoreSummaryTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/CoreSummaryTests.java @@ -12,18 +12,17 @@ public final class CoreSummaryTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { CoreSummary model - = BinaryData.fromString("{\"status\":\"elpcirelsfeaenwa\",\"numberOfDocuments\":6225068900260031070}") + = BinaryData.fromString("{\"status\":\"zvqtmnubexkp\",\"numberOfDocuments\":6799001413428276597}") .toObject(CoreSummary.class); - Assertions.assertEquals("elpcirelsfeaenwa", model.status()); - Assertions.assertEquals(6225068900260031070L, model.numberOfDocuments()); + Assertions.assertEquals("zvqtmnubexkp", model.status()); + Assertions.assertEquals(6799001413428276597L, model.numberOfDocuments()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - CoreSummary model - = new CoreSummary().withStatus("elpcirelsfeaenwa").withNumberOfDocuments(6225068900260031070L); + CoreSummary model = new CoreSummary().withStatus("zvqtmnubexkp").withNumberOfDocuments(6799001413428276597L); model = BinaryData.fromObject(model).toObject(CoreSummary.class); - Assertions.assertEquals("elpcirelsfeaenwa", model.status()); - Assertions.assertEquals(6225068900260031070L, model.numberOfDocuments()); + Assertions.assertEquals("zvqtmnubexkp", model.status()); + Assertions.assertEquals(6799001413428276597L, model.numberOfDocuments()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportInnerTests.java index 77d446726320..62a324915bf1 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportInnerTests.java @@ -13,33 +13,33 @@ public final class DataExportInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { DataExportInner model = BinaryData.fromString( - "{\"properties\":{\"dataExportId\":\"ovm\",\"tableNames\":[\"kacspkw\",\"hzdobpxjmflbvvnc\"],\"destination\":{\"resourceId\":\"kcciwwzjuqkhr\",\"type\":\"EventHub\",\"metaData\":{\"eventHubName\":\"ku\"}},\"enable\":false,\"createdDate\":\"kg\",\"lastModifiedDate\":\"auu\"},\"id\":\"mjmvxieduugidyjr\",\"name\":\"f\",\"type\":\"y\"}") + "{\"properties\":{\"dataExportId\":\"qeof\",\"tableNames\":[\"e\",\"jhqjbasvmsmjqul\",\"gsntnbybkzgcwr\",\"clxxwrljdo\"],\"destination\":{\"resourceId\":\"kcqvkocrc\",\"type\":\"StorageAccount\",\"metaData\":{\"eventHubName\":\"nh\"}},\"enable\":true,\"createdDate\":\"biksq\",\"lastModifiedDate\":\"lssai\"},\"id\":\"qpjwnzlljfm\",\"name\":\"pee\",\"type\":\"vmgxsab\"}") .toObject(DataExportInner.class); - Assertions.assertEquals("ovm", model.dataExportId()); - Assertions.assertEquals("kacspkw", model.tableNames().get(0)); - Assertions.assertEquals(false, model.enable()); - Assertions.assertEquals("kg", model.createdDate()); - Assertions.assertEquals("auu", model.lastModifiedDate()); - Assertions.assertEquals("kcciwwzjuqkhr", model.resourceId()); - Assertions.assertEquals("ku", model.eventHubName()); + Assertions.assertEquals("qeof", model.dataExportId()); + Assertions.assertEquals("e", model.tableNames().get(0)); + Assertions.assertTrue(model.enable()); + Assertions.assertEquals("biksq", model.createdDate()); + Assertions.assertEquals("lssai", model.lastModifiedDate()); + Assertions.assertEquals("kcqvkocrc", model.resourceId()); + Assertions.assertEquals("nh", model.eventHubName()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - DataExportInner model = new DataExportInner().withDataExportId("ovm") - .withTableNames(Arrays.asList("kacspkw", "hzdobpxjmflbvvnc")) - .withEnable(false) - .withCreatedDate("kg") - .withLastModifiedDate("auu") - .withResourceId("kcciwwzjuqkhr") - .withEventHubName("ku"); + DataExportInner model = new DataExportInner().withDataExportId("qeof") + .withTableNames(Arrays.asList("e", "jhqjbasvmsmjqul", "gsntnbybkzgcwr", "clxxwrljdo")) + .withEnable(true) + .withCreatedDate("biksq") + .withLastModifiedDate("lssai") + .withResourceId("kcqvkocrc") + .withEventHubName("nh"); model = BinaryData.fromObject(model).toObject(DataExportInner.class); - Assertions.assertEquals("ovm", model.dataExportId()); - Assertions.assertEquals("kacspkw", model.tableNames().get(0)); - Assertions.assertEquals(false, model.enable()); - Assertions.assertEquals("kg", model.createdDate()); - Assertions.assertEquals("auu", model.lastModifiedDate()); - Assertions.assertEquals("kcciwwzjuqkhr", model.resourceId()); - Assertions.assertEquals("ku", model.eventHubName()); + Assertions.assertEquals("qeof", model.dataExportId()); + Assertions.assertEquals("e", model.tableNames().get(0)); + Assertions.assertTrue(model.enable()); + Assertions.assertEquals("biksq", model.createdDate()); + Assertions.assertEquals("lssai", model.lastModifiedDate()); + Assertions.assertEquals("kcqvkocrc", model.resourceId()); + Assertions.assertEquals("nh", model.eventHubName()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportListResultTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportListResultTests.java index 011824c5d840..42883713205f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportListResultTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportListResultTests.java @@ -14,41 +14,55 @@ public final class DataExportListResultTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { DataExportListResult model = BinaryData.fromString( - "{\"value\":[{\"properties\":{\"dataExportId\":\"exfwhy\",\"tableNames\":[\"i\",\"vyvdcs\",\"tynnaamdectehfi\",\"scjeypv\"],\"destination\":{\"resourceId\":\"zrkgqhcjrefovg\",\"type\":\"StorageAccount\",\"metaData\":{\"eventHubName\":\"eyyvxyqjpkcat\"}},\"enable\":false,\"createdDate\":\"jcrcczsqpjhvmda\",\"lastModifiedDate\":\"nysounqe\"},\"id\":\"a\",\"name\":\"oaeupfhyhltrpmo\",\"type\":\"jmcmatuokthfu\"},{\"properties\":{\"dataExportId\":\"odsfcpkvxodpuozm\",\"tableNames\":[\"ydagfuaxbe\",\"yiuokktwh\",\"dxwzywqsmbsurexi\",\"o\"],\"destination\":{\"resourceId\":\"ocfs\",\"type\":\"StorageAccount\",\"metaData\":{\"eventHubName\":\"ddystkiiuxhqy\"}},\"enable\":false,\"createdDate\":\"rrqnbpoczvyifqrv\",\"lastModifiedDate\":\"vjsllrmvvdfw\"},\"id\":\"t\",\"name\":\"pnpulexxbczwtru\",\"type\":\"iqzbq\"}]}") + "{\"value\":[{\"properties\":{\"dataExportId\":\"tihfx\",\"tableNames\":[\"jbpzvgnwzsymg\",\"zufcyzkohdbi\",\"anufhfcbjysag\",\"th\"],\"destination\":{\"resourceId\":\"hab\",\"type\":\"EventHub\",\"metaData\":{\"eventHubName\":\"xwczbyscnp\"}},\"enable\":true,\"createdDate\":\"ivyqniwbybrkxvd\",\"lastModifiedDate\":\"jgrtfwvukxga\"},\"id\":\"dcc\",\"name\":\"nhsjcnyej\",\"type\":\"kryhtnapczwlokj\"},{\"properties\":{\"dataExportId\":\"kkvnipjox\",\"tableNames\":[\"nchgej\",\"podmailzydehojwy\"],\"destination\":{\"resourceId\":\"uxinpmqnjaq\",\"type\":\"StorageAccount\",\"metaData\":{\"eventHubName\":\"prozvcputegjvwmf\"}},\"enable\":false,\"createdDate\":\"cmdv\",\"lastModifiedDate\":\"hulsuuvmkjozkrwf\"},\"id\":\"dio\",\"name\":\"jpslwejd\",\"type\":\"vwryoqpso\"},{\"properties\":{\"dataExportId\":\"tazak\",\"tableNames\":[\"lahbcryff\"],\"destination\":{\"resourceId\":\"dosyg\",\"type\":\"EventHub\",\"metaData\":{\"eventHubName\":\"jakhmsbzjh\"}},\"enable\":false,\"createdDate\":\"vdphlxaolthqtr\",\"lastModifiedDate\":\"jbp\"},\"id\":\"zfsinzgvf\",\"name\":\"jrwzox\",\"type\":\"j\"},{\"properties\":{\"dataExportId\":\"lluwfzitonpeq\",\"tableNames\":[\"jkjlxofpdvhpfx\",\"ypininm\",\"yhuybbkpod\"],\"destination\":{\"resourceId\":\"ooginuvamih\",\"type\":\"EventHub\",\"metaData\":{\"eventHubName\":\"rxzxtheo\"}},\"enable\":false,\"createdDate\":\"vyevcciqi\",\"lastModifiedDate\":\"hungbwjzrnf\"},\"id\":\"gxg\",\"name\":\"spemvtzfk\",\"type\":\"fublj\"}]}") .toObject(DataExportListResult.class); - Assertions.assertEquals("exfwhy", model.value().get(0).dataExportId()); - Assertions.assertEquals("i", model.value().get(0).tableNames().get(0)); - Assertions.assertEquals(false, model.value().get(0).enable()); - Assertions.assertEquals("jcrcczsqpjhvmda", model.value().get(0).createdDate()); - Assertions.assertEquals("nysounqe", model.value().get(0).lastModifiedDate()); - Assertions.assertEquals("zrkgqhcjrefovg", model.value().get(0).resourceId()); - Assertions.assertEquals("eyyvxyqjpkcat", model.value().get(0).eventHubName()); + Assertions.assertEquals("tihfx", model.value().get(0).dataExportId()); + Assertions.assertEquals("jbpzvgnwzsymg", model.value().get(0).tableNames().get(0)); + Assertions.assertTrue(model.value().get(0).enable()); + Assertions.assertEquals("ivyqniwbybrkxvd", model.value().get(0).createdDate()); + Assertions.assertEquals("jgrtfwvukxga", model.value().get(0).lastModifiedDate()); + Assertions.assertEquals("hab", model.value().get(0).resourceId()); + Assertions.assertEquals("xwczbyscnp", model.value().get(0).eventHubName()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { DataExportListResult model = new DataExportListResult().withValue(Arrays.asList( - new DataExportInner().withDataExportId("exfwhy") - .withTableNames(Arrays.asList("i", "vyvdcs", "tynnaamdectehfi", "scjeypv")) + new DataExportInner().withDataExportId("tihfx") + .withTableNames(Arrays.asList("jbpzvgnwzsymg", "zufcyzkohdbi", "anufhfcbjysag", "th")) + .withEnable(true) + .withCreatedDate("ivyqniwbybrkxvd") + .withLastModifiedDate("jgrtfwvukxga") + .withResourceId("hab") + .withEventHubName("xwczbyscnp"), + new DataExportInner().withDataExportId("kkvnipjox") + .withTableNames(Arrays.asList("nchgej", "podmailzydehojwy")) .withEnable(false) - .withCreatedDate("jcrcczsqpjhvmda") - .withLastModifiedDate("nysounqe") - .withResourceId("zrkgqhcjrefovg") - .withEventHubName("eyyvxyqjpkcat"), - new DataExportInner().withDataExportId("odsfcpkvxodpuozm") - .withTableNames(Arrays.asList("ydagfuaxbe", "yiuokktwh", "dxwzywqsmbsurexi", "o")) + .withCreatedDate("cmdv") + .withLastModifiedDate("hulsuuvmkjozkrwf") + .withResourceId("uxinpmqnjaq") + .withEventHubName("prozvcputegjvwmf"), + new DataExportInner().withDataExportId("tazak") + .withTableNames(Arrays.asList("lahbcryff")) .withEnable(false) - .withCreatedDate("rrqnbpoczvyifqrv") - .withLastModifiedDate("vjsllrmvvdfw") - .withResourceId("ocfs") - .withEventHubName("ddystkiiuxhqy"))); + .withCreatedDate("vdphlxaolthqtr") + .withLastModifiedDate("jbp") + .withResourceId("dosyg") + .withEventHubName("jakhmsbzjh"), + new DataExportInner().withDataExportId("lluwfzitonpeq") + .withTableNames(Arrays.asList("jkjlxofpdvhpfx", "ypininm", "yhuybbkpod")) + .withEnable(false) + .withCreatedDate("vyevcciqi") + .withLastModifiedDate("hungbwjzrnf") + .withResourceId("ooginuvamih") + .withEventHubName("rxzxtheo"))); model = BinaryData.fromObject(model).toObject(DataExportListResult.class); - Assertions.assertEquals("exfwhy", model.value().get(0).dataExportId()); - Assertions.assertEquals("i", model.value().get(0).tableNames().get(0)); - Assertions.assertEquals(false, model.value().get(0).enable()); - Assertions.assertEquals("jcrcczsqpjhvmda", model.value().get(0).createdDate()); - Assertions.assertEquals("nysounqe", model.value().get(0).lastModifiedDate()); - Assertions.assertEquals("zrkgqhcjrefovg", model.value().get(0).resourceId()); - Assertions.assertEquals("eyyvxyqjpkcat", model.value().get(0).eventHubName()); + Assertions.assertEquals("tihfx", model.value().get(0).dataExportId()); + Assertions.assertEquals("jbpzvgnwzsymg", model.value().get(0).tableNames().get(0)); + Assertions.assertTrue(model.value().get(0).enable()); + Assertions.assertEquals("ivyqniwbybrkxvd", model.value().get(0).createdDate()); + Assertions.assertEquals("jgrtfwvukxga", model.value().get(0).lastModifiedDate()); + Assertions.assertEquals("hab", model.value().get(0).resourceId()); + Assertions.assertEquals("xwczbyscnp", model.value().get(0).eventHubName()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportPropertiesTests.java index 02615cd49ba4..d06950c1fe67 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportPropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportPropertiesTests.java @@ -13,33 +13,33 @@ public final class DataExportPropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { DataExportProperties model = BinaryData.fromString( - "{\"dataExportId\":\"svexcsonpclhoco\",\"tableNames\":[\"lkevle\",\"gz\"],\"destination\":{\"resourceId\":\"u\",\"type\":\"EventHub\",\"metaData\":{\"eventHubName\":\"axkffei\"}},\"enable\":false,\"createdDate\":\"vmezy\",\"lastModifiedDate\":\"hxmzsbbzoggig\"}") + "{\"dataExportId\":\"qduujitcjczdz\",\"tableNames\":[\"ndhkrw\",\"d\",\"ppdsbdkvwrwj\"],\"destination\":{\"resourceId\":\"usnhutje\",\"type\":\"StorageAccount\",\"metaData\":{\"eventHubName\":\"dhugjzzdatqxhocd\"}},\"enable\":true,\"createdDate\":\"lgphu\",\"lastModifiedDate\":\"cndvkaozwyiftyhx\"}") .toObject(DataExportProperties.class); - Assertions.assertEquals("svexcsonpclhoco", model.dataExportId()); - Assertions.assertEquals("lkevle", model.tableNames().get(0)); - Assertions.assertEquals(false, model.enable()); - Assertions.assertEquals("vmezy", model.createdDate()); - Assertions.assertEquals("hxmzsbbzoggig", model.lastModifiedDate()); - Assertions.assertEquals("u", model.resourceId()); - Assertions.assertEquals("axkffei", model.eventHubName()); + Assertions.assertEquals("qduujitcjczdz", model.dataExportId()); + Assertions.assertEquals("ndhkrw", model.tableNames().get(0)); + Assertions.assertTrue(model.enable()); + Assertions.assertEquals("lgphu", model.createdDate()); + Assertions.assertEquals("cndvkaozwyiftyhx", model.lastModifiedDate()); + Assertions.assertEquals("usnhutje", model.resourceId()); + Assertions.assertEquals("dhugjzzdatqxhocd", model.eventHubName()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - DataExportProperties model = new DataExportProperties().withDataExportId("svexcsonpclhoco") - .withTableNames(Arrays.asList("lkevle", "gz")) - .withEnable(false) - .withCreatedDate("vmezy") - .withLastModifiedDate("hxmzsbbzoggig") - .withResourceId("u") - .withEventHubName("axkffei"); + DataExportProperties model = new DataExportProperties().withDataExportId("qduujitcjczdz") + .withTableNames(Arrays.asList("ndhkrw", "d", "ppdsbdkvwrwj")) + .withEnable(true) + .withCreatedDate("lgphu") + .withLastModifiedDate("cndvkaozwyiftyhx") + .withResourceId("usnhutje") + .withEventHubName("dhugjzzdatqxhocd"); model = BinaryData.fromObject(model).toObject(DataExportProperties.class); - Assertions.assertEquals("svexcsonpclhoco", model.dataExportId()); - Assertions.assertEquals("lkevle", model.tableNames().get(0)); - Assertions.assertEquals(false, model.enable()); - Assertions.assertEquals("vmezy", model.createdDate()); - Assertions.assertEquals("hxmzsbbzoggig", model.lastModifiedDate()); - Assertions.assertEquals("u", model.resourceId()); - Assertions.assertEquals("axkffei", model.eventHubName()); + Assertions.assertEquals("qduujitcjczdz", model.dataExportId()); + Assertions.assertEquals("ndhkrw", model.tableNames().get(0)); + Assertions.assertTrue(model.enable()); + Assertions.assertEquals("lgphu", model.createdDate()); + Assertions.assertEquals("cndvkaozwyiftyhx", model.lastModifiedDate()); + Assertions.assertEquals("usnhutje", model.resourceId()); + Assertions.assertEquals("dhugjzzdatqxhocd", model.eventHubName()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsCreateOrUpdateWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsCreateOrUpdateWithResponseMockTests.java index fd97979e9f33..5089be2ae13d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsCreateOrUpdateWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsCreateOrUpdateWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.DataExport; @@ -22,33 +22,33 @@ public final class DataExportsCreateOrUpdateWithResponseMockTests { @Test public void testCreateOrUpdateWithResponse() throws Exception { String responseStr - = "{\"properties\":{\"dataExportId\":\"lfmk\",\"tableNames\":[\"cazuaw\",\"tzxpuamwabzxrv\",\"cush\",\"phai\"],\"destination\":{\"resourceId\":\"xyasflvgsgzw\",\"type\":\"StorageAccount\",\"metaData\":{\"eventHubName\":\"ihknsmjbl\"}},\"enable\":true,\"createdDate\":\"lnymzotqy\",\"lastModifiedDate\":\"uzcbmqq\"},\"id\":\"xmvwfg\",\"name\":\"ayxonsupeujl\",\"type\":\"qnhcvsqltnzoibg\"}"; + = "{\"properties\":{\"dataExportId\":\"crwnamikz\",\"tableNames\":[\"rqbsmswziq\",\"fuhok\",\"ruswhv\"],\"destination\":{\"resourceId\":\"zznvfbyc\",\"type\":\"StorageAccount\",\"metaData\":{\"eventHubName\":\"wix\"}},\"enable\":true,\"createdDate\":\"wmxqhndvnoamlds\",\"lastModifiedDate\":\"aohdjh\"},\"id\":\"flzokxco\",\"name\":\"pelnjetag\",\"type\":\"tsxoatftgz\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); DataExport response = manager.dataExports() - .define("igjkskyrio") - .withExistingWorkspace("hv", "slkvntjl") - .withDataExportId("idsxwaabzmifry") - .withTableNames(Arrays.asList("nmmaxrizkzob", "opxlhslnelxieixy", "llxecwc", "ojphslhc")) + .define("qwhix") + .withExistingWorkspace("rtixokff", "yinljqe") + .withDataExportId("stshiy") + .withTableNames(Arrays.asList("velfcldu", "cb")) .withEnable(true) - .withCreatedDate("n") - .withLastModifiedDate("ujeickp") - .withResourceId("jutifdwfmvigorqj") - .withEventHubName("raglk") + .withCreatedDate("tmninw") + .withLastModifiedDate("zcilnghg") + .withResourceId("ds") + .withEventHubName("b") .create(); - Assertions.assertEquals("lfmk", response.dataExportId()); - Assertions.assertEquals("cazuaw", response.tableNames().get(0)); - Assertions.assertEquals(true, response.enable()); - Assertions.assertEquals("lnymzotqy", response.createdDate()); - Assertions.assertEquals("uzcbmqq", response.lastModifiedDate()); - Assertions.assertEquals("xyasflvgsgzw", response.resourceId()); - Assertions.assertEquals("ihknsmjbl", response.eventHubName()); + Assertions.assertEquals("crwnamikz", response.dataExportId()); + Assertions.assertEquals("rqbsmswziq", response.tableNames().get(0)); + Assertions.assertTrue(response.enable()); + Assertions.assertEquals("wmxqhndvnoamlds", response.createdDate()); + Assertions.assertEquals("aohdjh", response.lastModifiedDate()); + Assertions.assertEquals("zznvfbyc", response.resourceId()); + Assertions.assertEquals("wix", response.eventHubName()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsDeleteWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsDeleteWithResponseMockTests.java index aa6e5e28ee07..f4d201295f7d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsDeleteWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsDeleteWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import java.nio.charset.StandardCharsets; @@ -25,10 +25,10 @@ public void testDeleteWithResponse() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); manager.dataExports() - .deleteWithResponse("cfhmlrqryxyn", "nzrdpsovwxz", "ptgoeiybbabp", com.azure.core.util.Context.NONE); + .deleteWithResponse("gicgaaoepttaq", "tdewemxswvruu", "zzjgehkfki", com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsGetWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsGetWithResponseMockTests.java index 7cc8ab74fe0b..4130ea85ff98 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsGetWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsGetWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.DataExport; @@ -21,24 +21,25 @@ public final class DataExportsGetWithResponseMockTests { @Test public void testGetWithResponse() throws Exception { String responseStr - = "{\"properties\":{\"dataExportId\":\"sdaultxij\",\"tableNames\":[\"mfqwa\"],\"destination\":{\"resourceId\":\"nqnm\",\"type\":\"StorageAccount\",\"metaData\":{\"eventHubName\":\"qdqx\"}},\"enable\":false,\"createdDate\":\"gny\",\"lastModifiedDate\":\"sf\"},\"id\":\"svtui\",\"name\":\"zh\",\"type\":\"jqg\"}"; + = "{\"properties\":{\"dataExportId\":\"wbuqn\",\"tableNames\":[\"phzfylsgcrp\",\"bcunezzceze\",\"fwyfwlwxjwet\"],\"destination\":{\"resourceId\":\"sihclafzvaylp\",\"type\":\"StorageAccount\",\"metaData\":{\"eventHubName\":\"wztcmwqkchc\"}},\"enable\":false,\"createdDate\":\"fewz\",\"lastModifiedDate\":\"jexfdeqvhp\"},\"id\":\"ylkkshkbffmbm\",\"name\":\"zjrgyww\",\"type\":\"gjxsnptfu\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - DataExport response - = manager.dataExports().getWithResponse("jg", "yexaoguy", "i", com.azure.core.util.Context.NONE).getValue(); + DataExport response = manager.dataExports() + .getWithResponse("nsnvpd", "bmikost", "z", com.azure.core.util.Context.NONE) + .getValue(); - Assertions.assertEquals("sdaultxij", response.dataExportId()); - Assertions.assertEquals("mfqwa", response.tableNames().get(0)); - Assertions.assertEquals(false, response.enable()); - Assertions.assertEquals("gny", response.createdDate()); - Assertions.assertEquals("sf", response.lastModifiedDate()); - Assertions.assertEquals("nqnm", response.resourceId()); - Assertions.assertEquals("qdqx", response.eventHubName()); + Assertions.assertEquals("wbuqn", response.dataExportId()); + Assertions.assertEquals("phzfylsgcrp", response.tableNames().get(0)); + Assertions.assertFalse(response.enable()); + Assertions.assertEquals("fewz", response.createdDate()); + Assertions.assertEquals("jexfdeqvhp", response.lastModifiedDate()); + Assertions.assertEquals("sihclafzvaylp", response.resourceId()); + Assertions.assertEquals("wztcmwqkchc", response.eventHubName()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsListByWorkspaceMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsListByWorkspaceMockTests.java index 87c97ad27ebf..1a604d6c6a7b 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsListByWorkspaceMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataExportsListByWorkspaceMockTests.java @@ -7,8 +7,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.DataExport; @@ -22,24 +22,24 @@ public final class DataExportsListByWorkspaceMockTests { @Test public void testListByWorkspace() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"dataExportId\":\"iljhahz\",\"tableNames\":[\"chndbnwie\",\"olewjwi\",\"ubwefqs\",\"ap\"],\"destination\":{\"resourceId\":\"tf\",\"type\":\"EventHub\",\"metaData\":{\"eventHubName\":\"ex\"}},\"enable\":true,\"createdDate\":\"xap\",\"lastModifiedDate\":\"og\"},\"id\":\"qnobp\",\"name\":\"dcdab\",\"type\":\"qwpwyawbzasqbuc\"}]}"; + = "{\"value\":[{\"properties\":{\"dataExportId\":\"qpofvwbc\",\"tableNames\":[\"embnkbw\",\"qvxkd\",\"vqihebwtswbzuwf\",\"duragegizvc\"],\"destination\":{\"resourceId\":\"elisdjub\",\"type\":\"StorageAccount\",\"metaData\":{\"eventHubName\":\"gkxkbsazgakg\"}},\"enable\":true,\"createdDate\":\"cmjdmspof\",\"lastModifiedDate\":\"vuhrylni\"},\"id\":\"frzgbzjed\",\"name\":\"st\",\"type\":\"vnlvxbcuiiznktwf\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response - = manager.dataExports().listByWorkspace("zejnhl", "kpbz", com.azure.core.util.Context.NONE); + = manager.dataExports().listByWorkspace("iiqbi", "htmwwinh", com.azure.core.util.Context.NONE); - Assertions.assertEquals("iljhahz", response.iterator().next().dataExportId()); - Assertions.assertEquals("chndbnwie", response.iterator().next().tableNames().get(0)); - Assertions.assertEquals(true, response.iterator().next().enable()); - Assertions.assertEquals("xap", response.iterator().next().createdDate()); - Assertions.assertEquals("og", response.iterator().next().lastModifiedDate()); - Assertions.assertEquals("tf", response.iterator().next().resourceId()); - Assertions.assertEquals("ex", response.iterator().next().eventHubName()); + Assertions.assertEquals("qpofvwbc", response.iterator().next().dataExportId()); + Assertions.assertEquals("embnkbw", response.iterator().next().tableNames().get(0)); + Assertions.assertTrue(response.iterator().next().enable()); + Assertions.assertEquals("cmjdmspof", response.iterator().next().createdDate()); + Assertions.assertEquals("vuhrylni", response.iterator().next().lastModifiedDate()); + Assertions.assertEquals("elisdjub", response.iterator().next().resourceId()); + Assertions.assertEquals("gkxkbsazgakg", response.iterator().next().eventHubName()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourceInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourceInnerTests.java index e4167ab17473..2d28f321fc85 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourceInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourceInnerTests.java @@ -15,23 +15,23 @@ public final class DataSourceInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { DataSourceInner model = BinaryData.fromString( - "{\"properties\":\"datakbldngkpocipa\",\"etag\":\"xoegukgjnpiucgy\",\"kind\":\"LinuxChangeTrackingPath\",\"tags\":{\"izcdrqjsd\":\"zntypmrb\",\"cwif\":\"ydnfyhxdeoejz\"},\"id\":\"jttgzf\",\"name\":\"ishc\",\"type\":\"khaj\"}") + "{\"properties\":\"dataasy\",\"etag\":\"nddhsgcbacph\",\"kind\":\"ChangeTrackingRegistry\",\"tags\":{\"ndlik\":\"tynqgoul\"},\"id\":\"yqkgfg\",\"name\":\"bmadgak\",\"type\":\"qsrxybzqqed\"}") .toObject(DataSourceInner.class); - Assertions.assertEquals("xoegukgjnpiucgy", model.etag()); - Assertions.assertEquals(DataSourceKind.LINUX_CHANGE_TRACKING_PATH, model.kind()); - Assertions.assertEquals("zntypmrb", model.tags().get("izcdrqjsd")); + Assertions.assertEquals("nddhsgcbacph", model.etag()); + Assertions.assertEquals(DataSourceKind.CHANGE_TRACKING_REGISTRY, model.kind()); + Assertions.assertEquals("tynqgoul", model.tags().get("ndlik")); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - DataSourceInner model = new DataSourceInner().withProperties("datakbldngkpocipa") - .withEtag("xoegukgjnpiucgy") - .withKind(DataSourceKind.LINUX_CHANGE_TRACKING_PATH) - .withTags(mapOf("izcdrqjsd", "zntypmrb", "cwif", "ydnfyhxdeoejz")); + DataSourceInner model = new DataSourceInner().withProperties("dataasy") + .withEtag("nddhsgcbacph") + .withKind(DataSourceKind.CHANGE_TRACKING_REGISTRY) + .withTags(mapOf("ndlik", "tynqgoul")); model = BinaryData.fromObject(model).toObject(DataSourceInner.class); - Assertions.assertEquals("xoegukgjnpiucgy", model.etag()); - Assertions.assertEquals(DataSourceKind.LINUX_CHANGE_TRACKING_PATH, model.kind()); - Assertions.assertEquals("zntypmrb", model.tags().get("izcdrqjsd")); + Assertions.assertEquals("nddhsgcbacph", model.etag()); + Assertions.assertEquals(DataSourceKind.CHANGE_TRACKING_REGISTRY, model.kind()); + Assertions.assertEquals("tynqgoul", model.tags().get("ndlik")); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourceListResultTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourceListResultTests.java index 6432973976d0..8b745c80d1fe 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourceListResultTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourceListResultTests.java @@ -17,42 +17,36 @@ public final class DataSourceListResultTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { DataSourceListResult model = BinaryData.fromString( - "{\"value\":[{\"properties\":\"dataeamdp\",\"etag\":\"g\",\"kind\":\"CustomLog\",\"tags\":{\"ow\":\"uxwgipwho\",\"injep\":\"gshwankixz\"},\"id\":\"ttmrywnuzoqf\",\"name\":\"iyqzrnk\",\"type\":\"qvyxlwhzlsicoho\"},{\"properties\":\"dataqnwvlrya\",\"etag\":\"hheunmmqhgyx\",\"kind\":\"ChangeTrackingDataTypeConfiguration\",\"tags\":{\"conuqszfkbeype\":\"ocukoklyax\"},\"id\":\"rmjmwvvjektc\",\"name\":\"senhwlrs\",\"type\":\"frzpwvlqdqgb\"},{\"properties\":\"dataqylihkaetckt\",\"etag\":\"civfsnkymuctq\",\"kind\":\"SqlDataClassification\",\"tags\":{\"fuwutttxf\":\"ebrjcxe\",\"hfnljkyq\":\"jrbirphxepcyv\",\"uujqgidokgjljyo\":\"j\",\"bgsncghkjeszzhb\":\"gvcl\"},\"id\":\"jhtxfvgxbfsmxne\",\"name\":\"mpvecxgodebfqk\",\"type\":\"rbmpukgri\"},{\"properties\":\"dataflz\",\"etag\":\"bxzpuzycisp\",\"kind\":\"CustomLogCollection\",\"tags\":{\"hibnuqqkpika\":\"hmgkbrpyy\",\"buynhijggm\":\"rgvtqag\"},\"id\":\"bfs\",\"name\":\"arbu\",\"type\":\"rcvpnazzmhjrunmp\"}],\"nextLink\":\"tdbhrbnla\"}") + "{\"value\":[{\"properties\":\"databciqfouflm\",\"etag\":\"kzsmodm\",\"kind\":\"ChangeTrackingServices\",\"tags\":{\"uqktap\":\"gpbkwtmut\",\"kdosvqw\":\"pwgcuertu\"},\"id\":\"bmdg\",\"name\":\"bjf\",\"type\":\"dgmb\"},{\"properties\":\"databexppb\",\"etag\":\"q\",\"kind\":\"ChangeTrackingContentLocation\",\"tags\":{\"jgzjaoyfhrtx\":\"fpfpsalgbquxigj\"},\"id\":\"lnerkujysvleju\",\"name\":\"fqawrlyxw\",\"type\":\"kcprbnw\"},{\"properties\":\"dataxgjvtbv\",\"etag\":\"sszdnru\",\"kind\":\"SecurityEventCollectionConfiguration\",\"tags\":{\"uitnwuiz\":\"hmuouqfprwzwbn\",\"x\":\"a\",\"hr\":\"fizuckyf\",\"zwdzuh\":\"idf\"},\"id\":\"ymwisdkft\",\"name\":\"wxmnteiwao\",\"type\":\"vkmijcmmxdcuf\"}],\"nextLink\":\"srp\"}") .toObject(DataSourceListResult.class); - Assertions.assertEquals("g", model.value().get(0).etag()); - Assertions.assertEquals(DataSourceKind.CUSTOM_LOG, model.value().get(0).kind()); - Assertions.assertEquals("uxwgipwho", model.value().get(0).tags().get("ow")); - Assertions.assertEquals("tdbhrbnla", model.nextLink()); + Assertions.assertEquals("kzsmodm", model.value().get(0).etag()); + Assertions.assertEquals(DataSourceKind.CHANGE_TRACKING_SERVICES, model.value().get(0).kind()); + Assertions.assertEquals("gpbkwtmut", model.value().get(0).tags().get("uqktap")); + Assertions.assertEquals("srp", model.nextLink()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - DataSourceListResult model - = new DataSourceListResult() - .withValue(Arrays.asList( - new DataSourceInner().withProperties("dataeamdp") - .withEtag("g") - .withKind(DataSourceKind.CUSTOM_LOG) - .withTags(mapOf("ow", "uxwgipwho", "injep", "gshwankixz")), - new DataSourceInner().withProperties("dataqnwvlrya") - .withEtag("hheunmmqhgyx") - .withKind(DataSourceKind.CHANGE_TRACKING_DATA_TYPE_CONFIGURATION) - .withTags(mapOf("conuqszfkbeype", "ocukoklyax")), - new DataSourceInner().withProperties("dataqylihkaetckt") - .withEtag("civfsnkymuctq") - .withKind(DataSourceKind.SQL_DATA_CLASSIFICATION) - .withTags(mapOf("fuwutttxf", "ebrjcxe", "hfnljkyq", "jrbirphxepcyv", "uujqgidokgjljyo", "j", - "bgsncghkjeszzhb", "gvcl")), - new DataSourceInner().withProperties("dataflz") - .withEtag("bxzpuzycisp") - .withKind(DataSourceKind.CUSTOM_LOG_COLLECTION) - .withTags(mapOf("hibnuqqkpika", "hmgkbrpyy", "buynhijggm", "rgvtqag")))) - .withNextLink("tdbhrbnla"); + DataSourceListResult model = new DataSourceListResult() + .withValue(Arrays.asList( + new DataSourceInner().withProperties("databciqfouflm") + .withEtag("kzsmodm") + .withKind(DataSourceKind.CHANGE_TRACKING_SERVICES) + .withTags(mapOf("uqktap", "gpbkwtmut", "kdosvqw", "pwgcuertu")), + new DataSourceInner().withProperties("databexppb") + .withEtag("q") + .withKind(DataSourceKind.CHANGE_TRACKING_CONTENT_LOCATION) + .withTags(mapOf("jgzjaoyfhrtx", "fpfpsalgbquxigj")), + new DataSourceInner().withProperties("dataxgjvtbv") + .withEtag("sszdnru") + .withKind(DataSourceKind.SECURITY_EVENT_COLLECTION_CONFIGURATION) + .withTags(mapOf("uitnwuiz", "hmuouqfprwzwbn", "x", "a", "hr", "fizuckyf", "zwdzuh", "idf")))) + .withNextLink("srp"); model = BinaryData.fromObject(model).toObject(DataSourceListResult.class); - Assertions.assertEquals("g", model.value().get(0).etag()); - Assertions.assertEquals(DataSourceKind.CUSTOM_LOG, model.value().get(0).kind()); - Assertions.assertEquals("uxwgipwho", model.value().get(0).tags().get("ow")); - Assertions.assertEquals("tdbhrbnla", model.nextLink()); + Assertions.assertEquals("kzsmodm", model.value().get(0).etag()); + Assertions.assertEquals(DataSourceKind.CHANGE_TRACKING_SERVICES, model.value().get(0).kind()); + Assertions.assertEquals("gpbkwtmut", model.value().get(0).tags().get("uqktap")); + Assertions.assertEquals("srp", model.nextLink()); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesCreateOrUpdateWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesCreateOrUpdateWithResponseMockTests.java index c82310019a03..94d9917c64f4 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesCreateOrUpdateWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesCreateOrUpdateWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.DataSource; @@ -24,27 +24,27 @@ public final class DataSourcesCreateOrUpdateWithResponseMockTests { @Test public void testCreateOrUpdateWithResponse() throws Exception { String responseStr - = "{\"properties\":\"dataejjtbxqmul\",\"etag\":\"lxqzvn\",\"kind\":\"ChangeTrackingDataTypeConfiguration\",\"tags\":{\"qbsms\":\"ycucrwnamikzeb\",\"kzruswh\":\"ziqgfuh\",\"ycjsx\":\"hczznvf\",\"xqhndvnoamlds\":\"wwixzvumw\"},\"id\":\"haohdjhhflzokxc\",\"name\":\"xpelnjetagltsx\",\"type\":\"atftgzpnpbsw\"}"; + = "{\"properties\":\"datactctbrxkjz\",\"etag\":\"gxffmshkwf\",\"kind\":\"CustomLogCollection\",\"tags\":{\"clnapxbiygnugjkn\":\"zxwopdbydpizq\",\"oiquvrehmrnjhvs\":\"smfcttuxuuyilfl\"},\"id\":\"jztczytqj\",\"name\":\"w\",\"type\":\"auunfprnjletlx\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); DataSource response = manager.dataSources() - .define("jx") - .withExistingWorkspace("bffmbmxz", "rgywwp") - .withProperties("datanptfujgi") - .withKind(DataSourceKind.LINUX_SYSLOG) - .withTags(mapOf("gehkfkimrtixokff", "mxswvruunzz", "qwhix", "yinljqe", "i", "onsts")) - .withEtag("aaoepttaqut") + .define("wfl") + .withExistingWorkspace("p", "gqoweyirdhlisn") + .withProperties("dataqmp") + .withKind(DataSourceKind.CHANGE_TRACKING_PATH) + .withTags(mapOf("xtmkzjvkviir", "ngjsaasi")) + .withEtag("ruwnpqxpx") .create(); - Assertions.assertEquals("lxqzvn", response.etag()); - Assertions.assertEquals(DataSourceKind.CHANGE_TRACKING_DATA_TYPE_CONFIGURATION, response.kind()); - Assertions.assertEquals("ycucrwnamikzeb", response.tags().get("qbsms")); + Assertions.assertEquals("gxffmshkwf", response.etag()); + Assertions.assertEquals(DataSourceKind.CUSTOM_LOG_COLLECTION, response.kind()); + Assertions.assertEquals("zxwopdbydpizq", response.tags().get("clnapxbiygnugjkn")); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesDeleteWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesDeleteWithResponseMockTests.java index d578c9558375..d54dcb41f86a 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesDeleteWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesDeleteWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import java.nio.charset.StandardCharsets; @@ -25,10 +25,9 @@ public void testDeleteWithResponse() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - manager.dataSources() - .deleteWithResponse("xgnxfyqonmpqoxwd", "fdbxiqxeiiqbim", "tmwwi", com.azure.core.util.Context.NONE); + manager.dataSources().deleteWithResponse("npbs", "vefloccsrmozihmi", "g", com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesGetWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesGetWithResponseMockTests.java index 59d8090c48f3..54519497c59e 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesGetWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesGetWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.DataSource; @@ -22,21 +22,21 @@ public final class DataSourcesGetWithResponseMockTests { @Test public void testGetWithResponse() throws Exception { String responseStr - = "{\"properties\":\"datakbwvqvxkdiv\",\"etag\":\"heb\",\"kind\":\"ChangeTrackingRegistry\",\"tags\":{\"gi\":\"bzuwfmdurag\",\"igkxkbsazga\":\"vcjfelisdjubggb\",\"apvu\":\"gacyrcmjdmspo\",\"zjedmstkvnlv\":\"rylniofrzg\"},\"id\":\"bcuiiz\",\"name\":\"ktwfa\",\"type\":\"snvpdibmi\"}"; + = "{\"properties\":\"dataztrksxwpndf\",\"etag\":\"fnznth\",\"kind\":\"SecurityEventCollectionConfiguration\",\"tags\":{\"amktcqiosmgbzah\":\"jaosrxuzv\",\"tz\":\"xqdlyrtltlapr\",\"s\":\"atbhjmznn\"},\"id\":\"qeqala\",\"name\":\"vlagun\",\"type\":\"tgfebwln\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); DataSource response = manager.dataSources() - .getWithResponse("h", "hfqpofv", "bcblemb", com.azure.core.util.Context.NONE) + .getWithResponse("wtxxpkyjcx", "jxgrytfmp", "ycilrmcaykggnox", com.azure.core.util.Context.NONE) .getValue(); - Assertions.assertEquals("heb", response.etag()); - Assertions.assertEquals(DataSourceKind.CHANGE_TRACKING_REGISTRY, response.kind()); - Assertions.assertEquals("bzuwfmdurag", response.tags().get("gi")); + Assertions.assertEquals("fnznth", response.etag()); + Assertions.assertEquals(DataSourceKind.SECURITY_EVENT_COLLECTION_CONFIGURATION, response.kind()); + Assertions.assertEquals("jaosrxuzv", response.tags().get("amktcqiosmgbzah")); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesListByWorkspaceMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesListByWorkspaceMockTests.java index 00be625a916f..e89ecf5dc62f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesListByWorkspaceMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DataSourcesListByWorkspaceMockTests.java @@ -7,8 +7,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.DataSource; @@ -23,20 +23,20 @@ public final class DataSourcesListByWorkspaceMockTests { @Test public void testListByWorkspace() throws Exception { String responseStr - = "{\"value\":[{\"properties\":\"datalfwyfwlwxjwetn\",\"etag\":\"ihclafzv\",\"kind\":\"WindowsPerformanceCounter\",\"tags\":{\"tcmwqkchc\":\"trsqqw\"},\"id\":\"waxfewzjkj\",\"name\":\"xfdeqvhpsyl\",\"type\":\"ksh\"}]}"; + = "{\"value\":[{\"properties\":\"dataqtobaxkjeyt\",\"etag\":\"lbfjkwr\",\"kind\":\"ChangeTrackingContentLocation\",\"tags\":{\"njqhdenxa\":\"qbhsyrq\"},\"id\":\"l\",\"name\":\"pakdkifmjnnawt\",\"type\":\"abpxuc\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response = manager.dataSources() - .listByWorkspace("ostbzbkiwb", "qnyophzfyls", "crpfbcunez", "cez", com.azure.core.util.Context.NONE); + .listByWorkspace("mhyreeudz", "av", "pdqmjxlyyzglgouw", "lmjjyuo", com.azure.core.util.Context.NONE); - Assertions.assertEquals("ihclafzv", response.iterator().next().etag()); - Assertions.assertEquals(DataSourceKind.WINDOWS_PERFORMANCE_COUNTER, response.iterator().next().kind()); - Assertions.assertEquals("trsqqw", response.iterator().next().tags().get("tcmwqkchc")); + Assertions.assertEquals("lbfjkwr", response.iterator().next().etag()); + Assertions.assertEquals(DataSourceKind.CHANGE_TRACKING_CONTENT_LOCATION, response.iterator().next().kind()); + Assertions.assertEquals("qbhsyrq", response.iterator().next().tags().get("njqhdenxa")); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListByResourceGroupMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListByResourceGroupMockTests.java index 0a2347b703b1..58b23a2b1a39 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListByResourceGroupMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListByResourceGroupMockTests.java @@ -7,11 +7,10 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; -import com.azure.resourcemanager.loganalytics.models.CapacityReservationLevel; import com.azure.resourcemanager.loganalytics.models.IdentityType; import com.azure.resourcemanager.loganalytics.models.PublicNetworkAccessType; import com.azure.resourcemanager.loganalytics.models.Workspace; @@ -26,38 +25,38 @@ public final class DeletedWorkspacesListByResourceGroupMockTests { @Test public void testListByResourceGroup() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"provisioningState\":\"Failed\",\"customerId\":\"qyn\",\"sku\":{\"name\":\"Standalone\",\"capacityReservationLevel\":200,\"lastSkuUpdate\":\"aq\"},\"retentionInDays\":530847681,\"workspaceCapping\":{\"dailyQuotaGb\":80.1550882239485,\"quotaNextResetTime\":\"hwddkvbxgkq\",\"dataIngestionStatus\":\"RespectQuota\"},\"createdDate\":\"w\",\"modifiedDate\":\"dacarvvlfnty\",\"publicNetworkAccessForIngestion\":\"Enabled\",\"publicNetworkAccessForQuery\":\"Disabled\",\"forceCmkForQuery\":true,\"privateLinkScopedResources\":[{\"resourceId\":\"erohzrsqalsxkdn\",\"scopeId\":\"apfgsdpcvessm\"},{\"resourceId\":\"h\",\"scopeId\":\"uipldqq\"},{\"resourceId\":\"ekvalblhtjq\",\"scopeId\":\"yvwehtaemxh\"}],\"features\":{\"enableDataExport\":false,\"immediatePurgeDataOn30Days\":false,\"enableLogAccessUsingOnlyResourcePermissions\":true,\"clusterResourceId\":\"ivzrrryveimipsk\",\"disableLocalAuth\":true,\"\":{\"tjvv\":\"datavfuzka\"}},\"defaultDataCollectionRuleResourceId\":\"xwigsye\"},\"identity\":{\"principalId\":\"dsmjtgr\",\"tenantId\":\"dgkkile\",\"type\":\"SystemAssigned\",\"userAssignedIdentities\":{\"ygbdgwumgxdgdhpa\":{\"principalId\":\"mknhwtbbaedor\",\"clientId\":\"mqfl\"},\"tefhexcgjokjl\":{\"principalId\":\"dexjddvjs\",\"clientId\":\"wotmmwllcolsrsxa\"}}},\"systemData\":{\"createdBy\":\"v\",\"createdByType\":\"Key\",\"createdAt\":\"2021-11-03T13:01:45Z\",\"lastModifiedBy\":\"peeksnbksdqhjv\",\"lastModifiedByType\":\"Application\",\"lastModifiedAt\":\"2021-07-06T01:14:39Z\"},\"etag\":\"lkhhu\",\"location\":\"tcpoqma\",\"tags\":{\"jkxyb\":\"qjwgoknlej\",\"jbzten\":\"fdb\"},\"id\":\"vkzykjtjknsxf\",\"name\":\"us\",\"type\":\"cdp\"}]}"; + = "{\"value\":[{\"properties\":{\"provisioningState\":\"Updating\",\"customerId\":\"uqndaizupfkhuy\",\"sku\":{\"name\":\"LACluster\",\"capacityReservationLevel\":1048467054,\"lastSkuUpdate\":\"2021-11-22T12:40:39Z\"},\"retentionInDays\":1254328830,\"workspaceCapping\":{\"dailyQuotaGb\":12.895250494222898,\"quotaNextResetTime\":\"qiukvzwyd\",\"dataIngestionStatus\":\"ApproachingQuota\"},\"createdDate\":\"2021-02-07T19:45:29Z\",\"modifiedDate\":\"2021-08-08T18:31:32Z\",\"publicNetworkAccessForIngestion\":\"SecuredByPerimeter\",\"publicNetworkAccessForQuery\":\"Disabled\",\"forceCmkForQuery\":false,\"privateLinkScopedResources\":[{\"resourceId\":\"shajqf\",\"scopeId\":\"peexpgeumilhwuit\"}],\"features\":{\"enableDataExport\":false,\"immediatePurgeDataOn30Days\":false,\"enableLogAccessUsingOnlyResourcePermissions\":false,\"clusterResourceId\":\"fninbdbzs\",\"disableLocalAuth\":true,\"unifiedSentinelBillingOnly\":false,\"associations\":[\"mpcbbprtugav\",\"zbcyksiv\"],\"tbfcm\":\"datagd\"},\"defaultDataCollectionRuleResourceId\":\"ftsjcwj\",\"replication\":{\"location\":\"gmbawvifdxk\",\"enabled\":false,\"provisioningState\":\"RollingBack\",\"createdDate\":\"2021-01-30T06:13:56Z\",\"lastModifiedDate\":\"2021-11-01T17:33:31Z\"},\"failover\":{\"state\":\"Activating\",\"lastModifiedDate\":\"2021-08-18T18:47:44Z\"}},\"identity\":{\"principalId\":\"txvcm\",\"tenantId\":\"unlcpxxv\",\"type\":\"UserAssigned\",\"userAssignedIdentities\":{\"iahxmfqryarvs\":{\"principalId\":\"ngjgvrquvpyg\",\"clientId\":\"pmcrdcuelj\"},\"tgblioskkfmk\":{\"principalId\":\"qbglcjkaysp\",\"clientId\":\"zodubtlm\"}}},\"etag\":\"jxyxgb\",\"location\":\"kqvjcteoedlr\",\"tags\":{\"pxvjnzd\":\"kk\",\"pcnab\":\"vocoj\",\"nggy\":\"zf\",\"vzilmhiv\":\"e\"},\"id\":\"kwwwnckn\",\"name\":\"zdajlskzptjxu\",\"type\":\"weucyrth\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response - = manager.deletedWorkspaces().listByResourceGroup("djus", com.azure.core.util.Context.NONE); + = manager.deletedWorkspaces().listByResourceGroup("ldtzmpypefcp", com.azure.core.util.Context.NONE); - Assertions.assertEquals("tcpoqma", response.iterator().next().location()); - Assertions.assertEquals("qjwgoknlej", response.iterator().next().tags().get("jkxyb")); - Assertions.assertEquals(IdentityType.SYSTEM_ASSIGNED, response.iterator().next().identity().type()); - Assertions.assertEquals("lkhhu", response.iterator().next().etag()); - Assertions.assertEquals(WorkspaceSkuNameEnum.STANDALONE, response.iterator().next().sku().name()); - Assertions.assertEquals(CapacityReservationLevel.TWO_ZERO_ZERO, - response.iterator().next().sku().capacityReservationLevel()); - Assertions.assertEquals(530847681, response.iterator().next().retentionInDays()); - Assertions.assertEquals(80.1550882239485D, response.iterator().next().workspaceCapping().dailyQuotaGb()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, + Assertions.assertEquals("kqvjcteoedlr", response.iterator().next().location()); + Assertions.assertEquals("kk", response.iterator().next().tags().get("pxvjnzd")); + Assertions.assertEquals(IdentityType.USER_ASSIGNED, response.iterator().next().identity().type()); + Assertions.assertEquals("jxyxgb", response.iterator().next().etag()); + Assertions.assertEquals(WorkspaceSkuNameEnum.LACLUSTER, response.iterator().next().sku().name()); + Assertions.assertEquals(1048467054, response.iterator().next().sku().capacityReservationLevel()); + Assertions.assertEquals(1254328830, response.iterator().next().retentionInDays()); + Assertions.assertEquals(12.895250494222898D, response.iterator().next().workspaceCapping().dailyQuotaGb()); + Assertions.assertEquals(PublicNetworkAccessType.SECURED_BY_PERIMETER, response.iterator().next().publicNetworkAccessForIngestion()); Assertions.assertEquals(PublicNetworkAccessType.DISABLED, response.iterator().next().publicNetworkAccessForQuery()); - Assertions.assertEquals(true, response.iterator().next().forceCmkForQuery()); - Assertions.assertEquals(false, response.iterator().next().features().enableDataExport()); - Assertions.assertEquals(false, response.iterator().next().features().immediatePurgeDataOn30Days()); - Assertions.assertEquals(true, - response.iterator().next().features().enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("ivzrrryveimipsk", response.iterator().next().features().clusterResourceId()); - Assertions.assertEquals(true, response.iterator().next().features().disableLocalAuth()); - Assertions.assertEquals("xwigsye", response.iterator().next().defaultDataCollectionRuleResourceId()); + Assertions.assertFalse(response.iterator().next().forceCmkForQuery()); + Assertions.assertFalse(response.iterator().next().features().enableDataExport()); + Assertions.assertFalse(response.iterator().next().features().immediatePurgeDataOn30Days()); + Assertions.assertFalse(response.iterator().next().features().enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("fninbdbzs", response.iterator().next().features().clusterResourceId()); + Assertions.assertTrue(response.iterator().next().features().disableLocalAuth()); + Assertions.assertEquals("ftsjcwj", response.iterator().next().defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("gmbawvifdxk", response.iterator().next().replication().location()); + Assertions.assertFalse(response.iterator().next().replication().enabled()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListMockTests.java index 891c3528ebe5..fc8bf7ed34a5 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DeletedWorkspacesListMockTests.java @@ -7,11 +7,10 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; -import com.azure.resourcemanager.loganalytics.models.CapacityReservationLevel; import com.azure.resourcemanager.loganalytics.models.IdentityType; import com.azure.resourcemanager.loganalytics.models.PublicNetworkAccessType; import com.azure.resourcemanager.loganalytics.models.Workspace; @@ -26,37 +25,37 @@ public final class DeletedWorkspacesListMockTests { @Test public void testList() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"provisioningState\":\"Canceled\",\"customerId\":\"ztwhghmupg\",\"sku\":{\"name\":\"LACluster\",\"capacityReservationLevel\":200,\"lastSkuUpdate\":\"xabb\"},\"retentionInDays\":1038396263,\"workspaceCapping\":{\"dailyQuotaGb\":38.243065707057745,\"quotaNextResetTime\":\"bbklqpxzuca\",\"dataIngestionStatus\":\"RespectQuota\"},\"createdDate\":\"wwnlzafwxudgnh\",\"modifiedDate\":\"okrtalvnb\",\"publicNetworkAccessForIngestion\":\"Enabled\",\"publicNetworkAccessForQuery\":\"Enabled\",\"forceCmkForQuery\":true,\"privateLinkScopedResources\":[{\"resourceId\":\"lvdjjukyr\",\"scopeId\":\"qo\"},{\"resourceId\":\"ahhxhqfaqnvzoqg\",\"scopeId\":\"pem\"}],\"features\":{\"enableDataExport\":true,\"immediatePurgeDataOn30Days\":true,\"enableLogAccessUsingOnlyResourcePermissions\":false,\"clusterResourceId\":\"ejdtxptl\",\"disableLocalAuth\":true,\"\":{\"j\":\"dataomew\",\"uhqawmoaianc\":\"datatl\",\"blxydkxr\":\"datanvodrrs\"}},\"defaultDataCollectionRuleResourceId\":\"vbxiwkgfbqlj\"},\"identity\":{\"principalId\":\"hychocokuleh\",\"tenantId\":\"qlrqffaweyurk\",\"type\":\"key\",\"userAssignedIdentities\":{\"rxmrgchbapx\":{\"principalId\":\"xra\",\"clientId\":\"uqd\"},\"bajbuscgduusi\":{\"principalId\":\"y\",\"clientId\":\"j\"},\"kyxl\":{\"principalId\":\"cblevpmc\",\"clientId\":\"jy\"},\"vdwnapfdqwowft\":{\"principalId\":\"sjgkzzltafh\",\"clientId\":\"ffovwmbjlzqsczp\"}}},\"systemData\":{\"createdBy\":\"uwjtks\",\"createdByType\":\"Key\",\"createdAt\":\"2021-07-07T02:15:20Z\",\"lastModifiedBy\":\"y\",\"lastModifiedByType\":\"Application\",\"lastModifiedAt\":\"2021-04-28T02:09:32Z\"},\"etag\":\"q\",\"location\":\"hvyeldotj\",\"tags\":{\"spkxkdt\":\"wiswskukjtasbvw\",\"vtwknvgmmbugt\":\"fkndl\",\"kueatgroeshoy\":\"watmqa\",\"kfaoytehq\":\"zcbyfq\"},\"id\":\"uvjmv\",\"name\":\"mtdwcky\",\"type\":\"roejnndl\"}]}"; + = "{\"value\":[{\"properties\":{\"provisioningState\":\"Updating\",\"customerId\":\"togmhmjpjscdfpd\",\"sku\":{\"name\":\"CapacityReservation\",\"capacityReservationLevel\":1893346412,\"lastSkuUpdate\":\"2021-07-14T18:14:24Z\"},\"retentionInDays\":1189635916,\"workspaceCapping\":{\"dailyQuotaGb\":44.46311972703302,\"quotaNextResetTime\":\"rxifvqnrx\",\"dataIngestionStatus\":\"RespectQuota\"},\"createdDate\":\"2020-12-23T21:27:45Z\",\"modifiedDate\":\"2021-09-18T16:52:07Z\",\"publicNetworkAccessForIngestion\":\"Disabled\",\"publicNetworkAccessForQuery\":\"SecuredByPerimeter\",\"forceCmkForQuery\":true,\"privateLinkScopedResources\":[{\"resourceId\":\"qpxlb\",\"scopeId\":\"akftng\"},{\"resourceId\":\"wmykyutry\",\"scopeId\":\"wmfjhp\"},{\"resourceId\":\"vjqdvdwkq\",\"scopeId\":\"drlefgnaavuag\"},{\"resourceId\":\"etaoutnpdc\",\"scopeId\":\"hspfefyihd\"}],\"features\":{\"enableDataExport\":false,\"immediatePurgeDataOn30Days\":true,\"enableLogAccessUsingOnlyResourcePermissions\":false,\"clusterResourceId\":\"mtybkcgsu\",\"disableLocalAuth\":true,\"unifiedSentinelBillingOnly\":false,\"associations\":[\"wynefx\",\"x\",\"fciatxtjrr\",\"kmdskjhhxd\"],\"cvslxlhuavkrmukm\":\"datafoxcx\",\"qid\":\"datajmkxettcslojf\",\"tkbtnqlrngl\":\"dataqtoqxjhqxcsq\",\"nxhhl\":\"datambiipsnawwlqk\"},\"defaultDataCollectionRuleResourceId\":\"ricctkwmuqqoa\",\"replication\":{\"location\":\"iygle\",\"enabled\":true,\"provisioningState\":\"RollbackRequested\",\"createdDate\":\"2021-08-22T14:39:56Z\",\"lastModifiedDate\":\"2021-01-05T18:05:21Z\"},\"failover\":{\"state\":\"Active\",\"lastModifiedDate\":\"2021-01-06T05:50:32Z\"}},\"identity\":{\"principalId\":\"kbrup\",\"tenantId\":\"ehdmljzacvumep\",\"type\":\"None\",\"userAssignedIdentities\":{\"cjclykcgxv\":{\"principalId\":\"nzpphepife\",\"clientId\":\"eqir\"},\"u\":{\"principalId\":\"jlvczu\",\"clientId\":\"ac\"}}},\"etag\":\"tepdjxqes\",\"location\":\"oy\",\"tags\":{\"skwxe\":\"ylpckaewsedv\",\"fn\":\"qphr\"},\"id\":\"hctmjtsgh\",\"name\":\"bcbcpz\",\"type\":\"rpzeqac\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response = manager.deletedWorkspaces().list(com.azure.core.util.Context.NONE); - Assertions.assertEquals("hvyeldotj", response.iterator().next().location()); - Assertions.assertEquals("wiswskukjtasbvw", response.iterator().next().tags().get("spkxkdt")); - Assertions.assertEquals(IdentityType.KEY, response.iterator().next().identity().type()); - Assertions.assertEquals("q", response.iterator().next().etag()); - Assertions.assertEquals(WorkspaceSkuNameEnum.LACLUSTER, response.iterator().next().sku().name()); - Assertions.assertEquals(CapacityReservationLevel.TWO_ZERO_ZERO, - response.iterator().next().sku().capacityReservationLevel()); - Assertions.assertEquals(1038396263, response.iterator().next().retentionInDays()); - Assertions.assertEquals(38.243065707057745D, response.iterator().next().workspaceCapping().dailyQuotaGb()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, + Assertions.assertEquals("oy", response.iterator().next().location()); + Assertions.assertEquals("ylpckaewsedv", response.iterator().next().tags().get("skwxe")); + Assertions.assertEquals(IdentityType.NONE, response.iterator().next().identity().type()); + Assertions.assertEquals("tepdjxqes", response.iterator().next().etag()); + Assertions.assertEquals(WorkspaceSkuNameEnum.CAPACITY_RESERVATION, response.iterator().next().sku().name()); + Assertions.assertEquals(1893346412, response.iterator().next().sku().capacityReservationLevel()); + Assertions.assertEquals(1189635916, response.iterator().next().retentionInDays()); + Assertions.assertEquals(44.46311972703302D, response.iterator().next().workspaceCapping().dailyQuotaGb()); + Assertions.assertEquals(PublicNetworkAccessType.DISABLED, response.iterator().next().publicNetworkAccessForIngestion()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, + Assertions.assertEquals(PublicNetworkAccessType.SECURED_BY_PERIMETER, response.iterator().next().publicNetworkAccessForQuery()); - Assertions.assertEquals(true, response.iterator().next().forceCmkForQuery()); - Assertions.assertEquals(true, response.iterator().next().features().enableDataExport()); - Assertions.assertEquals(true, response.iterator().next().features().immediatePurgeDataOn30Days()); - Assertions.assertEquals(false, - response.iterator().next().features().enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("ejdtxptl", response.iterator().next().features().clusterResourceId()); - Assertions.assertEquals(true, response.iterator().next().features().disableLocalAuth()); - Assertions.assertEquals("vbxiwkgfbqlj", response.iterator().next().defaultDataCollectionRuleResourceId()); + Assertions.assertTrue(response.iterator().next().forceCmkForQuery()); + Assertions.assertFalse(response.iterator().next().features().enableDataExport()); + Assertions.assertTrue(response.iterator().next().features().immediatePurgeDataOn30Days()); + Assertions.assertFalse(response.iterator().next().features().enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("mtybkcgsu", response.iterator().next().features().clusterResourceId()); + Assertions.assertTrue(response.iterator().next().features().disableLocalAuth()); + Assertions.assertEquals("ricctkwmuqqoa", response.iterator().next().defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("iygle", response.iterator().next().replication().location()); + Assertions.assertTrue(response.iterator().next().replication().enabled()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DestinationMetadataTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DestinationMetadataTests.java index 3a73f10f1616..76c288c6e4d9 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DestinationMetadataTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DestinationMetadataTests.java @@ -12,14 +12,14 @@ public final class DestinationMetadataTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { DestinationMetadata model - = BinaryData.fromString("{\"eventHubName\":\"uknvudwti\"}").toObject(DestinationMetadata.class); - Assertions.assertEquals("uknvudwti", model.eventHubName()); + = BinaryData.fromString("{\"eventHubName\":\"kgiawxklryplwck\"}").toObject(DestinationMetadata.class); + Assertions.assertEquals("kgiawxklryplwck", model.eventHubName()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - DestinationMetadata model = new DestinationMetadata().withEventHubName("uknvudwti"); + DestinationMetadata model = new DestinationMetadata().withEventHubName("kgiawxklryplwck"); model = BinaryData.fromObject(model).toObject(DestinationMetadata.class); - Assertions.assertEquals("uknvudwti", model.eventHubName()); + Assertions.assertEquals("kgiawxklryplwck", model.eventHubName()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DestinationTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DestinationTests.java index 4d08fdd12af4..ef10a1cda898 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DestinationTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/DestinationTests.java @@ -12,18 +12,17 @@ public final class DestinationTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { Destination model = BinaryData - .fromString( - "{\"resourceId\":\"xwburvjxxjns\",\"type\":\"EventHub\",\"metaData\":{\"eventHubName\":\"koen\"}}") + .fromString("{\"resourceId\":\"urokft\",\"type\":\"EventHub\",\"metaData\":{\"eventHubName\":\"iwpwcuk\"}}") .toObject(Destination.class); - Assertions.assertEquals("xwburvjxxjns", model.resourceId()); - Assertions.assertEquals("koen", model.eventHubName()); + Assertions.assertEquals("urokft", model.resourceId()); + Assertions.assertEquals("iwpwcuk", model.eventHubName()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - Destination model = new Destination().withResourceId("xwburvjxxjns").withEventHubName("koen"); + Destination model = new Destination().withResourceId("urokft").withEventHubName("iwpwcuk"); model = BinaryData.fromObject(model).toObject(Destination.class); - Assertions.assertEquals("xwburvjxxjns", model.resourceId()); - Assertions.assertEquals("koen", model.eventHubName()); + Assertions.assertEquals("urokft", model.resourceId()); + Assertions.assertEquals("iwpwcuk", model.eventHubName()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/GatewaysDeleteWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/GatewaysDeleteWithResponseMockTests.java index 7b433126c9b0..98739141551f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/GatewaysDeleteWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/GatewaysDeleteWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import java.nio.charset.StandardCharsets; @@ -25,9 +25,9 @@ public void testDeleteWithResponse() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - manager.gateways().deleteWithResponse("jwtrhtgvgzp", "rrkolawjmjs", "wro", com.azure.core.util.Context.NONE); + manager.gateways().deleteWithResponse("mr", "ddoui", "amowaziynknlqwzd", com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IdentityTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IdentityTests.java index c7ff9ea8ee6d..15bb6dc73575 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IdentityTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IdentityTests.java @@ -16,17 +16,18 @@ public final class IdentityTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { Identity model = BinaryData.fromString( - "{\"principalId\":\"yl\",\"tenantId\":\"ool\",\"type\":\"SystemAssigned\",\"userAssignedIdentities\":{\"urdoi\":{\"principalId\":\"iwkkbn\",\"clientId\":\"rywvtylbfpn\"}}}") + "{\"principalId\":\"e\",\"tenantId\":\"lfg\",\"type\":\"UserAssigned\",\"userAssignedIdentities\":{\"duvwpklvxwmygd\":{\"principalId\":\"kwdlenrdsutujba\",\"clientId\":\"juohminyflnorw\"},\"bjcrxgibbdaxco\":{\"principalId\":\"gpqch\",\"clientId\":\"zepn\"}}}") .toObject(Identity.class); - Assertions.assertEquals(IdentityType.SYSTEM_ASSIGNED, model.type()); + Assertions.assertEquals(IdentityType.USER_ASSIGNED, model.type()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - Identity model = new Identity().withType(IdentityType.SYSTEM_ASSIGNED) - .withUserAssignedIdentities(mapOf("urdoi", new UserIdentityProperties())); + Identity model = new Identity().withType(IdentityType.USER_ASSIGNED) + .withUserAssignedIdentities( + mapOf("duvwpklvxwmygd", new UserIdentityProperties(), "bjcrxgibbdaxco", new UserIdentityProperties())); model = BinaryData.fromObject(model).toObject(Identity.class); - Assertions.assertEquals(IdentityType.SYSTEM_ASSIGNED, model.type()); + Assertions.assertEquals(IdentityType.USER_ASSIGNED, model.type()); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePackInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePackInnerTests.java index 9b26c589211a..8b5b484fb648 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePackInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePackInnerTests.java @@ -12,20 +12,20 @@ public final class IntelligencePackInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { IntelligencePackInner model - = BinaryData.fromString("{\"name\":\"xmyskp\",\"enabled\":true,\"displayName\":\"btkcxywnytnrsyn\"}") + = BinaryData.fromString("{\"name\":\"zidnsezcxtbzsgfy\",\"enabled\":false,\"displayName\":\"ewmdw\"}") .toObject(IntelligencePackInner.class); - Assertions.assertEquals("xmyskp", model.name()); - Assertions.assertEquals(true, model.enabled()); - Assertions.assertEquals("btkcxywnytnrsyn", model.displayName()); + Assertions.assertEquals("zidnsezcxtbzsgfy", model.name()); + Assertions.assertFalse(model.enabled()); + Assertions.assertEquals("ewmdw", model.displayName()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { IntelligencePackInner model - = new IntelligencePackInner().withName("xmyskp").withEnabled(true).withDisplayName("btkcxywnytnrsyn"); + = new IntelligencePackInner().withName("zidnsezcxtbzsgfy").withEnabled(false).withDisplayName("ewmdw"); model = BinaryData.fromObject(model).toObject(IntelligencePackInner.class); - Assertions.assertEquals("xmyskp", model.name()); - Assertions.assertEquals(true, model.enabled()); - Assertions.assertEquals("btkcxywnytnrsyn", model.displayName()); + Assertions.assertEquals("zidnsezcxtbzsgfy", model.name()); + Assertions.assertFalse(model.enabled()); + Assertions.assertEquals("ewmdw", model.displayName()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksDisableWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksDisableWithResponseMockTests.java index 5f7ab2cf0601..4c8e3becb5fb 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksDisableWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksDisableWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import java.nio.charset.StandardCharsets; @@ -25,10 +25,10 @@ public void testDisableWithResponse() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); manager.intelligencePacks() - .disableWithResponse("e", "loccsrmozihm", "pgawtxxpkyjcxcjx", com.azure.core.util.Context.NONE); + .disableWithResponse("piwhxqs", "dtmaa", "quhuxylrj", com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksEnableWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksEnableWithResponseMockTests.java index f9cf202b49cd..bac7d11c9fe1 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksEnableWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksEnableWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import java.nio.charset.StandardCharsets; @@ -25,10 +25,10 @@ public void testEnableWithResponse() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); manager.intelligencePacks() - .enableWithResponse("rytfmpcycil", "mcayk", "gnoxuztrksx", com.azure.core.util.Context.NONE); + .enableWithResponse("m", "ygjbmzyospspsh", "kfkyjp", com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksListWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksListWithResponseMockTests.java index 5055a4ea2785..9b2dbe3126ca 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksListWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/IntelligencePacksListWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.IntelligencePack; @@ -21,22 +21,21 @@ public final class IntelligencePacksListWithResponseMockTests { @Test public void testListWithResponse() throws Exception { - String responseStr - = "[{\"name\":\"zvoamktc\",\"enabled\":false,\"displayName\":\"mgbzahgxqdlyrtl\"},{\"name\":\"ap\",\"enabled\":false,\"displayName\":\"katbhjm\"},{\"name\":\"nbsoqeqalarv\",\"enabled\":true,\"displayName\":\"nbtgfebwl\"}]"; + String responseStr = "[{\"name\":\"tvczkcnyxr\",\"enabled\":false,\"displayName\":\"jdxvglnkvxlxpa\"}]"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); List response = manager.intelligencePacks() - .listWithResponse("pndfcpfnznt", "jtwkjaos", com.azure.core.util.Context.NONE) + .listWithResponse("sp", "pssdfppyogtie", com.azure.core.util.Context.NONE) .getValue(); - Assertions.assertEquals("zvoamktc", response.get(0).name()); - Assertions.assertEquals(false, response.get(0).enabled()); - Assertions.assertEquals("mgbzahgxqdlyrtl", response.get(0).displayName()); + Assertions.assertEquals("tvczkcnyxr", response.get(0).name()); + Assertions.assertFalse(response.get(0).enabled()); + Assertions.assertEquals("jdxvglnkvxlxpa", response.get(0).displayName()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServiceInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServiceInnerTests.java index a19e21dc77ed..0cef0b25e34b 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServiceInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServiceInnerTests.java @@ -15,25 +15,27 @@ public final class LinkedServiceInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { LinkedServiceInner model = BinaryData.fromString( - "{\"properties\":{\"resourceId\":\"idybyxczf\",\"writeAccessResourceId\":\"haaxdbabphl\",\"provisioningState\":\"ProvisioningAccount\"},\"tags\":{\"azt\":\"ktsthsucocmny\"},\"id\":\"bt\",\"name\":\"wrqpue\",\"type\":\"ckzywbiexzfeyue\"}") + "{\"properties\":{\"resourceId\":\"eiachboosflnr\",\"writeAccessResourceId\":\"fqpte\",\"provisioningState\":\"Updating\"},\"tags\":{\"swjdkirso\":\"ypyqrimzinp\",\"soifiyipjxsqw\":\"dqxhcrmnohjtckwh\",\"bznorcjxvsnby\":\"gr\",\"cyshurzafbljjgp\":\"qabnmoc\"},\"id\":\"toqcjmklja\",\"name\":\"bqidtqaj\",\"type\":\"yulpkudjkr\"}") .toObject(LinkedServiceInner.class); - Assertions.assertEquals("ktsthsucocmny", model.tags().get("azt")); - Assertions.assertEquals("idybyxczf", model.resourceId()); - Assertions.assertEquals("haaxdbabphl", model.writeAccessResourceId()); - Assertions.assertEquals(LinkedServiceEntityStatus.PROVISIONING_ACCOUNT, model.provisioningState()); + Assertions.assertEquals("ypyqrimzinp", model.tags().get("swjdkirso")); + Assertions.assertEquals("eiachboosflnr", model.resourceId()); + Assertions.assertEquals("fqpte", model.writeAccessResourceId()); + Assertions.assertEquals(LinkedServiceEntityStatus.UPDATING, model.provisioningState()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - LinkedServiceInner model = new LinkedServiceInner().withTags(mapOf("azt", "ktsthsucocmny")) - .withResourceId("idybyxczf") - .withWriteAccessResourceId("haaxdbabphl") - .withProvisioningState(LinkedServiceEntityStatus.PROVISIONING_ACCOUNT); + LinkedServiceInner model = new LinkedServiceInner() + .withTags(mapOf("swjdkirso", "ypyqrimzinp", "soifiyipjxsqw", "dqxhcrmnohjtckwh", "bznorcjxvsnby", "gr", + "cyshurzafbljjgp", "qabnmoc")) + .withResourceId("eiachboosflnr") + .withWriteAccessResourceId("fqpte") + .withProvisioningState(LinkedServiceEntityStatus.UPDATING); model = BinaryData.fromObject(model).toObject(LinkedServiceInner.class); - Assertions.assertEquals("ktsthsucocmny", model.tags().get("azt")); - Assertions.assertEquals("idybyxczf", model.resourceId()); - Assertions.assertEquals("haaxdbabphl", model.writeAccessResourceId()); - Assertions.assertEquals(LinkedServiceEntityStatus.PROVISIONING_ACCOUNT, model.provisioningState()); + Assertions.assertEquals("ypyqrimzinp", model.tags().get("swjdkirso")); + Assertions.assertEquals("eiachboosflnr", model.resourceId()); + Assertions.assertEquals("fqpte", model.writeAccessResourceId()); + Assertions.assertEquals(LinkedServiceEntityStatus.UPDATING, model.provisioningState()); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServiceListResultTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServiceListResultTests.java index c02e8f9b63bc..310f04aa9cbd 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServiceListResultTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServiceListResultTests.java @@ -17,29 +17,37 @@ public final class LinkedServiceListResultTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { LinkedServiceListResult model = BinaryData.fromString( - "{\"value\":[{\"properties\":{\"resourceId\":\"aepdkzjanc\",\"writeAccessResourceId\":\"rhdwbavxbniw\",\"provisioningState\":\"Deleting\"},\"tags\":{\"ytxhp\":\"tsdbpgn\"},\"id\":\"xbzpfzab\",\"name\":\"lcuhxwtctyqiklb\",\"type\":\"ovplw\"},{\"properties\":{\"resourceId\":\"hvgyuguosvmk\",\"writeAccessResourceId\":\"sxqu\",\"provisioningState\":\"Succeeded\"},\"tags\":{\"lpvlopw\":\"gmgsxnkjzkde\"},\"id\":\"yighxpk\",\"name\":\"wzbaiue\",\"type\":\"baumnyqupedeoj\"}]}") + "{\"value\":[{\"properties\":{\"resourceId\":\"c\",\"writeAccessResourceId\":\"ierhhbcsglummaj\",\"provisioningState\":\"Deleting\"},\"tags\":{\"jionpimexgstxgc\":\"xobnbdxkqpxok\"},\"id\":\"odgmaajrmvdjwz\",\"name\":\"lovmclwhijcoe\",\"type\":\"ctbzaq\"},{\"properties\":{\"resourceId\":\"sycbkbfk\",\"writeAccessResourceId\":\"kdkexxp\",\"provisioningState\":\"Succeeded\"},\"tags\":{\"vpmouexhdzxib\":\"axcfjpgddtocjjx\",\"wndeicbtwnp\":\"eojnxqbzvddn\",\"hcffcyddglmjthjq\":\"aoqvuh\",\"hix\":\"wpyeicxmqciwqvh\"},\"id\":\"igdtopbob\",\"name\":\"og\",\"type\":\"m\"},{\"properties\":{\"resourceId\":\"u\",\"writeAccessResourceId\":\"a\",\"provisioningState\":\"Deleting\"},\"tags\":{\"kftutqxlngxlefg\":\"yvvtpgvdfgio\",\"rvqdra\":\"gnxkrxdqmidtth\",\"skanyk\":\"hjybigehoqfbo\"},\"id\":\"zlcuiywgqywgndrv\",\"name\":\"nhzgpphrcgyn\",\"type\":\"ocpecfvmmco\"}]}") .toObject(LinkedServiceListResult.class); - Assertions.assertEquals("tsdbpgn", model.value().get(0).tags().get("ytxhp")); - Assertions.assertEquals("aepdkzjanc", model.value().get(0).resourceId()); - Assertions.assertEquals("rhdwbavxbniw", model.value().get(0).writeAccessResourceId()); + Assertions.assertEquals("xobnbdxkqpxok", model.value().get(0).tags().get("jionpimexgstxgc")); + Assertions.assertEquals("c", model.value().get(0).resourceId()); + Assertions.assertEquals("ierhhbcsglummaj", model.value().get(0).writeAccessResourceId()); Assertions.assertEquals(LinkedServiceEntityStatus.DELETING, model.value().get(0).provisioningState()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { LinkedServiceListResult model = new LinkedServiceListResult().withValue(Arrays.asList( - new LinkedServiceInner().withTags(mapOf("ytxhp", "tsdbpgn")) - .withResourceId("aepdkzjanc") - .withWriteAccessResourceId("rhdwbavxbniw") + new LinkedServiceInner().withTags(mapOf("jionpimexgstxgc", "xobnbdxkqpxok")) + .withResourceId("c") + .withWriteAccessResourceId("ierhhbcsglummaj") .withProvisioningState(LinkedServiceEntityStatus.DELETING), - new LinkedServiceInner().withTags(mapOf("lpvlopw", "gmgsxnkjzkde")) - .withResourceId("hvgyuguosvmk") - .withWriteAccessResourceId("sxqu") - .withProvisioningState(LinkedServiceEntityStatus.SUCCEEDED))); + new LinkedServiceInner() + .withTags(mapOf("vpmouexhdzxib", "axcfjpgddtocjjx", "wndeicbtwnp", "eojnxqbzvddn", "hcffcyddglmjthjq", + "aoqvuh", "hix", "wpyeicxmqciwqvh")) + .withResourceId("sycbkbfk") + .withWriteAccessResourceId("kdkexxp") + .withProvisioningState(LinkedServiceEntityStatus.SUCCEEDED), + new LinkedServiceInner() + .withTags( + mapOf("kftutqxlngxlefg", "yvvtpgvdfgio", "rvqdra", "gnxkrxdqmidtth", "skanyk", "hjybigehoqfbo")) + .withResourceId("u") + .withWriteAccessResourceId("a") + .withProvisioningState(LinkedServiceEntityStatus.DELETING))); model = BinaryData.fromObject(model).toObject(LinkedServiceListResult.class); - Assertions.assertEquals("tsdbpgn", model.value().get(0).tags().get("ytxhp")); - Assertions.assertEquals("aepdkzjanc", model.value().get(0).resourceId()); - Assertions.assertEquals("rhdwbavxbniw", model.value().get(0).writeAccessResourceId()); + Assertions.assertEquals("xobnbdxkqpxok", model.value().get(0).tags().get("jionpimexgstxgc")); + Assertions.assertEquals("c", model.value().get(0).resourceId()); + Assertions.assertEquals("ierhhbcsglummaj", model.value().get(0).writeAccessResourceId()); Assertions.assertEquals(LinkedServiceEntityStatus.DELETING, model.value().get(0).provisioningState()); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicePropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicePropertiesTests.java index 1921880c37b5..d9655c34abc1 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicePropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicePropertiesTests.java @@ -14,21 +14,21 @@ public final class LinkedServicePropertiesTests { public void testDeserialize() throws Exception { LinkedServiceProperties model = BinaryData .fromString( - "{\"resourceId\":\"ibx\",\"writeAccessResourceId\":\"wbhqwal\",\"provisioningState\":\"Updating\"}") + "{\"resourceId\":\"hbzhfepg\",\"writeAccessResourceId\":\"qex\",\"provisioningState\":\"Updating\"}") .toObject(LinkedServiceProperties.class); - Assertions.assertEquals("ibx", model.resourceId()); - Assertions.assertEquals("wbhqwal", model.writeAccessResourceId()); + Assertions.assertEquals("hbzhfepg", model.resourceId()); + Assertions.assertEquals("qex", model.writeAccessResourceId()); Assertions.assertEquals(LinkedServiceEntityStatus.UPDATING, model.provisioningState()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - LinkedServiceProperties model = new LinkedServiceProperties().withResourceId("ibx") - .withWriteAccessResourceId("wbhqwal") + LinkedServiceProperties model = new LinkedServiceProperties().withResourceId("hbzhfepg") + .withWriteAccessResourceId("qex") .withProvisioningState(LinkedServiceEntityStatus.UPDATING); model = BinaryData.fromObject(model).toObject(LinkedServiceProperties.class); - Assertions.assertEquals("ibx", model.resourceId()); - Assertions.assertEquals("wbhqwal", model.writeAccessResourceId()); + Assertions.assertEquals("hbzhfepg", model.resourceId()); + Assertions.assertEquals("qex", model.writeAccessResourceId()); Assertions.assertEquals(LinkedServiceEntityStatus.UPDATING, model.provisioningState()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesCreateOrUpdateMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesCreateOrUpdateMockTests.java index 8aa374bd1815..d6ae94e707f5 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesCreateOrUpdateMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesCreateOrUpdateMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.LinkedService; @@ -24,27 +24,27 @@ public final class LinkedServicesCreateOrUpdateMockTests { @Test public void testCreateOrUpdate() throws Exception { String responseStr - = "{\"properties\":{\"resourceId\":\"psw\",\"writeAccessResourceId\":\"mvkhlggd\",\"provisioningState\":\"Succeeded\"},\"tags\":{\"jfpgpicrmn\":\"qkzszuwiwtglxxh\",\"mqgjsxvpq\":\"hr\",\"bakclacjfrnxous\":\"bfrmbodthsqqgvri\"},\"id\":\"au\",\"name\":\"lwvsgm\",\"type\":\"ohqfzizv\"}"; + = "{\"properties\":{\"resourceId\":\"n\",\"writeAccessResourceId\":\"xjawrt\",\"provisioningState\":\"Succeeded\"},\"tags\":{\"vnekhenlusfnrdtj\":\"yccxlzhcox\",\"ttgepuslvyjtcv\":\"txrdcqtjvi\"},\"id\":\"wkasiziesf\",\"name\":\"ughtuqfecjxeygtu\",\"type\":\"xu\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); LinkedService response = manager.linkedServices() - .define("yp") - .withExistingWorkspace("aglqivbgkcvkh", "zvuqdflvon") - .withTags(mapOf("fgpikqm", "bgqjxgpnrhgo")) - .withResourceId("ubcpzgpxti") - .withWriteAccessResourceId("j") - .withProvisioningState(LinkedServiceEntityStatus.PROVISIONING_ACCOUNT) + .define("obkauxofsh") + .withExistingWorkspace("c", "uahokq") + .withTags(mapOf("gsnnf", "fgf", "coc", "yetefyp", "urmlmuo", "fjgtixrjvzuy")) + .withResourceId("hwpnulaiywzejywh") + .withWriteAccessResourceId("wkojpllndnpd") + .withProvisioningState(LinkedServiceEntityStatus.UPDATING) .create(); - Assertions.assertEquals("qkzszuwiwtglxxh", response.tags().get("jfpgpicrmn")); - Assertions.assertEquals("psw", response.resourceId()); - Assertions.assertEquals("mvkhlggd", response.writeAccessResourceId()); + Assertions.assertEquals("yccxlzhcox", response.tags().get("vnekhenlusfnrdtj")); + Assertions.assertEquals("n", response.resourceId()); + Assertions.assertEquals("xjawrt", response.writeAccessResourceId()); Assertions.assertEquals(LinkedServiceEntityStatus.SUCCEEDED, response.provisioningState()); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesDeleteMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesDeleteMockTests.java index e12a213a1bd0..dcbd77e0b1a7 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesDeleteMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesDeleteMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.LinkedService; @@ -22,21 +22,21 @@ public final class LinkedServicesDeleteMockTests { @Test public void testDelete() throws Exception { String responseStr - = "{\"properties\":{\"resourceId\":\"mjjyuojq\",\"writeAccessResourceId\":\"baxk\",\"provisioningState\":\"Succeeded\"},\"tags\":{\"jkwrusnkq\":\"nlb\",\"hdenxaulk\":\"hsyrqunj\",\"xuckpggqoweyir\":\"akdkifmjnnawtqab\"},\"id\":\"hlisngw\",\"name\":\"lqqmpiz\",\"type\":\"uwnpqxpxiwfcng\"}"; + = "{\"properties\":{\"resourceId\":\"dibgqjxgpnrhgov\",\"writeAccessResourceId\":\"pikqmh\",\"provisioningState\":\"Succeeded\"},\"tags\":{\"qzdfuydzvkfvxcn\":\"rmzvupo\",\"psw\":\"mx\",\"gdhbe\":\"kmvkhl\"},\"id\":\"zqkzszuwi\",\"name\":\"tglxx\",\"type\":\"ljfp\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - LinkedService response - = manager.linkedServices().delete("bmhyreeudz", "av", "pdqmjxlyyzglgouw", com.azure.core.util.Context.NONE); + LinkedService response = manager.linkedServices() + .delete("lqivbgkcv", "hpzvuqdflvoniyp", "pubcpzgpxtivhjk", com.azure.core.util.Context.NONE); - Assertions.assertEquals("nlb", response.tags().get("jkwrusnkq")); - Assertions.assertEquals("mjjyuojq", response.resourceId()); - Assertions.assertEquals("baxk", response.writeAccessResourceId()); + Assertions.assertEquals("rmzvupo", response.tags().get("qzdfuydzvkfvxcn")); + Assertions.assertEquals("dibgqjxgpnrhgov", response.resourceId()); + Assertions.assertEquals("pikqmh", response.writeAccessResourceId()); Assertions.assertEquals(LinkedServiceEntityStatus.SUCCEEDED, response.provisioningState()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesGetWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesGetWithResponseMockTests.java index cc7e7adb9e22..ea01d54b8a76 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesGetWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesGetWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.LinkedService; @@ -22,22 +22,22 @@ public final class LinkedServicesGetWithResponseMockTests { @Test public void testGetWithResponse() throws Exception { String responseStr - = "{\"properties\":{\"resourceId\":\"atzv\",\"writeAccessResourceId\":\"glbyvi\",\"provisioningState\":\"Updating\"},\"tags\":{\"fbkgozxwopdby\":\"rxkjzwrgxffmshk\",\"zqaclna\":\"p\"},\"id\":\"xbiygnugjknfsmf\",\"name\":\"ttuxuuyilflqoiqu\",\"type\":\"rehmr\"}"; + = "{\"properties\":{\"resourceId\":\"rnxousxauzlwvsg\",\"writeAccessResourceId\":\"ohqfzizv\",\"provisioningState\":\"Updating\"},\"tags\":{\"mribiat\":\"jsvthnwpzteko\",\"zcugswvxwlmzqw\":\"gplucfotangcfhny\",\"cvclxynpdk\":\"vtxnjmxmcuqud\",\"neiknpg\":\"gfabuiyjibuzphdu\"},\"id\":\"xgjiuqh\",\"name\":\"btozipqwje\",\"type\":\"mur\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); LinkedService response = manager.linkedServices() - .getWithResponse("saasiixtmkzj", "kv", "irhgfgrwsdp", com.azure.core.util.Context.NONE) + .getWithResponse("picrmnzhrgmqgjsx", "pqcbfrmbodthsq", "gvriibakclac", com.azure.core.util.Context.NONE) .getValue(); - Assertions.assertEquals("rxkjzwrgxffmshk", response.tags().get("fbkgozxwopdby")); - Assertions.assertEquals("atzv", response.resourceId()); - Assertions.assertEquals("glbyvi", response.writeAccessResourceId()); + Assertions.assertEquals("jsvthnwpzteko", response.tags().get("mribiat")); + Assertions.assertEquals("rnxousxauzlwvsg", response.resourceId()); + Assertions.assertEquals("ohqfzizv", response.writeAccessResourceId()); Assertions.assertEquals(LinkedServiceEntityStatus.UPDATING, response.provisioningState()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesListByWorkspaceMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesListByWorkspaceMockTests.java index c3737d885ea1..ee55a5c65b90 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesListByWorkspaceMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedServicesListByWorkspaceMockTests.java @@ -7,8 +7,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.LinkedService; @@ -23,21 +23,21 @@ public final class LinkedServicesListByWorkspaceMockTests { @Test public void testListByWorkspace() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"resourceId\":\"njle\",\"writeAccessResourceId\":\"xsmrpddouifamow\",\"provisioningState\":\"Deleting\"},\"tags\":{\"tmaaj\":\"knlqwzdvpiwhxqsz\",\"bmzyospsps\":\"uhuxylrjvmtyg\",\"fkyjpmspbpssdfpp\":\"c\"},\"id\":\"ogtieyujtvczkcny\",\"name\":\"rxmunjdxvgln\",\"type\":\"vxlx\"}]}"; + = "{\"value\":[{\"properties\":{\"resourceId\":\"cgwgcloxoebqinji\",\"writeAccessResourceId\":\"wjfuj\",\"provisioningState\":\"Deleting\"},\"tags\":{\"filkmkkholv\":\"bahhpzpofoiyjw\",\"ukyefchnmnahmnxh\":\"ndviauogphuartvt\",\"fifhxwrsnew\":\"xjqirwrweoox\",\"sycxhxzgaz\":\"ozqvbubqmam\"},\"id\":\"taboidvmf\",\"name\":\"hppubowsepdfgkmt\",\"type\":\"herngb\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response - = manager.linkedServices().listByWorkspace("jhvsujztczyt", "jtwhauunf", com.azure.core.util.Context.NONE); + = manager.linkedServices().listByWorkspace("xxgewpk", "vqylkmqpzoyhl", com.azure.core.util.Context.NONE); - Assertions.assertEquals("knlqwzdvpiwhxqsz", response.iterator().next().tags().get("tmaaj")); - Assertions.assertEquals("njle", response.iterator().next().resourceId()); - Assertions.assertEquals("xsmrpddouifamow", response.iterator().next().writeAccessResourceId()); + Assertions.assertEquals("bahhpzpofoiyjw", response.iterator().next().tags().get("filkmkkholv")); + Assertions.assertEquals("cgwgcloxoebqinji", response.iterator().next().resourceId()); + Assertions.assertEquals("wjfuj", response.iterator().next().writeAccessResourceId()); Assertions.assertEquals(LinkedServiceEntityStatus.DELETING, response.iterator().next().provisioningState()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsCreateOrUpdateWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsCreateOrUpdateWithResponseMockTests.java index c1bcb4df7e9e..d48b9a981fa2 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsCreateOrUpdateWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsCreateOrUpdateWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.DataSourceType; @@ -23,21 +23,21 @@ public final class LinkedStorageAccountsCreateOrUpdateWithResponseMockTests { @Test public void testCreateOrUpdateWithResponse() throws Exception { String responseStr - = "{\"properties\":{\"dataSourceType\":\"Alerts\",\"storageAccountIds\":[\"k\",\"jqirwrw\",\"ooxf\",\"i\"]},\"id\":\"hx\",\"name\":\"rsnewmozqvbubqma\",\"type\":\"hsycxhxzgaz\"}"; + = "{\"properties\":{\"dataSourceType\":\"Query\",\"storageAccountIds\":[\"qogsfikayian\"]},\"id\":\"haru\",\"name\":\"t\",\"type\":\"iqxf\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); LinkedStorageAccountsResource response = manager.linkedStorageAccounts() .define(DataSourceType.QUERY) - .withExistingWorkspace("jipnwj", "ujqlafcbahh") - .withStorageAccountIds(Arrays.asList("iyjwpfilkmkkho")) + .withExistingWorkspace("dirazf", "xejw") + .withStorageAccountIds(Arrays.asList("tmvcop", "xcmjurbu")) .create(); - Assertions.assertEquals("k", response.storageAccountIds().get(0)); + Assertions.assertEquals("qogsfikayian", response.storageAccountIds().get(0)); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsDeleteWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsDeleteWithResponseMockTests.java index 40493a52e050..8e903ac007f6 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsDeleteWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsDeleteWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.DataSourceType; @@ -26,10 +26,10 @@ public void testDeleteWithResponse() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); manager.linkedStorageAccounts() - .deleteWithResponse("xmmkjs", "thnwpzte", DataSourceType.QUERY, com.azure.core.util.Context.NONE); + .deleteWithResponse("cbuewmrswnjlxuz", "hwpusxj", DataSourceType.QUERY, com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsGetWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsGetWithResponseMockTests.java index d10dd144a0b4..c573d8bbe878 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsGetWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsGetWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.DataSourceType; @@ -22,20 +22,19 @@ public final class LinkedStorageAccountsGetWithResponseMockTests { @Test public void testGetWithResponse() throws Exception { String responseStr - = "{\"properties\":{\"dataSourceType\":\"Query\",\"storageAccountIds\":[\"wvxwlmzqwmvt\",\"njmxmcuqudtcvcl\",\"ynpdkvgfab\"]},\"id\":\"iyji\",\"name\":\"uzphdugnei\",\"type\":\"n\"}"; + = "{\"properties\":{\"dataSourceType\":\"AzureWatson\",\"storageAccountIds\":[\"fepbnwgfmxjgc\",\"bjb\",\"dlfgtdysnaq\"]},\"id\":\"flq\",\"name\":\"ctqhamzjrwdk\",\"type\":\"zeqyjleziun\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); LinkedStorageAccountsResource response = manager.linkedStorageAccounts() - .getWithResponse("vmribiat", "gplucfotangcfhny", DataSourceType.CUSTOM_LOGS, - com.azure.core.util.Context.NONE) + .getWithResponse("qehgpd", "hzjqatucoige", DataSourceType.ALERTS, com.azure.core.util.Context.NONE) .getValue(); - Assertions.assertEquals("wvxwlmzqwmvt", response.storageAccountIds().get(0)); + Assertions.assertEquals("fepbnwgfmxjgc", response.storageAccountIds().get(0)); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsListByWorkspaceMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsListByWorkspaceMockTests.java index aa5e03209483..1653382012f8 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsListByWorkspaceMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsListByWorkspaceMockTests.java @@ -7,8 +7,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.LinkedStorageAccountsResource; @@ -22,18 +22,18 @@ public final class LinkedStorageAccountsListByWorkspaceMockTests { @Test public void testListByWorkspace() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"dataSourceType\":\"Query\",\"storageAccountIds\":[\"d\",\"urrxxgewpktv\",\"ylkmqp\"]},\"id\":\"o\",\"name\":\"hlfbcgwgc\",\"type\":\"oxoebqi\"}]}"; + = "{\"value\":[{\"properties\":{\"dataSourceType\":\"AzureWatson\",\"storageAccountIds\":[\"nseqacjjvp\",\"lguooqjagmd\",\"tg\",\"eiookjbsah\"]},\"id\":\"tdtpdelqacslmo\",\"name\":\"oebn\",\"type\":\"xofvcjk\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response - = manager.linkedStorageAccounts().listByWorkspace("gox", "jiuqhibtozi", com.azure.core.util.Context.NONE); + = manager.linkedStorageAccounts().listByWorkspace("xdfzantkw", "eg", com.azure.core.util.Context.NONE); - Assertions.assertEquals("d", response.iterator().next().storageAccountIds().get(0)); + Assertions.assertEquals("nseqacjjvp", response.iterator().next().storageAccountIds().get(0)); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsListResultTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsListResultTests.java index dd4162a279cc..72e9c44c5402 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsListResultTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsListResultTests.java @@ -14,21 +14,18 @@ public final class LinkedStorageAccountsListResultTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { LinkedStorageAccountsListResult model = BinaryData.fromString( - "{\"value\":[{\"properties\":{\"dataSourceType\":\"AzureWatson\",\"storageAccountIds\":[\"vce\",\"vei\",\"ovnotyfjfcnjbkcn\",\"dhbt\"]},\"id\":\"kphywpnvjto\",\"name\":\"nermcl\",\"type\":\"plpho\"},{\"properties\":{\"dataSourceType\":\"AzureWatson\",\"storageAccountIds\":[\"pabgyeps\",\"jta\"]},\"id\":\"qugxywpmueefjzwf\",\"name\":\"kqujidsuyono\",\"type\":\"glaocq\"},{\"properties\":{\"dataSourceType\":\"AzureWatson\",\"storageAccountIds\":[\"g\",\"udxytlmoyrx\",\"wfudwpzntxhdzhl\",\"qj\"]},\"id\":\"hckfrlhrx\",\"name\":\"bkyvp\",\"type\":\"ca\"},{\"properties\":{\"dataSourceType\":\"CustomLogs\",\"storageAccountIds\":[\"zka\"]},\"id\":\"kuwbcrnwb\",\"name\":\"ehhseyvjusrts\",\"type\":\"hspkdeemao\"}]}") + "{\"value\":[{\"properties\":{\"dataSourceType\":\"CustomLogs\",\"storageAccountIds\":[\"ipheoflokeyyien\",\"bdlwtgrhpdjpj\",\"masxazjpqyegu\",\"lhbxxhejjzzvdud\"]},\"id\":\"wdslfhotwmcy\",\"name\":\"pwlbjnpg\",\"type\":\"cftadeh\"},{\"properties\":{\"dataSourceType\":\"Alerts\",\"storageAccountIds\":[\"fsoppusuesnzw\",\"ej\"]},\"id\":\"avo\",\"name\":\"xzdmohctb\",\"type\":\"vudwx\"}]}") .toObject(LinkedStorageAccountsListResult.class); - Assertions.assertEquals("vce", model.value().get(0).storageAccountIds().get(0)); + Assertions.assertEquals("ipheoflokeyyien", model.value().get(0).storageAccountIds().get(0)); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { LinkedStorageAccountsListResult model = new LinkedStorageAccountsListResult().withValue(Arrays.asList( - new LinkedStorageAccountsResourceInner() - .withStorageAccountIds(Arrays.asList("vce", "vei", "ovnotyfjfcnjbkcn", "dhbt")), - new LinkedStorageAccountsResourceInner().withStorageAccountIds(Arrays.asList("pabgyeps", "jta")), - new LinkedStorageAccountsResourceInner() - .withStorageAccountIds(Arrays.asList("g", "udxytlmoyrx", "wfudwpzntxhdzhl", "qj")), - new LinkedStorageAccountsResourceInner().withStorageAccountIds(Arrays.asList("zka")))); + new LinkedStorageAccountsResourceInner().withStorageAccountIds( + Arrays.asList("ipheoflokeyyien", "bdlwtgrhpdjpj", "masxazjpqyegu", "lhbxxhejjzzvdud")), + new LinkedStorageAccountsResourceInner().withStorageAccountIds(Arrays.asList("fsoppusuesnzw", "ej")))); model = BinaryData.fromObject(model).toObject(LinkedStorageAccountsListResult.class); - Assertions.assertEquals("vce", model.value().get(0).storageAccountIds().get(0)); + Assertions.assertEquals("ipheoflokeyyien", model.value().get(0).storageAccountIds().get(0)); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsPropertiesTests.java index 9832736ff713..0646d7918b9a 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsPropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsPropertiesTests.java @@ -12,17 +12,17 @@ public final class LinkedStorageAccountsPropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - LinkedStorageAccountsProperties model - = BinaryData.fromString("{\"dataSourceType\":\"AzureWatson\",\"storageAccountIds\":[\"sx\"]}") - .toObject(LinkedStorageAccountsProperties.class); - Assertions.assertEquals("sx", model.storageAccountIds().get(0)); + LinkedStorageAccountsProperties model = BinaryData.fromString( + "{\"dataSourceType\":\"Query\",\"storageAccountIds\":[\"nwsubisnj\",\"mpmngnzscxaqwoo\",\"hcbonqvpkvlr\"]}") + .toObject(LinkedStorageAccountsProperties.class); + Assertions.assertEquals("nwsubisnj", model.storageAccountIds().get(0)); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - LinkedStorageAccountsProperties model - = new LinkedStorageAccountsProperties().withStorageAccountIds(Arrays.asList("sx")); + LinkedStorageAccountsProperties model = new LinkedStorageAccountsProperties() + .withStorageAccountIds(Arrays.asList("nwsubisnj", "mpmngnzscxaqwoo", "hcbonqvpkvlr")); model = BinaryData.fromObject(model).toObject(LinkedStorageAccountsProperties.class); - Assertions.assertEquals("sx", model.storageAccountIds().get(0)); + Assertions.assertEquals("nwsubisnj", model.storageAccountIds().get(0)); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsResourceInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsResourceInnerTests.java index 66a4b51c423d..57ce7268faaf 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsResourceInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LinkedStorageAccountsResourceInnerTests.java @@ -13,16 +13,16 @@ public final class LinkedStorageAccountsResourceInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { LinkedStorageAccountsResourceInner model = BinaryData.fromString( - "{\"properties\":{\"dataSourceType\":\"Query\",\"storageAccountIds\":[\"hsmtxpsiebtfhvp\",\"sapskr\",\"qmhjjdhtld\"]},\"id\":\"kyzxuutk\",\"name\":\"cwscwsvlx\",\"type\":\"togt\"}") + "{\"properties\":{\"dataSourceType\":\"Ingestion\",\"storageAccountIds\":[\"zevgb\",\"qjqabcypmivkwl\",\"uvcc\"]},\"id\":\"wnfnbacf\",\"name\":\"onlebxetqgtzxdpn\",\"type\":\"bqqwxrj\"}") .toObject(LinkedStorageAccountsResourceInner.class); - Assertions.assertEquals("hsmtxpsiebtfhvp", model.storageAccountIds().get(0)); + Assertions.assertEquals("zevgb", model.storageAccountIds().get(0)); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { LinkedStorageAccountsResourceInner model = new LinkedStorageAccountsResourceInner() - .withStorageAccountIds(Arrays.asList("hsmtxpsiebtfhvp", "sapskr", "qmhjjdhtld")); + .withStorageAccountIds(Arrays.asList("zevgb", "qjqabcypmivkwl", "uvcc")); model = BinaryData.fromObject(model).toObject(LinkedStorageAccountsResourceInner.class); - Assertions.assertEquals("hsmtxpsiebtfhvp", model.storageAccountIds().get(0)); + Assertions.assertEquals("zevgb", model.storageAccountIds().get(0)); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackInnerTests.java index f562a725ec27..ddaba19b2e18 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackInnerTests.java @@ -14,19 +14,19 @@ public final class LogAnalyticsQueryPackInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { LogAnalyticsQueryPackInner model = BinaryData.fromString( - "{\"properties\":{\"queryPackId\":\"ijbpzvgnwzsymgl\",\"timeCreated\":\"2021-09-05T16:59:27Z\",\"timeModified\":\"2021-02-27T08:20:44Z\",\"provisioningState\":\"ohdbihanufh\"},\"location\":\"cbjy\",\"tags\":{\"xwczbyscnp\":\"ithxqhabifpi\"},\"id\":\"x\",\"name\":\"hiv\",\"type\":\"qniwbybrkxvdumj\"}") + "{\"properties\":{\"queryPackId\":\"vlvqhjkbegi\",\"timeCreated\":\"2021-03-26T15:32:51Z\",\"timeModified\":\"2021-02-11T17:20:18Z\",\"provisioningState\":\"ebwwaloayqc\"},\"location\":\"rtzju\",\"tags\":{\"txon\":\"yzm\",\"rknftguvriuhprwm\":\"mtsavjcbpwxqp\",\"bexrmcq\":\"yvxqtayriwwroy\"},\"id\":\"bycnojvkn\",\"name\":\"e\",\"type\":\"qsgzvahapj\"}") .toObject(LogAnalyticsQueryPackInner.class); - Assertions.assertEquals("cbjy", model.location()); - Assertions.assertEquals("ithxqhabifpi", model.tags().get("xwczbyscnp")); + Assertions.assertEquals("rtzju", model.location()); + Assertions.assertEquals("yzm", model.tags().get("txon")); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - LogAnalyticsQueryPackInner model - = new LogAnalyticsQueryPackInner().withLocation("cbjy").withTags(mapOf("xwczbyscnp", "ithxqhabifpi")); + LogAnalyticsQueryPackInner model = new LogAnalyticsQueryPackInner().withLocation("rtzju") + .withTags(mapOf("txon", "yzm", "rknftguvriuhprwm", "mtsavjcbpwxqp", "bexrmcq", "yvxqtayriwwroy")); model = BinaryData.fromObject(model).toObject(LogAnalyticsQueryPackInner.class); - Assertions.assertEquals("cbjy", model.location()); - Assertions.assertEquals("ithxqhabifpi", model.tags().get("xwczbyscnp")); + Assertions.assertEquals("rtzju", model.location()); + Assertions.assertEquals("yzm", model.tags().get("txon")); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackListResultTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackListResultTests.java index 9bbc678f07ca..2eeff82cfbe9 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackListResultTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackListResultTests.java @@ -16,27 +16,26 @@ public final class LogAnalyticsQueryPackListResultTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { LogAnalyticsQueryPackListResult model = BinaryData.fromString( - "{\"value\":[{\"properties\":{\"queryPackId\":\"hq\",\"timeCreated\":\"2021-08-01T15:29:09Z\",\"timeModified\":\"2021-10-26T10:24:19Z\",\"provisioningState\":\"ybczmehmtzo\"},\"location\":\"bsphrupidgsybbe\",\"tags\":{\"xaobhdxbmtqioqjz\":\"hoycm\"},\"id\":\"htbmuf\",\"name\":\"ownoizhw\",\"type\":\"rxybqsoq\"},{\"properties\":{\"queryPackId\":\"gkdmb\",\"timeCreated\":\"2021-12-03T16:46:54Z\",\"timeModified\":\"2021-03-24T06:15:27Z\",\"provisioningState\":\"c\"},\"location\":\"fp\",\"tags\":{\"qqjnqgl\":\"rbt\",\"foooj\":\"qgn\",\"saagdf\":\"wifsq\"},\"id\":\"glzlhjxrifkwmrv\",\"name\":\"tsizntocipaoua\",\"type\":\"psqucmpoyf\"},{\"properties\":{\"queryPackId\":\"fogknygjofjdde\",\"timeCreated\":\"2020-12-22T06:05:56Z\",\"timeModified\":\"2021-06-07T09:35:57Z\",\"provisioningState\":\"pewnw\"},\"location\":\"eitjz\",\"tags\":{\"hs\":\"usarhmofc\",\"xukcdmpar\":\"yurkdtmlxhekuksj\"},\"id\":\"ryuanzwuxzdxtay\",\"name\":\"lhmwhfpmrqobm\",\"type\":\"u\"}],\"nextLink\":\"nryrtihf\"}") + "{\"value\":[{\"properties\":{\"queryPackId\":\"r\",\"timeCreated\":\"2021-06-09T13:42:27Z\",\"timeModified\":\"2021-10-13T05:34:59Z\",\"provisioningState\":\"omzlfmi\"},\"location\":\"wbnb\",\"tags\":{\"urqhaka\":\"dawkzbali\",\"xcug\":\"hashsfwxosow\",\"ovbvmeueciv\":\"cjooxdjebwpucwwf\",\"otwmcdyt\":\"hzceuojgjrwjue\"},\"id\":\"x\",\"name\":\"it\",\"type\":\"nrjawgqwg\"},{\"properties\":{\"queryPackId\":\"ni\",\"timeCreated\":\"2021-10-14T20:39:54Z\",\"timeModified\":\"2021-05-28T01:48:43Z\",\"provisioningState\":\"py\"},\"location\":\"klwndnhjdauwhv\",\"tags\":{\"xujznbmpowu\":\"zbtd\",\"lupj\":\"przqlveu\"},\"id\":\"khfxobbcswsrt\",\"name\":\"riplrbpbewtg\",\"type\":\"fgb\"}],\"nextLink\":\"gw\"}") .toObject(LogAnalyticsQueryPackListResult.class); - Assertions.assertEquals("bsphrupidgsybbe", model.value().get(0).location()); - Assertions.assertEquals("hoycm", model.value().get(0).tags().get("xaobhdxbmtqioqjz")); - Assertions.assertEquals("nryrtihf", model.nextLink()); + Assertions.assertEquals("wbnb", model.value().get(0).location()); + Assertions.assertEquals("dawkzbali", model.value().get(0).tags().get("urqhaka")); + Assertions.assertEquals("gw", model.nextLink()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { LogAnalyticsQueryPackListResult model = new LogAnalyticsQueryPackListResult().withValue(Arrays.asList( - new LogAnalyticsQueryPackInner().withLocation("bsphrupidgsybbe") - .withTags(mapOf("xaobhdxbmtqioqjz", "hoycm")), - new LogAnalyticsQueryPackInner().withLocation("fp") - .withTags(mapOf("qqjnqgl", "rbt", "foooj", "qgn", "saagdf", "wifsq")), - new LogAnalyticsQueryPackInner().withLocation("eitjz") - .withTags(mapOf("hs", "usarhmofc", "xukcdmpar", "yurkdtmlxhekuksj")))) - .withNextLink("nryrtihf"); + new LogAnalyticsQueryPackInner().withLocation("wbnb") + .withTags(mapOf("urqhaka", "dawkzbali", "xcug", "hashsfwxosow", "ovbvmeueciv", "cjooxdjebwpucwwf", + "otwmcdyt", "hzceuojgjrwjue")), + new LogAnalyticsQueryPackInner().withLocation("klwndnhjdauwhv") + .withTags(mapOf("xujznbmpowu", "zbtd", "lupj", "przqlveu")))) + .withNextLink("gw"); model = BinaryData.fromObject(model).toObject(LogAnalyticsQueryPackListResult.class); - Assertions.assertEquals("bsphrupidgsybbe", model.value().get(0).location()); - Assertions.assertEquals("hoycm", model.value().get(0).tags().get("xaobhdxbmtqioqjz")); - Assertions.assertEquals("nryrtihf", model.nextLink()); + Assertions.assertEquals("wbnb", model.value().get(0).location()); + Assertions.assertEquals("dawkzbali", model.value().get(0).tags().get("urqhaka")); + Assertions.assertEquals("gw", model.nextLink()); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackPropertiesTests.java index 0083d9b1c802..8519059f3572 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackPropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackPropertiesTests.java @@ -11,7 +11,7 @@ public final class LogAnalyticsQueryPackPropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { LogAnalyticsQueryPackProperties model = BinaryData.fromString( - "{\"queryPackId\":\"tfwvukxgaudc\",\"timeCreated\":\"2021-06-07T10:34:36Z\",\"timeModified\":\"2021-03-15T16:07:05Z\",\"provisioningState\":\"cnyejhkryhtnapcz\"}") + "{\"queryPackId\":\"hpvgqz\",\"timeCreated\":\"2021-01-17T14:10:43Z\",\"timeModified\":\"2021-03-29T21:57:57Z\",\"provisioningState\":\"jzlmw\"}") .toObject(LogAnalyticsQueryPackProperties.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryInnerTests.java index 06a46115ccdf..e9775cc4a340 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryInnerTests.java @@ -16,35 +16,37 @@ public final class LogAnalyticsQueryPackQueryInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { LogAnalyticsQueryPackQueryInner model = BinaryData.fromString( - "{\"properties\":{\"id\":\"qwpgrjbzn\",\"displayName\":\"rcjxvsnbyxqabn\",\"timeCreated\":\"2021-06-16T16:14:14Z\",\"timeModified\":\"2020-12-28T20:56:17Z\",\"author\":\"shurzafbljjgpbto\",\"description\":\"jmkljavbqidtqajz\",\"body\":\"ulpkudjkrl\",\"related\":{\"categories\":[\"hfepgzgqex\"],\"resourceTypes\":[\"c\",\"scpai\",\"rhhbcs\",\"l\"],\"solutions\":[\"a\",\"tjaodxobnb\"]},\"tags\":{\"mexgstxgcp\":[\"pxokajionp\"]},\"properties\":\"datagmaajrm\"},\"id\":\"jwzrl\",\"name\":\"mcl\",\"type\":\"ijcoejctb\"}") + "{\"properties\":{\"id\":\"bebrjcxerfuwuttt\",\"displayName\":\"fvjrbirphxepcy\",\"timeCreated\":\"2021-11-07T03:18:20Z\",\"timeModified\":\"2021-05-23T19:09:39Z\",\"author\":\"jky\",\"description\":\"j\",\"body\":\"uujqgidokgjljyo\",\"related\":{\"categories\":[\"ltbgsncghkj\",\"szzhbijhtxfvgxbf\",\"mxnehmp\",\"ec\"],\"resourceTypes\":[\"debfqkkrbmpukgri\",\"flz\",\"fbxzpuzycisp\",\"qzahmgkbrp\"],\"solutions\":[\"hibnuqqkpika\",\"rgvtqag\"]},\"tags\":{\"ttdbhrbnl\":[\"nhijggmebfsi\",\"rbu\",\"rcvpnazzmhjrunmp\"],\"czfc\":[\"kx\",\"yskpbhen\",\"tkcxywnytnrsy\",\"lqidyby\"]},\"properties\":\"dataaaxdbabphlwrq\"},\"id\":\"ktsthsucocmny\",\"name\":\"azt\",\"type\":\"bt\"}") .toObject(LogAnalyticsQueryPackQueryInner.class); - Assertions.assertEquals("rcjxvsnbyxqabn", model.displayName()); - Assertions.assertEquals("jmkljavbqidtqajz", model.description()); - Assertions.assertEquals("ulpkudjkrl", model.body()); - Assertions.assertEquals("hfepgzgqex", model.related().categories().get(0)); - Assertions.assertEquals("c", model.related().resourceTypes().get(0)); - Assertions.assertEquals("a", model.related().solutions().get(0)); - Assertions.assertEquals("pxokajionp", model.tags().get("mexgstxgcp").get(0)); + Assertions.assertEquals("fvjrbirphxepcy", model.displayName()); + Assertions.assertEquals("j", model.description()); + Assertions.assertEquals("uujqgidokgjljyo", model.body()); + Assertions.assertEquals("ltbgsncghkj", model.related().categories().get(0)); + Assertions.assertEquals("debfqkkrbmpukgri", model.related().resourceTypes().get(0)); + Assertions.assertEquals("hibnuqqkpika", model.related().solutions().get(0)); + Assertions.assertEquals("nhijggmebfsi", model.tags().get("ttdbhrbnl").get(0)); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - LogAnalyticsQueryPackQueryInner model = new LogAnalyticsQueryPackQueryInner().withDisplayName("rcjxvsnbyxqabn") - .withDescription("jmkljavbqidtqajz") - .withBody("ulpkudjkrl") - .withRelated(new LogAnalyticsQueryPackQueryPropertiesRelated().withCategories(Arrays.asList("hfepgzgqex")) - .withResourceTypes(Arrays.asList("c", "scpai", "rhhbcs", "l")) - .withSolutions(Arrays.asList("a", "tjaodxobnb"))) - .withTags(mapOf("mexgstxgcp", Arrays.asList("pxokajionp"))) - .withProperties("datagmaajrm"); + LogAnalyticsQueryPackQueryInner model = new LogAnalyticsQueryPackQueryInner().withDisplayName("fvjrbirphxepcy") + .withDescription("j") + .withBody("uujqgidokgjljyo") + .withRelated(new LogAnalyticsQueryPackQueryPropertiesRelated() + .withCategories(Arrays.asList("ltbgsncghkj", "szzhbijhtxfvgxbf", "mxnehmp", "ec")) + .withResourceTypes(Arrays.asList("debfqkkrbmpukgri", "flz", "fbxzpuzycisp", "qzahmgkbrp")) + .withSolutions(Arrays.asList("hibnuqqkpika", "rgvtqag"))) + .withTags(mapOf("ttdbhrbnl", Arrays.asList("nhijggmebfsi", "rbu", "rcvpnazzmhjrunmp"), "czfc", + Arrays.asList("kx", "yskpbhen", "tkcxywnytnrsy", "lqidyby"))) + .withProperties("dataaaxdbabphlwrq"); model = BinaryData.fromObject(model).toObject(LogAnalyticsQueryPackQueryInner.class); - Assertions.assertEquals("rcjxvsnbyxqabn", model.displayName()); - Assertions.assertEquals("jmkljavbqidtqajz", model.description()); - Assertions.assertEquals("ulpkudjkrl", model.body()); - Assertions.assertEquals("hfepgzgqex", model.related().categories().get(0)); - Assertions.assertEquals("c", model.related().resourceTypes().get(0)); - Assertions.assertEquals("a", model.related().solutions().get(0)); - Assertions.assertEquals("pxokajionp", model.tags().get("mexgstxgcp").get(0)); + Assertions.assertEquals("fvjrbirphxepcy", model.displayName()); + Assertions.assertEquals("j", model.description()); + Assertions.assertEquals("uujqgidokgjljyo", model.body()); + Assertions.assertEquals("ltbgsncghkj", model.related().categories().get(0)); + Assertions.assertEquals("debfqkkrbmpukgri", model.related().resourceTypes().get(0)); + Assertions.assertEquals("hibnuqqkpika", model.related().solutions().get(0)); + Assertions.assertEquals("nhijggmebfsi", model.tags().get("ttdbhrbnl").get(0)); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryListResultTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryListResultTests.java index bdf11fd483c3..6a9bbc95acaf 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryListResultTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryListResultTests.java @@ -17,67 +17,42 @@ public final class LogAnalyticsQueryPackQueryListResultTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { LogAnalyticsQueryPackQueryListResult model = BinaryData.fromString( - "{\"value\":[{\"properties\":{\"id\":\"yhuybbkpod\",\"displayName\":\"po\",\"timeCreated\":\"2021-05-29T14:24:22Z\",\"timeModified\":\"2021-09-25T10:25:19Z\",\"author\":\"amiheognarxz\",\"description\":\"heotusiv\",\"body\":\"evcciqihnhun\",\"related\":{\"categories\":[\"zrnf\",\"gxg\"],\"resourceTypes\":[\"emv\",\"zfkufubljofx\",\"eofjaeqjh\",\"jbasvmsmjqulngs\"],\"solutions\":[\"bybkzgcwrwclxx\",\"rljdouskcqv\",\"ocrcjdk\",\"tnhxbn\"]},\"tags\":{\"yqduujit\":[\"sqrglssainq\",\"jwnzlljfmp\",\"eebvmgxsab\"],\"nhutjeltmrldhugj\":[\"czdzev\",\"dhkrwpdappdsbdk\",\"wrwjfeu\"]},\"properties\":\"datadatqxhocdgeabl\"},\"id\":\"huticndvkao\",\"name\":\"yiftyhxhuro\",\"type\":\"tyxolniwpwc\"},{\"properties\":{\"id\":\"kgiawxklryplwck\",\"displayName\":\"asy\",\"timeCreated\":\"2021-10-21T22:29:11Z\",\"timeModified\":\"2021-07-26T02:42:45Z\",\"author\":\"sgcbac\",\"description\":\"ejk\",\"body\":\"tynqgoul\",\"related\":{\"categories\":[\"i\",\"wyqkgfgibm\",\"dgak\"],\"resourceTypes\":[\"rxybz\"],\"solutions\":[\"dqytbciqfouflmm\"]},\"tags\":{\"spwgcuertumkdosv\":[\"modmglougpb\",\"wtmutduq\",\"ta\"]},\"properties\":\"datahbmdgbbjfdd\"},\"id\":\"bmbexppbhtqqro\",\"name\":\"p\",\"type\":\"s\"},{\"properties\":{\"id\":\"qux\",\"displayName\":\"gjyjgzjaoyfhrtxi\",\"timeCreated\":\"2021-04-23T04:18:15Z\",\"timeModified\":\"2021-08-05T02:52:01Z\",\"author\":\"jysvl\",\"description\":\"uvfqawrlyxwj\",\"body\":\"cpr\",\"related\":{\"categories\":[\"xgjvtbv\"],\"resourceTypes\":[\"szdnr\",\"jq\"],\"solutions\":[\"muouqfp\",\"wzwbnguitn\",\"uizga\",\"x\"]},\"tags\":{\"idf\":[\"uckyf\",\"hr\"],\"pvkmijcmmxdcuf\":[\"wdzuhtymwisd\",\"fthwxmnteiwa\"],\"dwzjeiach\":[\"srp\",\"mzidnsezcxtb\",\"sgfyccsnew\"],\"pyqr\":[\"osfln\",\"osfqpteehzzv\"]},\"properties\":\"dataz\"},\"id\":\"pvswjdkirso\",\"name\":\"qxhcrmn\",\"type\":\"jtckwhdso\"}],\"nextLink\":\"yip\"}") + "{\"value\":[{\"properties\":{\"id\":\"nvudwtiukb\",\"displayName\":\"dng\",\"timeCreated\":\"2021-01-23T10:58:05Z\",\"timeModified\":\"2021-05-04T07:17:38Z\",\"author\":\"azyxoegukg\",\"description\":\"piu\",\"body\":\"gygev\",\"related\":{\"categories\":[\"yp\",\"rbpizc\",\"r\",\"j\"],\"resourceTypes\":[\"ydnfyhxdeoejz\"],\"solutions\":[\"ifsjttgzfbishcb\"]},\"tags\":{\"kix\":[\"deyeamdphagalpbu\",\"wgipwhono\",\"kgshwa\"],\"ttmrywnuzoqf\":[\"injep\"],\"oqqnwvlryav\":[\"yqzrnkcqvyxlw\",\"zlsico\"],\"szfkbe\":[\"heun\",\"mqhgyxzkonocuk\",\"klyaxuconu\"]},\"properties\":\"dataewrmjmwvvjektc\"},\"id\":\"enhwlrs\",\"name\":\"frzpwvlqdqgb\",\"type\":\"qylihkaetckt\"}],\"nextLink\":\"civfsnkymuctq\"}") .toObject(LogAnalyticsQueryPackQueryListResult.class); - Assertions.assertEquals("po", model.value().get(0).displayName()); - Assertions.assertEquals("heotusiv", model.value().get(0).description()); - Assertions.assertEquals("evcciqihnhun", model.value().get(0).body()); - Assertions.assertEquals("zrnf", model.value().get(0).related().categories().get(0)); - Assertions.assertEquals("emv", model.value().get(0).related().resourceTypes().get(0)); - Assertions.assertEquals("bybkzgcwrwclxx", model.value().get(0).related().solutions().get(0)); - Assertions.assertEquals("sqrglssainq", model.value().get(0).tags().get("yqduujit").get(0)); - Assertions.assertEquals("yip", model.nextLink()); + Assertions.assertEquals("dng", model.value().get(0).displayName()); + Assertions.assertEquals("piu", model.value().get(0).description()); + Assertions.assertEquals("gygev", model.value().get(0).body()); + Assertions.assertEquals("yp", model.value().get(0).related().categories().get(0)); + Assertions.assertEquals("ydnfyhxdeoejz", model.value().get(0).related().resourceTypes().get(0)); + Assertions.assertEquals("ifsjttgzfbishcb", model.value().get(0).related().solutions().get(0)); + Assertions.assertEquals("deyeamdphagalpbu", model.value().get(0).tags().get("kix").get(0)); + Assertions.assertEquals("civfsnkymuctq", model.nextLink()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - LogAnalyticsQueryPackQueryListResult model - = new LogAnalyticsQueryPackQueryListResult() - .withValue( - Arrays - .asList( - new LogAnalyticsQueryPackQueryInner().withDisplayName("po") - .withDescription("heotusiv") - .withBody("evcciqihnhun") - .withRelated(new LogAnalyticsQueryPackQueryPropertiesRelated() - .withCategories(Arrays.asList("zrnf", "gxg")) - .withResourceTypes( - Arrays.asList("emv", "zfkufubljofx", "eofjaeqjh", "jbasvmsmjqulngs")) - .withSolutions(Arrays.asList("bybkzgcwrwclxx", "rljdouskcqv", "ocrcjdk", "tnhxbn"))) - .withTags(mapOf("yqduujit", Arrays.asList("sqrglssainq", "jwnzlljfmp", "eebvmgxsab"), - "nhutjeltmrldhugj", Arrays.asList("czdzev", "dhkrwpdappdsbdk", "wrwjfeu"))) - .withProperties("datadatqxhocdgeabl"), - new LogAnalyticsQueryPackQueryInner().withDisplayName("asy") - .withDescription("ejk") - .withBody("tynqgoul") - .withRelated(new LogAnalyticsQueryPackQueryPropertiesRelated() - .withCategories(Arrays.asList("i", "wyqkgfgibm", "dgak")) - .withResourceTypes(Arrays.asList("rxybz")) - .withSolutions(Arrays.asList("dqytbciqfouflmm"))) - .withTags(mapOf("spwgcuertumkdosv", Arrays.asList("modmglougpb", "wtmutduq", "ta"))) - .withProperties("datahbmdgbbjfdd"), - new LogAnalyticsQueryPackQueryInner().withDisplayName("gjyjgzjaoyfhrtxi") - .withDescription("uvfqawrlyxwj") - .withBody("cpr") - .withRelated(new LogAnalyticsQueryPackQueryPropertiesRelated() - .withCategories(Arrays.asList("xgjvtbv")) - .withResourceTypes(Arrays.asList("szdnr", "jq")) - .withSolutions(Arrays.asList("muouqfp", "wzwbnguitn", "uizga", "x"))) - .withTags(mapOf("idf", Arrays.asList("uckyf", "hr"), "pvkmijcmmxdcuf", - Arrays.asList("wdzuhtymwisd", "fthwxmnteiwa"), "dwzjeiach", - Arrays.asList("srp", "mzidnsezcxtb", "sgfyccsnew"), "pyqr", - Arrays.asList("osfln", "osfqpteehzzv"))) - .withProperties("dataz"))) - .withNextLink("yip"); + LogAnalyticsQueryPackQueryListResult model = new LogAnalyticsQueryPackQueryListResult() + .withValue(Arrays.asList(new LogAnalyticsQueryPackQueryInner().withDisplayName("dng") + .withDescription("piu") + .withBody("gygev") + .withRelated(new LogAnalyticsQueryPackQueryPropertiesRelated() + .withCategories(Arrays.asList("yp", "rbpizc", "r", "j")) + .withResourceTypes(Arrays.asList("ydnfyhxdeoejz")) + .withSolutions(Arrays.asList("ifsjttgzfbishcb"))) + .withTags(mapOf("kix", Arrays.asList("deyeamdphagalpbu", "wgipwhono", "kgshwa"), "ttmrywnuzoqf", + Arrays.asList("injep"), "oqqnwvlryav", Arrays.asList("yqzrnkcqvyxlw", "zlsico"), "szfkbe", + Arrays.asList("heun", "mqhgyxzkonocuk", "klyaxuconu"))) + .withProperties("dataewrmjmwvvjektc"))) + .withNextLink("civfsnkymuctq"); model = BinaryData.fromObject(model).toObject(LogAnalyticsQueryPackQueryListResult.class); - Assertions.assertEquals("po", model.value().get(0).displayName()); - Assertions.assertEquals("heotusiv", model.value().get(0).description()); - Assertions.assertEquals("evcciqihnhun", model.value().get(0).body()); - Assertions.assertEquals("zrnf", model.value().get(0).related().categories().get(0)); - Assertions.assertEquals("emv", model.value().get(0).related().resourceTypes().get(0)); - Assertions.assertEquals("bybkzgcwrwclxx", model.value().get(0).related().solutions().get(0)); - Assertions.assertEquals("sqrglssainq", model.value().get(0).tags().get("yqduujit").get(0)); - Assertions.assertEquals("yip", model.nextLink()); + Assertions.assertEquals("dng", model.value().get(0).displayName()); + Assertions.assertEquals("piu", model.value().get(0).description()); + Assertions.assertEquals("gygev", model.value().get(0).body()); + Assertions.assertEquals("yp", model.value().get(0).related().categories().get(0)); + Assertions.assertEquals("ydnfyhxdeoejz", model.value().get(0).related().resourceTypes().get(0)); + Assertions.assertEquals("ifsjttgzfbishcb", model.value().get(0).related().solutions().get(0)); + Assertions.assertEquals("deyeamdphagalpbu", model.value().get(0).tags().get("kix").get(0)); + Assertions.assertEquals("civfsnkymuctq", model.nextLink()); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryPropertiesRelatedTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryPropertiesRelatedTests.java index 5f1816304495..394b262405ab 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryPropertiesRelatedTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryPropertiesRelatedTests.java @@ -13,22 +13,22 @@ public final class LogAnalyticsQueryPackQueryPropertiesRelatedTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { LogAnalyticsQueryPackQueryPropertiesRelated model = BinaryData.fromString( - "{\"categories\":[\"tthzrvqd\"],\"resourceTypes\":[\"hjybigehoqfbo\"],\"solutions\":[\"anyktzlcuiywg\",\"ywgndrv\",\"nhzgpphrcgyn\",\"ocpecfvmmco\"]}") + "{\"categories\":[\"yqupedeojnabckh\",\"mtxpsiebtfh\",\"pesapskrdqmhjj\",\"htldwk\"],\"resourceTypes\":[\"uutkncw\",\"cwsvlxotog\",\"wrupqsxvnmicykvc\",\"o\"],\"solutions\":[\"lo\",\"notyfjfcnjbkcn\"]}") .toObject(LogAnalyticsQueryPackQueryPropertiesRelated.class); - Assertions.assertEquals("tthzrvqd", model.categories().get(0)); - Assertions.assertEquals("hjybigehoqfbo", model.resourceTypes().get(0)); - Assertions.assertEquals("anyktzlcuiywg", model.solutions().get(0)); + Assertions.assertEquals("yqupedeojnabckh", model.categories().get(0)); + Assertions.assertEquals("uutkncw", model.resourceTypes().get(0)); + Assertions.assertEquals("lo", model.solutions().get(0)); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - LogAnalyticsQueryPackQueryPropertiesRelated model - = new LogAnalyticsQueryPackQueryPropertiesRelated().withCategories(Arrays.asList("tthzrvqd")) - .withResourceTypes(Arrays.asList("hjybigehoqfbo")) - .withSolutions(Arrays.asList("anyktzlcuiywg", "ywgndrv", "nhzgpphrcgyn", "ocpecfvmmco")); + LogAnalyticsQueryPackQueryPropertiesRelated model = new LogAnalyticsQueryPackQueryPropertiesRelated() + .withCategories(Arrays.asList("yqupedeojnabckh", "mtxpsiebtfh", "pesapskrdqmhjj", "htldwk")) + .withResourceTypes(Arrays.asList("uutkncw", "cwsvlxotog", "wrupqsxvnmicykvc", "o")) + .withSolutions(Arrays.asList("lo", "notyfjfcnjbkcn")); model = BinaryData.fromObject(model).toObject(LogAnalyticsQueryPackQueryPropertiesRelated.class); - Assertions.assertEquals("tthzrvqd", model.categories().get(0)); - Assertions.assertEquals("hjybigehoqfbo", model.resourceTypes().get(0)); - Assertions.assertEquals("anyktzlcuiywg", model.solutions().get(0)); + Assertions.assertEquals("yqupedeojnabckh", model.categories().get(0)); + Assertions.assertEquals("uutkncw", model.resourceTypes().get(0)); + Assertions.assertEquals("lo", model.solutions().get(0)); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryPropertiesTests.java index be3ea54f5034..a2042415c0c5 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryPropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQueryPropertiesTests.java @@ -16,37 +16,37 @@ public final class LogAnalyticsQueryPackQueryPropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { LogAnalyticsQueryPackQueryProperties model = BinaryData.fromString( - "{\"id\":\"s\",\"displayName\":\"sycbkbfk\",\"timeCreated\":\"2021-04-13T09:52:22Z\",\"timeModified\":\"2021-02-11T20:09:09Z\",\"author\":\"xxppofm\",\"description\":\"x\",\"body\":\"fjpgddtocjjxhvp\",\"related\":{\"categories\":[\"xhdzxibqeojnx\"],\"resourceTypes\":[\"vddntwn\",\"eic\",\"twnpzaoqvuhrhcf\",\"cyddglmjthjqk\"],\"solutions\":[\"eicxmqciwqvhkhi\",\"uigdtopbobjog\",\"m\",\"w\"]},\"tags\":{\"gvdfgiotkftutq\":[\"uhrzayvvt\"]},\"properties\":\"datangxlefgugnxkrxdq\"}") + "{\"id\":\"rq\",\"displayName\":\"uedck\",\"timeCreated\":\"2021-02-12T19:04:46Z\",\"timeModified\":\"2021-04-30T21:59:13Z\",\"author\":\"xzfeyueaxibxuj\",\"description\":\"hqwa\",\"body\":\"muzyoxaepdk\",\"related\":{\"categories\":[\"cuxrhdwbavx\",\"niwdjsw\",\"tsdbpgn\"],\"resourceTypes\":[\"x\"],\"solutions\":[\"xbzpfzab\",\"lcuhxwtctyqiklb\",\"ovplw\"]},\"tags\":{\"svmkfssxquk\":[\"gy\",\"gu\"],\"zkd\":[\"plgmgsxnk\"],\"wzbaiue\":[\"lpvlopw\",\"yighxpk\"]},\"properties\":\"dataa\"}") .toObject(LogAnalyticsQueryPackQueryProperties.class); - Assertions.assertEquals("sycbkbfk", model.displayName()); - Assertions.assertEquals("x", model.description()); - Assertions.assertEquals("fjpgddtocjjxhvp", model.body()); - Assertions.assertEquals("xhdzxibqeojnx", model.related().categories().get(0)); - Assertions.assertEquals("vddntwn", model.related().resourceTypes().get(0)); - Assertions.assertEquals("eicxmqciwqvhkhi", model.related().solutions().get(0)); - Assertions.assertEquals("uhrzayvvt", model.tags().get("gvdfgiotkftutq").get(0)); + Assertions.assertEquals("uedck", model.displayName()); + Assertions.assertEquals("hqwa", model.description()); + Assertions.assertEquals("muzyoxaepdk", model.body()); + Assertions.assertEquals("cuxrhdwbavx", model.related().categories().get(0)); + Assertions.assertEquals("x", model.related().resourceTypes().get(0)); + Assertions.assertEquals("xbzpfzab", model.related().solutions().get(0)); + Assertions.assertEquals("gy", model.tags().get("svmkfssxquk").get(0)); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - LogAnalyticsQueryPackQueryProperties model - = new LogAnalyticsQueryPackQueryProperties().withDisplayName("sycbkbfk") - .withDescription("x") - .withBody("fjpgddtocjjxhvp") - .withRelated( - new LogAnalyticsQueryPackQueryPropertiesRelated().withCategories(Arrays.asList("xhdzxibqeojnx")) - .withResourceTypes(Arrays.asList("vddntwn", "eic", "twnpzaoqvuhrhcf", "cyddglmjthjqk")) - .withSolutions(Arrays.asList("eicxmqciwqvhkhi", "uigdtopbobjog", "m", "w"))) - .withTags(mapOf("gvdfgiotkftutq", Arrays.asList("uhrzayvvt"))) - .withProperties("datangxlefgugnxkrxdq"); + LogAnalyticsQueryPackQueryProperties model = new LogAnalyticsQueryPackQueryProperties().withDisplayName("uedck") + .withDescription("hqwa") + .withBody("muzyoxaepdk") + .withRelated(new LogAnalyticsQueryPackQueryPropertiesRelated() + .withCategories(Arrays.asList("cuxrhdwbavx", "niwdjsw", "tsdbpgn")) + .withResourceTypes(Arrays.asList("x")) + .withSolutions(Arrays.asList("xbzpfzab", "lcuhxwtctyqiklb", "ovplw"))) + .withTags(mapOf("svmkfssxquk", Arrays.asList("gy", "gu"), "zkd", Arrays.asList("plgmgsxnk"), "wzbaiue", + Arrays.asList("lpvlopw", "yighxpk"))) + .withProperties("dataa"); model = BinaryData.fromObject(model).toObject(LogAnalyticsQueryPackQueryProperties.class); - Assertions.assertEquals("sycbkbfk", model.displayName()); - Assertions.assertEquals("x", model.description()); - Assertions.assertEquals("fjpgddtocjjxhvp", model.body()); - Assertions.assertEquals("xhdzxibqeojnx", model.related().categories().get(0)); - Assertions.assertEquals("vddntwn", model.related().resourceTypes().get(0)); - Assertions.assertEquals("eicxmqciwqvhkhi", model.related().solutions().get(0)); - Assertions.assertEquals("uhrzayvvt", model.tags().get("gvdfgiotkftutq").get(0)); + Assertions.assertEquals("uedck", model.displayName()); + Assertions.assertEquals("hqwa", model.description()); + Assertions.assertEquals("muzyoxaepdk", model.body()); + Assertions.assertEquals("cuxrhdwbavx", model.related().categories().get(0)); + Assertions.assertEquals("x", model.related().resourceTypes().get(0)); + Assertions.assertEquals("xbzpfzab", model.related().solutions().get(0)); + Assertions.assertEquals("gy", model.tags().get("svmkfssxquk").get(0)); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQuerySearchPropertiesRelatedTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQuerySearchPropertiesRelatedTests.java index c39cfaf402d7..9accebae05c9 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQuerySearchPropertiesRelatedTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQuerySearchPropertiesRelatedTests.java @@ -13,22 +13,22 @@ public final class LogAnalyticsQueryPackQuerySearchPropertiesRelatedTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { LogAnalyticsQueryPackQuerySearchPropertiesRelated model = BinaryData.fromString( - "{\"categories\":[\"owgujjugwdkcglhs\"],\"resourceTypes\":[\"jdyggdtji\"],\"solutions\":[\"kuofqweykhme\"]}") + "{\"categories\":[\"vt\"],\"resourceTypes\":[\"mqkrhahvljuahaqu\",\"c\",\"hmdua\"],\"solutions\":[\"xqpvfadmw\"]}") .toObject(LogAnalyticsQueryPackQuerySearchPropertiesRelated.class); - Assertions.assertEquals("owgujjugwdkcglhs", model.categories().get(0)); - Assertions.assertEquals("jdyggdtji", model.resourceTypes().get(0)); - Assertions.assertEquals("kuofqweykhme", model.solutions().get(0)); + Assertions.assertEquals("vt", model.categories().get(0)); + Assertions.assertEquals("mqkrhahvljuahaqu", model.resourceTypes().get(0)); + Assertions.assertEquals("xqpvfadmw", model.solutions().get(0)); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { LogAnalyticsQueryPackQuerySearchPropertiesRelated model - = new LogAnalyticsQueryPackQuerySearchPropertiesRelated().withCategories(Arrays.asList("owgujjugwdkcglhs")) - .withResourceTypes(Arrays.asList("jdyggdtji")) - .withSolutions(Arrays.asList("kuofqweykhme")); + = new LogAnalyticsQueryPackQuerySearchPropertiesRelated().withCategories(Arrays.asList("vt")) + .withResourceTypes(Arrays.asList("mqkrhahvljuahaqu", "c", "hmdua")) + .withSolutions(Arrays.asList("xqpvfadmw")); model = BinaryData.fromObject(model).toObject(LogAnalyticsQueryPackQuerySearchPropertiesRelated.class); - Assertions.assertEquals("owgujjugwdkcglhs", model.categories().get(0)); - Assertions.assertEquals("jdyggdtji", model.resourceTypes().get(0)); - Assertions.assertEquals("kuofqweykhme", model.solutions().get(0)); + Assertions.assertEquals("vt", model.categories().get(0)); + Assertions.assertEquals("mqkrhahvljuahaqu", model.resourceTypes().get(0)); + Assertions.assertEquals("xqpvfadmw", model.solutions().get(0)); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQuerySearchPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQuerySearchPropertiesTests.java index 71d88a2658ff..75150951e370 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQuerySearchPropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/LogAnalyticsQueryPackQuerySearchPropertiesTests.java @@ -16,29 +16,29 @@ public final class LogAnalyticsQueryPackQuerySearchPropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { LogAnalyticsQueryPackQuerySearchProperties model = BinaryData.fromString( - "{\"related\":{\"categories\":[\"c\",\"wnfnbacf\",\"onlebxetqgtzxdpn\",\"bqqwxrj\"],\"resourceTypes\":[\"llnwsubi\"],\"solutions\":[\"ampmngnz\",\"c\",\"aqw\",\"ochcbonqvpkvl\"]},\"tags\":{\"enjbdlwtgrhp\":[\"ea\",\"eipheoflokeyy\"],\"masxazjpqyegu\":[\"pj\"],\"cftadeh\":[\"hb\",\"xhejjzzvdud\",\"wdslfhotwmcy\",\"pwlbjnpg\"],\"xdn\":[\"ltyfsop\",\"usue\",\"nzwdejba\",\"orxzdmohctbqvud\"]}}") + "{\"related\":{\"categories\":[\"ttkphywpnvjtoqne\"],\"resourceTypes\":[\"lfplp\"],\"solutions\":[\"uscrpabgyepsb\"]},\"tags\":{\"kqujidsuyono\":[\"qugxywpmueefjzwf\"],\"wfudwpzntxhdzhl\":[\"laocqxtccmg\",\"udxytlmoyrx\"],\"sbkyvpycanuzbp\":[\"jbhckfrlhr\"],\"mx\":[\"afkuwb\",\"rnwb\",\"ehhseyvjusrts\",\"hspkdeemao\"]}}") .toObject(LogAnalyticsQueryPackQuerySearchProperties.class); - Assertions.assertEquals("c", model.related().categories().get(0)); - Assertions.assertEquals("llnwsubi", model.related().resourceTypes().get(0)); - Assertions.assertEquals("ampmngnz", model.related().solutions().get(0)); - Assertions.assertEquals("ea", model.tags().get("enjbdlwtgrhp").get(0)); + Assertions.assertEquals("ttkphywpnvjtoqne", model.related().categories().get(0)); + Assertions.assertEquals("lfplp", model.related().resourceTypes().get(0)); + Assertions.assertEquals("uscrpabgyepsb", model.related().solutions().get(0)); + Assertions.assertEquals("qugxywpmueefjzwf", model.tags().get("kqujidsuyono").get(0)); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { LogAnalyticsQueryPackQuerySearchProperties model = new LogAnalyticsQueryPackQuerySearchProperties() .withRelated(new LogAnalyticsQueryPackQuerySearchPropertiesRelated() - .withCategories(Arrays.asList("c", "wnfnbacf", "onlebxetqgtzxdpn", "bqqwxrj")) - .withResourceTypes(Arrays.asList("llnwsubi")) - .withSolutions(Arrays.asList("ampmngnz", "c", "aqw", "ochcbonqvpkvl"))) - .withTags(mapOf("enjbdlwtgrhp", Arrays.asList("ea", "eipheoflokeyy"), "masxazjpqyegu", Arrays.asList("pj"), - "cftadeh", Arrays.asList("hb", "xhejjzzvdud", "wdslfhotwmcy", "pwlbjnpg"), "xdn", - Arrays.asList("ltyfsop", "usue", "nzwdejba", "orxzdmohctbqvud"))); + .withCategories(Arrays.asList("ttkphywpnvjtoqne")) + .withResourceTypes(Arrays.asList("lfplp")) + .withSolutions(Arrays.asList("uscrpabgyepsb"))) + .withTags(mapOf("kqujidsuyono", Arrays.asList("qugxywpmueefjzwf"), "wfudwpzntxhdzhl", + Arrays.asList("laocqxtccmg", "udxytlmoyrx"), "sbkyvpycanuzbp", Arrays.asList("jbhckfrlhr"), "mx", + Arrays.asList("afkuwb", "rnwb", "ehhseyvjusrts", "hspkdeemao"))); model = BinaryData.fromObject(model).toObject(LogAnalyticsQueryPackQuerySearchProperties.class); - Assertions.assertEquals("c", model.related().categories().get(0)); - Assertions.assertEquals("llnwsubi", model.related().resourceTypes().get(0)); - Assertions.assertEquals("ampmngnz", model.related().solutions().get(0)); - Assertions.assertEquals("ea", model.tags().get("enjbdlwtgrhp").get(0)); + Assertions.assertEquals("ttkphywpnvjtoqne", model.related().categories().get(0)); + Assertions.assertEquals("lfplp", model.related().resourceTypes().get(0)); + Assertions.assertEquals("uscrpabgyepsb", model.related().solutions().get(0)); + Assertions.assertEquals("qugxywpmueefjzwf", model.tags().get("kqujidsuyono").get(0)); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagedServiceIdentityTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagedServiceIdentityTests.java index 1120c66992dd..ade4f7073fbe 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagedServiceIdentityTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagedServiceIdentityTests.java @@ -16,7 +16,7 @@ public final class ManagedServiceIdentityTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { ManagedServiceIdentity model = BinaryData.fromString( - "{\"principalId\":\"be80a829-4e64-42e8-8144-39a2107e6f7c\",\"tenantId\":\"b2f99afe-ea18-409c-8c3e-b8c6b30c667e\",\"type\":\"SystemAssigned\",\"userAssignedIdentities\":{\"y\":{\"principalId\":\"c2094247-fc23-44d9-b2fb-e5752b134ff0\",\"clientId\":\"4d837673-32af-4936-b1b8-c1678c46ffd8\"},\"atdooaojkniod\":{\"principalId\":\"a4d2535b-4098-4a09-b1e0-60b30476302d\",\"clientId\":\"07b997ea-ecde-461d-a172-5a10933b8c37\"}}}") + "{\"principalId\":\"4f489df3-8016-476b-8e91-c04b1f58e415\",\"tenantId\":\"42e608e0-f5a7-4847-a317-9f231b68adfa\",\"type\":\"SystemAssigned\",\"userAssignedIdentities\":{\"f\":{\"principalId\":\"e3f04b40-47a8-4323-8155-b654561a6e5d\",\"clientId\":\"ad28cede-46a0-4859-b5a6-fd978dadf090\"},\"rvktsi\":{\"principalId\":\"9b2c09be-ae3e-489c-a76a-522e98790141\",\"clientId\":\"c6139a3e-11c3-4025-b8af-8c1aba50601f\"},\"ocipaouajpsqucm\":{\"principalId\":\"a3b1ce65-9f5a-471b-b615-d8104f9cf738\",\"clientId\":\"b61166de-704d-4a8d-85a3-a06d54506119\"}}}") .toObject(ManagedServiceIdentity.class); Assertions.assertEquals(ManagedServiceIdentityType.SYSTEM_ASSIGNED, model.type()); } @@ -24,8 +24,8 @@ public void testDeserialize() throws Exception { @org.junit.jupiter.api.Test public void testSerialize() throws Exception { ManagedServiceIdentity model = new ManagedServiceIdentity().withType(ManagedServiceIdentityType.SYSTEM_ASSIGNED) - .withUserAssignedIdentities( - mapOf("y", new UserAssignedIdentity(), "atdooaojkniod", new UserAssignedIdentity())); + .withUserAssignedIdentities(mapOf("f", new UserAssignedIdentity(), "rvktsi", new UserAssignedIdentity(), + "ocipaouajpsqucm", new UserAssignedIdentity())); model = BinaryData.fromObject(model).toObject(ManagedServiceIdentity.class); Assertions.assertEquals(ManagedServiceIdentityType.SYSTEM_ASSIGNED, model.type()); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupInnerTests.java index 64509598976a..1bebfb74bd7f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupInnerTests.java @@ -13,36 +13,36 @@ public final class ManagementGroupInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { ManagementGroupInner model = BinaryData.fromString( - "{\"properties\":{\"serverCount\":903805755,\"isGateway\":true,\"name\":\"y\",\"id\":\"klwndnhjdauwhv\",\"created\":\"2021-04-27T11:03:59Z\",\"dataReceived\":\"2021-08-28T16:11:31Z\",\"version\":\"dhxujznbmpo\",\"sku\":\"wpr\"}}") + "{\"properties\":{\"serverCount\":2031463120,\"isGateway\":true,\"name\":\"jpkcattpng\",\"id\":\"rcczsqpjhvmd\",\"created\":\"2021-11-26T10:49:59Z\",\"dataReceived\":\"2021-07-30T15:20:57Z\",\"version\":\"ounqecano\",\"sku\":\"upfh\"}}") .toObject(ManagementGroupInner.class); - Assertions.assertEquals(903805755, model.serverCount()); - Assertions.assertEquals(true, model.isGateway()); - Assertions.assertEquals("y", model.name()); - Assertions.assertEquals("klwndnhjdauwhv", model.id()); - Assertions.assertEquals(OffsetDateTime.parse("2021-04-27T11:03:59Z"), model.created()); - Assertions.assertEquals(OffsetDateTime.parse("2021-08-28T16:11:31Z"), model.dataReceived()); - Assertions.assertEquals("dhxujznbmpo", model.version()); - Assertions.assertEquals("wpr", model.sku()); + Assertions.assertEquals(2031463120, model.serverCount()); + Assertions.assertTrue(model.isGateway()); + Assertions.assertEquals("jpkcattpng", model.name()); + Assertions.assertEquals("rcczsqpjhvmd", model.id()); + Assertions.assertEquals(OffsetDateTime.parse("2021-11-26T10:49:59Z"), model.created()); + Assertions.assertEquals(OffsetDateTime.parse("2021-07-30T15:20:57Z"), model.dataReceived()); + Assertions.assertEquals("ounqecano", model.version()); + Assertions.assertEquals("upfh", model.sku()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - ManagementGroupInner model = new ManagementGroupInner().withServerCount(903805755) + ManagementGroupInner model = new ManagementGroupInner().withServerCount(2031463120) .withIsGateway(true) - .withName("y") - .withId("klwndnhjdauwhv") - .withCreated(OffsetDateTime.parse("2021-04-27T11:03:59Z")) - .withDataReceived(OffsetDateTime.parse("2021-08-28T16:11:31Z")) - .withVersion("dhxujznbmpo") - .withSku("wpr"); + .withName("jpkcattpng") + .withId("rcczsqpjhvmd") + .withCreated(OffsetDateTime.parse("2021-11-26T10:49:59Z")) + .withDataReceived(OffsetDateTime.parse("2021-07-30T15:20:57Z")) + .withVersion("ounqecano") + .withSku("upfh"); model = BinaryData.fromObject(model).toObject(ManagementGroupInner.class); - Assertions.assertEquals(903805755, model.serverCount()); - Assertions.assertEquals(true, model.isGateway()); - Assertions.assertEquals("y", model.name()); - Assertions.assertEquals("klwndnhjdauwhv", model.id()); - Assertions.assertEquals(OffsetDateTime.parse("2021-04-27T11:03:59Z"), model.created()); - Assertions.assertEquals(OffsetDateTime.parse("2021-08-28T16:11:31Z"), model.dataReceived()); - Assertions.assertEquals("dhxujznbmpo", model.version()); - Assertions.assertEquals("wpr", model.sku()); + Assertions.assertEquals(2031463120, model.serverCount()); + Assertions.assertTrue(model.isGateway()); + Assertions.assertEquals("jpkcattpng", model.name()); + Assertions.assertEquals("rcczsqpjhvmd", model.id()); + Assertions.assertEquals(OffsetDateTime.parse("2021-11-26T10:49:59Z"), model.created()); + Assertions.assertEquals(OffsetDateTime.parse("2021-07-30T15:20:57Z"), model.dataReceived()); + Assertions.assertEquals("ounqecano", model.version()); + Assertions.assertEquals("upfh", model.sku()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupPropertiesTests.java index a0b72ac3c800..9c56646abbb9 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupPropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupPropertiesTests.java @@ -13,36 +13,36 @@ public final class ManagementGroupPropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { ManagementGroupProperties model = BinaryData.fromString( - "{\"serverCount\":741975656,\"isGateway\":true,\"name\":\"alupjm\",\"id\":\"fxobbcsws\",\"created\":\"2021-04-25T18:58:37Z\",\"dataReceived\":\"2021-09-18T23:40:57Z\",\"version\":\"lrbpbewtghfgbl\",\"sku\":\"wxzvlvqhjkb\"}") + "{\"serverCount\":2101228547,\"isGateway\":false,\"name\":\"mopjmc\",\"id\":\"tuo\",\"created\":\"2021-09-23T02:42:43Z\",\"dataReceived\":\"2021-10-23T10:51:29Z\",\"version\":\"uaodsfcpk\",\"sku\":\"odpuozmyzydag\"}") .toObject(ManagementGroupProperties.class); - Assertions.assertEquals(741975656, model.serverCount()); - Assertions.assertEquals(true, model.isGateway()); - Assertions.assertEquals("alupjm", model.name()); - Assertions.assertEquals("fxobbcsws", model.id()); - Assertions.assertEquals(OffsetDateTime.parse("2021-04-25T18:58:37Z"), model.created()); - Assertions.assertEquals(OffsetDateTime.parse("2021-09-18T23:40:57Z"), model.dataReceived()); - Assertions.assertEquals("lrbpbewtghfgbl", model.version()); - Assertions.assertEquals("wxzvlvqhjkb", model.sku()); + Assertions.assertEquals(2101228547, model.serverCount()); + Assertions.assertFalse(model.isGateway()); + Assertions.assertEquals("mopjmc", model.name()); + Assertions.assertEquals("tuo", model.id()); + Assertions.assertEquals(OffsetDateTime.parse("2021-09-23T02:42:43Z"), model.created()); + Assertions.assertEquals(OffsetDateTime.parse("2021-10-23T10:51:29Z"), model.dataReceived()); + Assertions.assertEquals("uaodsfcpk", model.version()); + Assertions.assertEquals("odpuozmyzydag", model.sku()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - ManagementGroupProperties model = new ManagementGroupProperties().withServerCount(741975656) - .withIsGateway(true) - .withName("alupjm") - .withId("fxobbcsws") - .withCreated(OffsetDateTime.parse("2021-04-25T18:58:37Z")) - .withDataReceived(OffsetDateTime.parse("2021-09-18T23:40:57Z")) - .withVersion("lrbpbewtghfgbl") - .withSku("wxzvlvqhjkb"); + ManagementGroupProperties model = new ManagementGroupProperties().withServerCount(2101228547) + .withIsGateway(false) + .withName("mopjmc") + .withId("tuo") + .withCreated(OffsetDateTime.parse("2021-09-23T02:42:43Z")) + .withDataReceived(OffsetDateTime.parse("2021-10-23T10:51:29Z")) + .withVersion("uaodsfcpk") + .withSku("odpuozmyzydag"); model = BinaryData.fromObject(model).toObject(ManagementGroupProperties.class); - Assertions.assertEquals(741975656, model.serverCount()); - Assertions.assertEquals(true, model.isGateway()); - Assertions.assertEquals("alupjm", model.name()); - Assertions.assertEquals("fxobbcsws", model.id()); - Assertions.assertEquals(OffsetDateTime.parse("2021-04-25T18:58:37Z"), model.created()); - Assertions.assertEquals(OffsetDateTime.parse("2021-09-18T23:40:57Z"), model.dataReceived()); - Assertions.assertEquals("lrbpbewtghfgbl", model.version()); - Assertions.assertEquals("wxzvlvqhjkb", model.sku()); + Assertions.assertEquals(2101228547, model.serverCount()); + Assertions.assertFalse(model.isGateway()); + Assertions.assertEquals("mopjmc", model.name()); + Assertions.assertEquals("tuo", model.id()); + Assertions.assertEquals(OffsetDateTime.parse("2021-09-23T02:42:43Z"), model.created()); + Assertions.assertEquals(OffsetDateTime.parse("2021-10-23T10:51:29Z"), model.dataReceived()); + Assertions.assertEquals("uaodsfcpk", model.version()); + Assertions.assertEquals("odpuozmyzydag", model.sku()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupsListMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupsListMockTests.java index accd55f70333..93bc4c379260 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupsListMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagementGroupsListMockTests.java @@ -7,8 +7,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.ManagementGroup; @@ -22,26 +22,26 @@ public final class ManagementGroupsListMockTests { @Test public void testList() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"serverCount\":1980561633,\"isGateway\":false,\"name\":\"tcjuahokqto\",\"id\":\"auxofshfph\",\"created\":\"2021-08-16T03:23:29Z\",\"dataReceived\":\"2021-07-09T19:35:04Z\",\"version\":\"iywzejy\",\"sku\":\"slwkojpl\"}}]}"; + = "{\"value\":[{\"properties\":{\"serverCount\":2014474860,\"isGateway\":true,\"name\":\"vnqvcd\",\"id\":\"uaucmf\",\"created\":\"2021-12-08T13:34:35Z\",\"dataReceived\":\"2021-10-13T05:52:15Z\",\"version\":\"xpunjqi\",\"sku\":\"zvvitacgxmfcs\"}}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response - = manager.managementGroups().list("taboidvmf", "hppubowsepdfgkmt", com.azure.core.util.Context.NONE); + = manager.managementGroups().list("yjqtt", "wkpqhjpenuygbq", com.azure.core.util.Context.NONE); - Assertions.assertEquals(1980561633, response.iterator().next().serverCount()); - Assertions.assertEquals(false, response.iterator().next().isGateway()); - Assertions.assertEquals("tcjuahokqto", response.iterator().next().name()); - Assertions.assertEquals("auxofshfph", response.iterator().next().id()); - Assertions.assertEquals(OffsetDateTime.parse("2021-08-16T03:23:29Z"), response.iterator().next().created()); - Assertions.assertEquals(OffsetDateTime.parse("2021-07-09T19:35:04Z"), + Assertions.assertEquals(2014474860, response.iterator().next().serverCount()); + Assertions.assertTrue(response.iterator().next().isGateway()); + Assertions.assertEquals("vnqvcd", response.iterator().next().name()); + Assertions.assertEquals("uaucmf", response.iterator().next().id()); + Assertions.assertEquals(OffsetDateTime.parse("2021-12-08T13:34:35Z"), response.iterator().next().created()); + Assertions.assertEquals(OffsetDateTime.parse("2021-10-13T05:52:15Z"), response.iterator().next().dataReceived()); - Assertions.assertEquals("iywzejy", response.iterator().next().version()); - Assertions.assertEquals("slwkojpl", response.iterator().next().sku()); + Assertions.assertEquals("xpunjqi", response.iterator().next().version()); + Assertions.assertEquals("zvvitacgxmfcs", response.iterator().next().sku()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/MetricNameTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/MetricNameTests.java index ba8915de7029..0fee218fc5bb 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/MetricNameTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/MetricNameTests.java @@ -11,17 +11,17 @@ public final class MetricNameTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - MetricName model = BinaryData.fromString("{\"value\":\"gdtpnapnyiro\",\"localizedValue\":\"hpigv\"}") + MetricName model = BinaryData.fromString("{\"value\":\"emdwzrmuhapfc\",\"localizedValue\":\"psqxq\"}") .toObject(MetricName.class); - Assertions.assertEquals("gdtpnapnyiro", model.value()); - Assertions.assertEquals("hpigv", model.localizedValue()); + Assertions.assertEquals("emdwzrmuhapfc", model.value()); + Assertions.assertEquals("psqxq", model.localizedValue()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - MetricName model = new MetricName().withValue("gdtpnapnyiro").withLocalizedValue("hpigv"); + MetricName model = new MetricName().withValue("emdwzrmuhapfc").withLocalizedValue("psqxq"); model = BinaryData.fromObject(model).toObject(MetricName.class); - Assertions.assertEquals("gdtpnapnyiro", model.value()); - Assertions.assertEquals("hpigv", model.localizedValue()); + Assertions.assertEquals("emdwzrmuhapfc", model.value()); + Assertions.assertEquals("psqxq", model.localizedValue()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationInnerTests.java new file mode 100644 index 000000000000..a85ef70a72ba --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationInnerTests.java @@ -0,0 +1,126 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.fluent.models.NetworkSecurityPerimeterConfigurationInner; +import com.azure.resourcemanager.loganalytics.models.AccessRule; +import com.azure.resourcemanager.loganalytics.models.AccessRuleDirection; +import com.azure.resourcemanager.loganalytics.models.AccessRuleProperties; +import com.azure.resourcemanager.loganalytics.models.AccessRulePropertiesSubscriptionsItem; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeter; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeterConfigurationProperties; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityProfile; +import com.azure.resourcemanager.loganalytics.models.ResourceAssociation; +import com.azure.resourcemanager.loganalytics.models.ResourceAssociationAccessMode; +import java.util.Arrays; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; + +public final class NetworkSecurityPerimeterConfigurationInnerTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + NetworkSecurityPerimeterConfigurationInner model = BinaryData.fromString( + "{\"properties\":{\"provisioningState\":\"Failed\",\"provisioningIssues\":[{\"name\":\"iglaecx\",\"properties\":{\"issueType\":\"ConfigurationPropagationFailure\",\"severity\":\"Warning\",\"description\":\"pvz\",\"suggestedResourceIds\":[\"t\",\"ld\"],\"suggestedAccessRules\":[{},{},{}]}}],\"networkSecurityPerimeter\":{\"id\":\"irclnpk\",\"perimeterGuid\":\"fa0916ff-3ecd-4956-b4d5-c41b1b8fe746\",\"location\":\"yzriykhy\"},\"resourceAssociation\":{\"name\":\"vjlboxqvk\",\"accessMode\":\"Enforced\"},\"profile\":{\"name\":\"omdynhdwdigum\",\"accessRulesVersion\":1924046982,\"accessRules\":[{\"name\":\"zzp\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"dz\",\"ezwwv\"],\"subscriptions\":[{},{},{}],\"networkSecurityPerimeters\":[{},{}],\"fullyQualifiedDomainNames\":[\"fonkphhqyikvyla\",\"yavluwmncstt\",\"jfybvpoekrsgsgb\",\"huzqgn\"],\"emailAddresses\":[\"kynscliqhzv\",\"xnkomtkubo\",\"ppnvdxz\"],\"phoneNumbers\":[\"hfrbbc\",\"vqagtltdhlf\",\"qojpy\"]}},{\"name\":\"gtrd\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"zsdymbrnysuxmpra\",\"wgck\"],\"subscriptions\":[{},{},{},{}],\"networkSecurityPerimeters\":[{}],\"fullyQualifiedDomainNames\":[\"ffwafq\",\"oudaspavehhrvk\",\"unzo\",\"ud\"],\"emailAddresses\":[\"gkmoyxcdyuibhmfd\"],\"phoneNumbers\":[\"ydvfvfcjnae\",\"isrvhm\"]}},{\"name\":\"r\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"cvwmzhwplefa\",\"vxilcbt\",\"nhnzeyqxt\"],\"subscriptions\":[{},{},{}],\"networkSecurityPerimeters\":[{},{},{}],\"fullyQualifiedDomainNames\":[\"hycav\",\"dggxdbeesmi\",\"knlrariaawiuagy\",\"wqfbylyrfgiagt\"],\"emailAddresses\":[\"ocqwogfnzjvus\",\"zldmozuxy\",\"fsbtkad\",\"ysownbtgkbug\"],\"phoneNumbers\":[\"cto\",\"cmisofie\",\"pe\"]}}],\"diagnosticSettingsVersion\":419692653,\"enabledLogCategories\":[\"dh\",\"u\"]}},\"id\":\"cp\",\"name\":\"cwkhihi\",\"type\":\"lhzdsqtzb\"}") + .toObject(NetworkSecurityPerimeterConfigurationInner.class); + Assertions.assertEquals("irclnpk", model.properties().networkSecurityPerimeter().id()); + Assertions.assertEquals(UUID.fromString("fa0916ff-3ecd-4956-b4d5-c41b1b8fe746"), + model.properties().networkSecurityPerimeter().perimeterGuid()); + Assertions.assertEquals("yzriykhy", model.properties().networkSecurityPerimeter().location()); + Assertions.assertEquals("vjlboxqvk", model.properties().resourceAssociation().name()); + Assertions.assertEquals(ResourceAssociationAccessMode.ENFORCED, + model.properties().resourceAssociation().accessMode()); + Assertions.assertEquals("omdynhdwdigum", model.properties().profile().name()); + Assertions.assertEquals(1924046982, model.properties().profile().accessRulesVersion()); + Assertions.assertEquals("zzp", model.properties().profile().accessRules().get(0).name()); + Assertions.assertEquals(AccessRuleDirection.INBOUND, + model.properties().profile().accessRules().get(0).properties().direction()); + Assertions.assertEquals("dz", + model.properties().profile().accessRules().get(0).properties().addressPrefixes().get(0)); + Assertions.assertEquals("fonkphhqyikvyla", + model.properties().profile().accessRules().get(0).properties().fullyQualifiedDomainNames().get(0)); + Assertions.assertEquals("kynscliqhzv", + model.properties().profile().accessRules().get(0).properties().emailAddresses().get(0)); + Assertions.assertEquals("hfrbbc", + model.properties().profile().accessRules().get(0).properties().phoneNumbers().get(0)); + Assertions.assertEquals(419692653, model.properties().profile().diagnosticSettingsVersion()); + Assertions.assertEquals("dh", model.properties().profile().enabledLogCategories().get(0)); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + NetworkSecurityPerimeterConfigurationInner model = new NetworkSecurityPerimeterConfigurationInner() + .withProperties(new NetworkSecurityPerimeterConfigurationProperties() + .withNetworkSecurityPerimeter(new NetworkSecurityPerimeter().withId("irclnpk") + .withPerimeterGuid(UUID.fromString("fa0916ff-3ecd-4956-b4d5-c41b1b8fe746")) + .withLocation("yzriykhy")) + .withResourceAssociation(new ResourceAssociation().withName("vjlboxqvk") + .withAccessMode(ResourceAssociationAccessMode.ENFORCED)) + .withProfile(new NetworkSecurityProfile().withName("omdynhdwdigum") + .withAccessRulesVersion(1924046982) + .withAccessRules(Arrays.asList( + new AccessRule().withName("zzp") + .withProperties(new AccessRuleProperties().withDirection(AccessRuleDirection.INBOUND) + .withAddressPrefixes(Arrays.asList("dz", "ezwwv")) + .withSubscriptions(Arrays.asList(new AccessRulePropertiesSubscriptionsItem(), + new AccessRulePropertiesSubscriptionsItem(), + new AccessRulePropertiesSubscriptionsItem())) + .withNetworkSecurityPerimeters( + Arrays.asList(new NetworkSecurityPerimeter(), new NetworkSecurityPerimeter())) + .withFullyQualifiedDomainNames( + Arrays.asList("fonkphhqyikvyla", "yavluwmncstt", "jfybvpoekrsgsgb", "huzqgn")) + .withEmailAddresses(Arrays.asList("kynscliqhzv", "xnkomtkubo", "ppnvdxz")) + .withPhoneNumbers(Arrays.asList("hfrbbc", "vqagtltdhlf", "qojpy"))), + new AccessRule().withName("gtrd") + .withProperties(new AccessRuleProperties().withDirection(AccessRuleDirection.OUTBOUND) + .withAddressPrefixes(Arrays.asList("zsdymbrnysuxmpra", "wgck")) + .withSubscriptions(Arrays.asList(new AccessRulePropertiesSubscriptionsItem(), + new AccessRulePropertiesSubscriptionsItem(), + new AccessRulePropertiesSubscriptionsItem(), + new AccessRulePropertiesSubscriptionsItem())) + .withNetworkSecurityPerimeters(Arrays.asList(new NetworkSecurityPerimeter())) + .withFullyQualifiedDomainNames(Arrays.asList("ffwafq", "oudaspavehhrvk", "unzo", "ud")) + .withEmailAddresses(Arrays.asList("gkmoyxcdyuibhmfd")) + .withPhoneNumbers(Arrays.asList("ydvfvfcjnae", "isrvhm"))), + new AccessRule().withName("r") + .withProperties(new AccessRuleProperties().withDirection(AccessRuleDirection.OUTBOUND) + .withAddressPrefixes(Arrays.asList("cvwmzhwplefa", "vxilcbt", "nhnzeyqxt")) + .withSubscriptions(Arrays.asList(new AccessRulePropertiesSubscriptionsItem(), + new AccessRulePropertiesSubscriptionsItem(), + new AccessRulePropertiesSubscriptionsItem())) + .withNetworkSecurityPerimeters(Arrays.asList(new NetworkSecurityPerimeter(), + new NetworkSecurityPerimeter(), new NetworkSecurityPerimeter())) + .withFullyQualifiedDomainNames( + Arrays.asList("hycav", "dggxdbeesmi", "knlrariaawiuagy", "wqfbylyrfgiagt")) + .withEmailAddresses( + Arrays.asList("ocqwogfnzjvus", "zldmozuxy", "fsbtkad", "ysownbtgkbug")) + .withPhoneNumbers(Arrays.asList("cto", "cmisofie", "pe"))))) + .withDiagnosticSettingsVersion(419692653) + .withEnabledLogCategories(Arrays.asList("dh", "u")))); + model = BinaryData.fromObject(model).toObject(NetworkSecurityPerimeterConfigurationInner.class); + Assertions.assertEquals("irclnpk", model.properties().networkSecurityPerimeter().id()); + Assertions.assertEquals(UUID.fromString("fa0916ff-3ecd-4956-b4d5-c41b1b8fe746"), + model.properties().networkSecurityPerimeter().perimeterGuid()); + Assertions.assertEquals("yzriykhy", model.properties().networkSecurityPerimeter().location()); + Assertions.assertEquals("vjlboxqvk", model.properties().resourceAssociation().name()); + Assertions.assertEquals(ResourceAssociationAccessMode.ENFORCED, + model.properties().resourceAssociation().accessMode()); + Assertions.assertEquals("omdynhdwdigum", model.properties().profile().name()); + Assertions.assertEquals(1924046982, model.properties().profile().accessRulesVersion()); + Assertions.assertEquals("zzp", model.properties().profile().accessRules().get(0).name()); + Assertions.assertEquals(AccessRuleDirection.INBOUND, + model.properties().profile().accessRules().get(0).properties().direction()); + Assertions.assertEquals("dz", + model.properties().profile().accessRules().get(0).properties().addressPrefixes().get(0)); + Assertions.assertEquals("fonkphhqyikvyla", + model.properties().profile().accessRules().get(0).properties().fullyQualifiedDomainNames().get(0)); + Assertions.assertEquals("kynscliqhzv", + model.properties().profile().accessRules().get(0).properties().emailAddresses().get(0)); + Assertions.assertEquals("hfrbbc", + model.properties().profile().accessRules().get(0).properties().phoneNumbers().get(0)); + Assertions.assertEquals(419692653, model.properties().profile().diagnosticSettingsVersion()); + Assertions.assertEquals("dh", model.properties().profile().enabledLogCategories().get(0)); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationListResultTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationListResultTests.java new file mode 100644 index 000000000000..b42919cd7469 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationListResultTests.java @@ -0,0 +1,103 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.fluent.models.NetworkSecurityPerimeterConfigurationInner; +import com.azure.resourcemanager.loganalytics.models.AccessRule; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeter; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeterConfigurationListResult; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeterConfigurationProperties; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityProfile; +import com.azure.resourcemanager.loganalytics.models.ResourceAssociation; +import com.azure.resourcemanager.loganalytics.models.ResourceAssociationAccessMode; +import java.util.Arrays; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; + +public final class NetworkSecurityPerimeterConfigurationListResultTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + NetworkSecurityPerimeterConfigurationListResult model = BinaryData.fromString( + "{\"value\":[{\"properties\":{\"provisioningState\":\"Creating\",\"provisioningIssues\":[{\"name\":\"tcyohpfkyrk\",\"properties\":{}},{\"name\":\"giogsjkmnwqjno\",\"properties\":{}},{\"name\":\"yhddvia\",\"properties\":{}}],\"networkSecurityPerimeter\":{\"id\":\"n\",\"perimeterGuid\":\"e47dd61c-072b-4ddc-bb17-201fe9f3719e\",\"location\":\"fpmvmemfnczd\"},\"resourceAssociation\":{\"name\":\"b\",\"accessMode\":\"Learning\"},\"profile\":{\"name\":\"lchpodbzevwrdn\",\"accessRulesVersion\":1073149595,\"accessRules\":[{}],\"diagnosticSettingsVersion\":1934709471,\"enabledLogCategories\":[\"swsmys\",\"uluqypfc\",\"lerchpq\"]}},\"id\":\"f\",\"name\":\"jbabwidf\",\"type\":\"xsspuunnoxyhk\"},{\"properties\":{\"provisioningState\":\"Updating\",\"provisioningIssues\":[{\"name\":\"hp\",\"properties\":{}},{\"name\":\"qcaaewdaomdjvl\",\"properties\":{}}],\"networkSecurityPerimeter\":{\"id\":\"kzbrmsgeivsiy\",\"perimeterGuid\":\"2bb25110-24ce-4c40-b14b-d1550a07934e\",\"location\":\"dncj\"},\"resourceAssociation\":{\"name\":\"nbzoggcu\",\"accessMode\":\"Audit\"},\"profile\":{\"name\":\"y\",\"accessRulesVersion\":1152319383,\"accessRules\":[{},{}],\"diagnosticSettingsVersion\":902332511,\"enabledLogCategories\":[\"pnylb\",\"uajlyj\"]}},\"id\":\"vofqzhvfc\",\"name\":\"byfmowuxr\",\"type\":\"jpvd\"},{\"properties\":{\"provisioningState\":\"Succeeded\",\"provisioningIssues\":[{\"name\":\"vwzjbhyz\",\"properties\":{}},{\"name\":\"rkambt\",\"properties\":{}},{\"name\":\"gvmnvuqeq\",\"properties\":{}},{\"name\":\"spastjbkkdmf\",\"properties\":{}}],\"networkSecurityPerimeter\":{\"id\":\"tmjlx\",\"perimeterGuid\":\"3d5425f3-7ad7-44f9-97df-905f3d3bc5fc\",\"location\":\"lozapeewchpxlk\"},\"resourceAssociation\":{\"name\":\"uziycsl\",\"accessMode\":\"Audit\"},\"profile\":{\"name\":\"ztcktyh\",\"accessRulesVersion\":400720959,\"accessRules\":[{},{}],\"diagnosticSettingsVersion\":1002446412,\"enabledLogCategories\":[\"lwmmrqzzrrjv\"]}},\"id\":\"lydzgk\",\"name\":\"vqeevtoep\",\"type\":\"yutnwytpzdmov\"}],\"nextLink\":\"fvaawzqa\"}") + .toObject(NetworkSecurityPerimeterConfigurationListResult.class); + Assertions.assertEquals("n", model.value().get(0).properties().networkSecurityPerimeter().id()); + Assertions.assertEquals(UUID.fromString("e47dd61c-072b-4ddc-bb17-201fe9f3719e"), + model.value().get(0).properties().networkSecurityPerimeter().perimeterGuid()); + Assertions.assertEquals("fpmvmemfnczd", + model.value().get(0).properties().networkSecurityPerimeter().location()); + Assertions.assertEquals("b", model.value().get(0).properties().resourceAssociation().name()); + Assertions.assertEquals(ResourceAssociationAccessMode.LEARNING, + model.value().get(0).properties().resourceAssociation().accessMode()); + Assertions.assertEquals("lchpodbzevwrdn", model.value().get(0).properties().profile().name()); + Assertions.assertEquals(1073149595, model.value().get(0).properties().profile().accessRulesVersion()); + Assertions.assertEquals(1934709471, model.value().get(0).properties().profile().diagnosticSettingsVersion()); + Assertions.assertEquals("swsmys", model.value().get(0).properties().profile().enabledLogCategories().get(0)); + Assertions.assertEquals("fvaawzqa", model.nextLink()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + NetworkSecurityPerimeterConfigurationListResult model + = new NetworkSecurityPerimeterConfigurationListResult() + .withValue( + Arrays + .asList( + new NetworkSecurityPerimeterConfigurationInner() + .withProperties( + new NetworkSecurityPerimeterConfigurationProperties() + .withNetworkSecurityPerimeter(new NetworkSecurityPerimeter().withId("n") + .withPerimeterGuid(UUID.fromString("e47dd61c-072b-4ddc-bb17-201fe9f3719e")) + .withLocation("fpmvmemfnczd")) + .withResourceAssociation(new ResourceAssociation().withName("b") + .withAccessMode(ResourceAssociationAccessMode.LEARNING)) + .withProfile( + new NetworkSecurityProfile().withName("lchpodbzevwrdn") + .withAccessRulesVersion(1073149595) + .withAccessRules(Arrays.asList(new AccessRule())) + .withDiagnosticSettingsVersion(1934709471) + .withEnabledLogCategories(Arrays.asList("swsmys", "uluqypfc", + "lerchpq")))), + new NetworkSecurityPerimeterConfigurationInner() + .withProperties(new NetworkSecurityPerimeterConfigurationProperties() + .withNetworkSecurityPerimeter(new NetworkSecurityPerimeter().withId("kzbrmsgeivsiy") + .withPerimeterGuid(UUID.fromString("2bb25110-24ce-4c40-b14b-d1550a07934e")) + .withLocation("dncj")) + .withResourceAssociation(new ResourceAssociation().withName("nbzoggcu") + .withAccessMode(ResourceAssociationAccessMode.AUDIT)) + .withProfile(new NetworkSecurityProfile().withName("y") + .withAccessRulesVersion(1152319383) + .withAccessRules(Arrays.asList(new AccessRule(), new AccessRule())) + .withDiagnosticSettingsVersion(902332511) + .withEnabledLogCategories(Arrays.asList("pnylb", "uajlyj")))), + new NetworkSecurityPerimeterConfigurationInner() + .withProperties(new NetworkSecurityPerimeterConfigurationProperties() + .withNetworkSecurityPerimeter(new NetworkSecurityPerimeter().withId("tmjlx") + .withPerimeterGuid(UUID.fromString("3d5425f3-7ad7-44f9-97df-905f3d3bc5fc")) + .withLocation("lozapeewchpxlk")) + .withResourceAssociation(new ResourceAssociation().withName("uziycsl") + .withAccessMode(ResourceAssociationAccessMode.AUDIT)) + .withProfile(new NetworkSecurityProfile().withName("ztcktyh") + .withAccessRulesVersion(400720959) + .withAccessRules(Arrays.asList(new AccessRule(), new AccessRule())) + .withDiagnosticSettingsVersion(1002446412) + .withEnabledLogCategories(Arrays.asList("lwmmrqzzrrjv")))))) + .withNextLink("fvaawzqa"); + model = BinaryData.fromObject(model).toObject(NetworkSecurityPerimeterConfigurationListResult.class); + Assertions.assertEquals("n", model.value().get(0).properties().networkSecurityPerimeter().id()); + Assertions.assertEquals(UUID.fromString("e47dd61c-072b-4ddc-bb17-201fe9f3719e"), + model.value().get(0).properties().networkSecurityPerimeter().perimeterGuid()); + Assertions.assertEquals("fpmvmemfnczd", + model.value().get(0).properties().networkSecurityPerimeter().location()); + Assertions.assertEquals("b", model.value().get(0).properties().resourceAssociation().name()); + Assertions.assertEquals(ResourceAssociationAccessMode.LEARNING, + model.value().get(0).properties().resourceAssociation().accessMode()); + Assertions.assertEquals("lchpodbzevwrdn", model.value().get(0).properties().profile().name()); + Assertions.assertEquals(1073149595, model.value().get(0).properties().profile().accessRulesVersion()); + Assertions.assertEquals(1934709471, model.value().get(0).properties().profile().diagnosticSettingsVersion()); + Assertions.assertEquals("swsmys", model.value().get(0).properties().profile().enabledLogCategories().get(0)); + Assertions.assertEquals("fvaawzqa", model.nextLink()); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationPropertiesTests.java new file mode 100644 index 000000000000..55bd440c1a0d --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationPropertiesTests.java @@ -0,0 +1,108 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.AccessRule; +import com.azure.resourcemanager.loganalytics.models.AccessRuleDirection; +import com.azure.resourcemanager.loganalytics.models.AccessRuleProperties; +import com.azure.resourcemanager.loganalytics.models.AccessRulePropertiesSubscriptionsItem; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeter; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeterConfigurationProperties; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityProfile; +import com.azure.resourcemanager.loganalytics.models.ResourceAssociation; +import com.azure.resourcemanager.loganalytics.models.ResourceAssociationAccessMode; +import java.util.Arrays; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; + +public final class NetworkSecurityPerimeterConfigurationPropertiesTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + NetworkSecurityPerimeterConfigurationProperties model = BinaryData.fromString( + "{\"provisioningState\":\"Canceled\",\"provisioningIssues\":[{\"name\":\"cjhfgmvecactxmw\",\"properties\":{\"issueType\":\"Unknown\",\"severity\":\"Error\",\"description\":\"luqovekqvg\",\"suggestedResourceIds\":[\"wifzmp\",\"wyivqikf\",\"cvhrfsp\"],\"suggestedAccessRules\":[{\"name\":\"rttikteusqc\",\"properties\":{}}]}}],\"networkSecurityPerimeter\":{\"id\":\"klxubyja\",\"perimeterGuid\":\"144b015c-170a-4060-be36-bdf1b0e5ee4e\",\"location\":\"mfblcqcuubg\"},\"resourceAssociation\":{\"name\":\"rtalmet\",\"accessMode\":\"Enforced\"},\"profile\":{\"name\":\"slqxi\",\"accessRulesVersion\":5802151,\"accessRules\":[{\"name\":\"i\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"xiutcx\",\"pzhyr\"],\"subscriptions\":[{},{},{}],\"networkSecurityPerimeters\":[{}],\"fullyQualifiedDomainNames\":[\"joxslhvnhla\",\"rqnkkzjcjbtr\"],\"emailAddresses\":[\"hvv\",\"brxjjsto\"],\"phoneNumbers\":[\"it\",\"kxzt\",\"oobklftidgfcwq\"]}},{\"name\":\"imaq\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"yhohujswtwkozzwc\",\"lkb\",\"wpfaj\",\"jwltlwtjjgu\"],\"subscriptions\":[{},{}],\"networkSecurityPerimeters\":[{},{},{}],\"fullyQualifiedDomainNames\":[\"vkcdmxzr\",\"oaimlnw\",\"aaomylweazu\"],\"emailAddresses\":[\"ethwwnpjhlfz\",\"wpchwahf\"],\"phoneNumbers\":[\"snfepgfewetwlyx\",\"ncxykxhdjhlimm\",\"cxfhbcporxv\"]}},{\"name\":\"jzh\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"xtgqscjavftjuh\",\"qaz\",\"mtggu\"],\"subscriptions\":[{}],\"networkSecurityPerimeters\":[{}],\"fullyQualifiedDomainNames\":[\"civmmg\",\"f\"],\"emailAddresses\":[\"wrxgkneuvy\",\"nzqodfvpg\"],\"phoneNumbers\":[\"xgsg\",\"p\",\"gzdjtxvzf\",\"bqvgaqv\"]}}],\"diagnosticSettingsVersion\":247476852,\"enabledLogCategories\":[\"qusrdvetnws\",\"tutnwlduycvuzhyr\"]}}") + .toObject(NetworkSecurityPerimeterConfigurationProperties.class); + Assertions.assertEquals("klxubyja", model.networkSecurityPerimeter().id()); + Assertions.assertEquals(UUID.fromString("144b015c-170a-4060-be36-bdf1b0e5ee4e"), + model.networkSecurityPerimeter().perimeterGuid()); + Assertions.assertEquals("mfblcqcuubg", model.networkSecurityPerimeter().location()); + Assertions.assertEquals("rtalmet", model.resourceAssociation().name()); + Assertions.assertEquals(ResourceAssociationAccessMode.ENFORCED, model.resourceAssociation().accessMode()); + Assertions.assertEquals("slqxi", model.profile().name()); + Assertions.assertEquals(5802151, model.profile().accessRulesVersion()); + Assertions.assertEquals("i", model.profile().accessRules().get(0).name()); + Assertions.assertEquals(AccessRuleDirection.OUTBOUND, + model.profile().accessRules().get(0).properties().direction()); + Assertions.assertEquals("xiutcx", model.profile().accessRules().get(0).properties().addressPrefixes().get(0)); + Assertions.assertEquals("joxslhvnhla", + model.profile().accessRules().get(0).properties().fullyQualifiedDomainNames().get(0)); + Assertions.assertEquals("hvv", model.profile().accessRules().get(0).properties().emailAddresses().get(0)); + Assertions.assertEquals("it", model.profile().accessRules().get(0).properties().phoneNumbers().get(0)); + Assertions.assertEquals(247476852, model.profile().diagnosticSettingsVersion()); + Assertions.assertEquals("qusrdvetnws", model.profile().enabledLogCategories().get(0)); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + NetworkSecurityPerimeterConfigurationProperties model = new NetworkSecurityPerimeterConfigurationProperties() + .withNetworkSecurityPerimeter(new NetworkSecurityPerimeter().withId("klxubyja") + .withPerimeterGuid(UUID.fromString("144b015c-170a-4060-be36-bdf1b0e5ee4e")) + .withLocation("mfblcqcuubg")) + .withResourceAssociation( + new ResourceAssociation().withName("rtalmet").withAccessMode(ResourceAssociationAccessMode.ENFORCED)) + .withProfile(new NetworkSecurityProfile().withName("slqxi") + .withAccessRulesVersion(5802151) + .withAccessRules(Arrays.asList( + new AccessRule().withName("i") + .withProperties(new AccessRuleProperties().withDirection(AccessRuleDirection.OUTBOUND) + .withAddressPrefixes(Arrays.asList("xiutcx", "pzhyr")) + .withSubscriptions(Arrays.asList(new AccessRulePropertiesSubscriptionsItem(), + new AccessRulePropertiesSubscriptionsItem(), + new AccessRulePropertiesSubscriptionsItem())) + .withNetworkSecurityPerimeters(Arrays.asList(new NetworkSecurityPerimeter())) + .withFullyQualifiedDomainNames(Arrays.asList("joxslhvnhla", "rqnkkzjcjbtr")) + .withEmailAddresses(Arrays.asList("hvv", "brxjjsto")) + .withPhoneNumbers(Arrays.asList("it", "kxzt", "oobklftidgfcwq"))), + new AccessRule().withName("imaq") + .withProperties(new AccessRuleProperties().withDirection(AccessRuleDirection.INBOUND) + .withAddressPrefixes(Arrays.asList("yhohujswtwkozzwc", "lkb", "wpfaj", "jwltlwtjjgu")) + .withSubscriptions(Arrays.asList(new AccessRulePropertiesSubscriptionsItem(), + new AccessRulePropertiesSubscriptionsItem())) + .withNetworkSecurityPerimeters(Arrays.asList(new NetworkSecurityPerimeter(), + new NetworkSecurityPerimeter(), new NetworkSecurityPerimeter())) + .withFullyQualifiedDomainNames(Arrays.asList("vkcdmxzr", "oaimlnw", "aaomylweazu")) + .withEmailAddresses(Arrays.asList("ethwwnpjhlfz", "wpchwahf")) + .withPhoneNumbers(Arrays.asList("snfepgfewetwlyx", "ncxykxhdjhlimm", "cxfhbcporxv"))), + new AccessRule().withName("jzh") + .withProperties(new AccessRuleProperties().withDirection(AccessRuleDirection.OUTBOUND) + .withAddressPrefixes(Arrays.asList("xtgqscjavftjuh", "qaz", "mtggu")) + .withSubscriptions(Arrays.asList(new AccessRulePropertiesSubscriptionsItem())) + .withNetworkSecurityPerimeters(Arrays.asList(new NetworkSecurityPerimeter())) + .withFullyQualifiedDomainNames(Arrays.asList("civmmg", "f")) + .withEmailAddresses(Arrays.asList("wrxgkneuvy", "nzqodfvpg")) + .withPhoneNumbers(Arrays.asList("xgsg", "p", "gzdjtxvzf", "bqvgaqv"))))) + .withDiagnosticSettingsVersion(247476852) + .withEnabledLogCategories(Arrays.asList("qusrdvetnws", "tutnwlduycvuzhyr"))); + model = BinaryData.fromObject(model).toObject(NetworkSecurityPerimeterConfigurationProperties.class); + Assertions.assertEquals("klxubyja", model.networkSecurityPerimeter().id()); + Assertions.assertEquals(UUID.fromString("144b015c-170a-4060-be36-bdf1b0e5ee4e"), + model.networkSecurityPerimeter().perimeterGuid()); + Assertions.assertEquals("mfblcqcuubg", model.networkSecurityPerimeter().location()); + Assertions.assertEquals("rtalmet", model.resourceAssociation().name()); + Assertions.assertEquals(ResourceAssociationAccessMode.ENFORCED, model.resourceAssociation().accessMode()); + Assertions.assertEquals("slqxi", model.profile().name()); + Assertions.assertEquals(5802151, model.profile().accessRulesVersion()); + Assertions.assertEquals("i", model.profile().accessRules().get(0).name()); + Assertions.assertEquals(AccessRuleDirection.OUTBOUND, + model.profile().accessRules().get(0).properties().direction()); + Assertions.assertEquals("xiutcx", model.profile().accessRules().get(0).properties().addressPrefixes().get(0)); + Assertions.assertEquals("joxslhvnhla", + model.profile().accessRules().get(0).properties().fullyQualifiedDomainNames().get(0)); + Assertions.assertEquals("hvv", model.profile().accessRules().get(0).properties().emailAddresses().get(0)); + Assertions.assertEquals("it", model.profile().accessRules().get(0).properties().phoneNumbers().get(0)); + Assertions.assertEquals(247476852, model.profile().diagnosticSettingsVersion()); + Assertions.assertEquals("qusrdvetnws", model.profile().enabledLogCategories().get(0)); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterTests.java new file mode 100644 index 000000000000..eaa666e46718 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterTests.java @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeter; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; + +public final class NetworkSecurityPerimeterTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + NetworkSecurityPerimeter model = BinaryData + .fromString( + "{\"id\":\"fdvruz\",\"perimeterGuid\":\"acdb3fe4-f602-47bc-ae5f-06f025c74d7f\",\"location\":\"ojhp\"}") + .toObject(NetworkSecurityPerimeter.class); + Assertions.assertEquals("fdvruz", model.id()); + Assertions.assertEquals(UUID.fromString("acdb3fe4-f602-47bc-ae5f-06f025c74d7f"), model.perimeterGuid()); + Assertions.assertEquals("ojhp", model.location()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + NetworkSecurityPerimeter model = new NetworkSecurityPerimeter().withId("fdvruz") + .withPerimeterGuid(UUID.fromString("acdb3fe4-f602-47bc-ae5f-06f025c74d7f")) + .withLocation("ojhp"); + model = BinaryData.fromObject(model).toObject(NetworkSecurityPerimeter.class); + Assertions.assertEquals("fdvruz", model.id()); + Assertions.assertEquals(UUID.fromString("acdb3fe4-f602-47bc-ae5f-06f025c74d7f"), model.perimeterGuid()); + Assertions.assertEquals("ojhp", model.location()); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityProfileTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityProfileTests.java new file mode 100644 index 000000000000..354d5c426ba6 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityProfileTests.java @@ -0,0 +1,109 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.AccessRule; +import com.azure.resourcemanager.loganalytics.models.AccessRuleDirection; +import com.azure.resourcemanager.loganalytics.models.AccessRuleProperties; +import com.azure.resourcemanager.loganalytics.models.AccessRulePropertiesSubscriptionsItem; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeter; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityProfile; +import java.util.Arrays; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; + +public final class NetworkSecurityProfileTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + NetworkSecurityProfile model = BinaryData.fromString( + "{\"name\":\"ugeyzihgrkyuiza\",\"accessRulesVersion\":1192399452,\"accessRules\":[{\"name\":\"phojeevyhy\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"zbgomfgbeg\",\"qgleohibetnluank\",\"rfxeeebtij\"],\"subscriptions\":[{\"id\":\"bmqzbqqxlajrnwx\"},{\"id\":\"evehjkuyxoaf\"}],\"networkSecurityPerimeters\":[{\"id\":\"lt\",\"perimeterGuid\":\"cc01bf33-ad8d-4b13-8050-cf28e1d0b1d6\",\"location\":\"yl\"},{\"id\":\"mfgvxirpghriypo\",\"perimeterGuid\":\"01e0c3e3-1aee-4326-9024-494e3ab2d43f\",\"location\":\"hlqhykprlpy\"}],\"fullyQualifiedDomainNames\":[\"ciqdsme\",\"iitdfuxt\"],\"emailAddresses\":[\"iibmi\",\"bnn\",\"stgnl\",\"hnmgixhcm\"],\"phoneNumbers\":[\"qfoudorhcgyy\",\"rotwypundmbxhugc\",\"jkavl\"]}},{\"name\":\"rb\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"tzfjltf\",\"nzcyjtotp\",\"opv\",\"bdb\"],\"subscriptions\":[{\"id\":\"q\"},{\"id\":\"edsvqwthmk\"},{\"id\":\"bcysih\"}],\"networkSecurityPerimeters\":[{\"id\":\"wdhohsdtmcdzsu\",\"perimeterGuid\":\"cc5e625e-91c2-4e53-bd0f-2d47b117e538\",\"location\":\"hdxbzlm\"},{\"id\":\"uapcvhdbevwqqxe\",\"perimeterGuid\":\"6d6bf008-2b16-44a8-84c3-808f6ee860cf\",\"location\":\"onqzinkfkbgbzbow\"}],\"fullyQualifiedDomainNames\":[\"o\"],\"emailAddresses\":[\"mygvkzqkj\",\"eokbze\"],\"phoneNumbers\":[\"rx\",\"czurtlei\",\"q\"]}}],\"diagnosticSettingsVersion\":796775151,\"enabledLogCategories\":[\"zgnzv\"]}") + .toObject(NetworkSecurityProfile.class); + Assertions.assertEquals("ugeyzihgrkyuiza", model.name()); + Assertions.assertEquals(1192399452, model.accessRulesVersion()); + Assertions.assertEquals("phojeevyhy", model.accessRules().get(0).name()); + Assertions.assertEquals(AccessRuleDirection.INBOUND, model.accessRules().get(0).properties().direction()); + Assertions.assertEquals("zbgomfgbeg", model.accessRules().get(0).properties().addressPrefixes().get(0)); + Assertions.assertEquals("bmqzbqqxlajrnwx", model.accessRules().get(0).properties().subscriptions().get(0).id()); + Assertions.assertEquals("lt", model.accessRules().get(0).properties().networkSecurityPerimeters().get(0).id()); + Assertions.assertEquals(UUID.fromString("cc01bf33-ad8d-4b13-8050-cf28e1d0b1d6"), + model.accessRules().get(0).properties().networkSecurityPerimeters().get(0).perimeterGuid()); + Assertions.assertEquals("yl", + model.accessRules().get(0).properties().networkSecurityPerimeters().get(0).location()); + Assertions.assertEquals("ciqdsme", model.accessRules().get(0).properties().fullyQualifiedDomainNames().get(0)); + Assertions.assertEquals("iibmi", model.accessRules().get(0).properties().emailAddresses().get(0)); + Assertions.assertEquals("qfoudorhcgyy", model.accessRules().get(0).properties().phoneNumbers().get(0)); + Assertions.assertEquals(796775151, model.diagnosticSettingsVersion()); + Assertions.assertEquals("zgnzv", model.enabledLogCategories().get(0)); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + NetworkSecurityProfile model + = new NetworkSecurityProfile().withName("ugeyzihgrkyuiza") + .withAccessRulesVersion(1192399452) + .withAccessRules( + Arrays + .asList( + new AccessRule().withName("phojeevyhy") + .withProperties(new AccessRuleProperties().withDirection(AccessRuleDirection.INBOUND) + .withAddressPrefixes(Arrays.asList("zbgomfgbeg", "qgleohibetnluank", "rfxeeebtij")) + .withSubscriptions(Arrays + .asList(new AccessRulePropertiesSubscriptionsItem().withId("bmqzbqqxlajrnwx"), + new AccessRulePropertiesSubscriptionsItem().withId("evehjkuyxoaf"))) + .withNetworkSecurityPerimeters( + Arrays.asList( + new NetworkSecurityPerimeter().withId("lt") + .withPerimeterGuid( + UUID.fromString("cc01bf33-ad8d-4b13-8050-cf28e1d0b1d6")) + .withLocation("yl"), + new NetworkSecurityPerimeter().withId("mfgvxirpghriypo") + .withPerimeterGuid( + UUID.fromString("01e0c3e3-1aee-4326-9024-494e3ab2d43f")) + .withLocation("hlqhykprlpy"))) + .withFullyQualifiedDomainNames(Arrays.asList("ciqdsme", "iitdfuxt")) + .withEmailAddresses(Arrays.asList("iibmi", "bnn", "stgnl", "hnmgixhcm")) + .withPhoneNumbers(Arrays.asList("qfoudorhcgyy", "rotwypundmbxhugc", "jkavl"))), + new AccessRule().withName("rb") + .withProperties( + new AccessRuleProperties().withDirection(AccessRuleDirection.INBOUND) + .withAddressPrefixes(Arrays.asList("tzfjltf", "nzcyjtotp", "opv", "bdb")) + .withSubscriptions( + Arrays.asList(new AccessRulePropertiesSubscriptionsItem().withId("q"), + new AccessRulePropertiesSubscriptionsItem().withId("edsvqwthmk"), + new AccessRulePropertiesSubscriptionsItem().withId("bcysih"))) + .withNetworkSecurityPerimeters(Arrays.asList( + new NetworkSecurityPerimeter().withId("wdhohsdtmcdzsu") + .withPerimeterGuid( + UUID.fromString("cc5e625e-91c2-4e53-bd0f-2d47b117e538")) + .withLocation("hdxbzlm"), + new NetworkSecurityPerimeter().withId("uapcvhdbevwqqxe") + .withPerimeterGuid( + UUID.fromString("6d6bf008-2b16-44a8-84c3-808f6ee860cf")) + .withLocation("onqzinkfkbgbzbow"))) + .withFullyQualifiedDomainNames(Arrays.asList("o")) + .withEmailAddresses(Arrays.asList("mygvkzqkj", "eokbze")) + .withPhoneNumbers(Arrays.asList("rx", "czurtlei", "q"))))) + .withDiagnosticSettingsVersion(796775151) + .withEnabledLogCategories(Arrays.asList("zgnzv")); + model = BinaryData.fromObject(model).toObject(NetworkSecurityProfile.class); + Assertions.assertEquals("ugeyzihgrkyuiza", model.name()); + Assertions.assertEquals(1192399452, model.accessRulesVersion()); + Assertions.assertEquals("phojeevyhy", model.accessRules().get(0).name()); + Assertions.assertEquals(AccessRuleDirection.INBOUND, model.accessRules().get(0).properties().direction()); + Assertions.assertEquals("zbgomfgbeg", model.accessRules().get(0).properties().addressPrefixes().get(0)); + Assertions.assertEquals("bmqzbqqxlajrnwx", model.accessRules().get(0).properties().subscriptions().get(0).id()); + Assertions.assertEquals("lt", model.accessRules().get(0).properties().networkSecurityPerimeters().get(0).id()); + Assertions.assertEquals(UUID.fromString("cc01bf33-ad8d-4b13-8050-cf28e1d0b1d6"), + model.accessRules().get(0).properties().networkSecurityPerimeters().get(0).perimeterGuid()); + Assertions.assertEquals("yl", + model.accessRules().get(0).properties().networkSecurityPerimeters().get(0).location()); + Assertions.assertEquals("ciqdsme", model.accessRules().get(0).properties().fullyQualifiedDomainNames().get(0)); + Assertions.assertEquals("iibmi", model.accessRules().get(0).properties().emailAddresses().get(0)); + Assertions.assertEquals("qfoudorhcgyy", model.accessRules().get(0).properties().phoneNumbers().get(0)); + Assertions.assertEquals(796775151, model.diagnosticSettingsVersion()); + Assertions.assertEquals("zgnzv", model.enabledLogCategories().get(0)); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationDisplayTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationDisplayTests.java index 658596d1c0f9..6f839b25fa58 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationDisplayTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationDisplayTests.java @@ -12,24 +12,24 @@ public final class OperationDisplayTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { OperationDisplay model = BinaryData.fromString( - "{\"provider\":\"znqntoru\",\"resource\":\"gsahmkycgrauw\",\"operation\":\"etaebu\",\"description\":\"vdmovsmzlxwabm\"}") + "{\"provider\":\"ugidyjrr\",\"resource\":\"y\",\"operation\":\"svexcsonpclhoco\",\"description\":\"lkevle\"}") .toObject(OperationDisplay.class); - Assertions.assertEquals("znqntoru", model.provider()); - Assertions.assertEquals("gsahmkycgrauw", model.resource()); - Assertions.assertEquals("etaebu", model.operation()); - Assertions.assertEquals("vdmovsmzlxwabm", model.description()); + Assertions.assertEquals("ugidyjrr", model.provider()); + Assertions.assertEquals("y", model.resource()); + Assertions.assertEquals("svexcsonpclhoco", model.operation()); + Assertions.assertEquals("lkevle", model.description()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - OperationDisplay model = new OperationDisplay().withProvider("znqntoru") - .withResource("gsahmkycgrauw") - .withOperation("etaebu") - .withDescription("vdmovsmzlxwabm"); + OperationDisplay model = new OperationDisplay().withProvider("ugidyjrr") + .withResource("y") + .withOperation("svexcsonpclhoco") + .withDescription("lkevle"); model = BinaryData.fromObject(model).toObject(OperationDisplay.class); - Assertions.assertEquals("znqntoru", model.provider()); - Assertions.assertEquals("gsahmkycgrauw", model.resource()); - Assertions.assertEquals("etaebu", model.operation()); - Assertions.assertEquals("vdmovsmzlxwabm", model.description()); + Assertions.assertEquals("ugidyjrr", model.provider()); + Assertions.assertEquals("y", model.resource()); + Assertions.assertEquals("svexcsonpclhoco", model.operation()); + Assertions.assertEquals("lkevle", model.description()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationInnerTests.java index 0c58020760f3..230330b39037 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationInnerTests.java @@ -13,27 +13,27 @@ public final class OperationInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { OperationInner model = BinaryData.fromString( - "{\"name\":\"vxb\",\"display\":{\"provider\":\"udutnco\",\"resource\":\"r\",\"operation\":\"qtvcofudflvkgj\",\"description\":\"gdknnqv\"}}") + "{\"name\":\"sa\",\"display\":{\"provider\":\"ku\",\"resource\":\"oskg\",\"operation\":\"auu\",\"description\":\"jmvxie\"}}") .toObject(OperationInner.class); - Assertions.assertEquals("vxb", model.name()); - Assertions.assertEquals("udutnco", model.display().provider()); - Assertions.assertEquals("r", model.display().resource()); - Assertions.assertEquals("qtvcofudflvkgj", model.display().operation()); - Assertions.assertEquals("gdknnqv", model.display().description()); + Assertions.assertEquals("sa", model.name()); + Assertions.assertEquals("ku", model.display().provider()); + Assertions.assertEquals("oskg", model.display().resource()); + Assertions.assertEquals("auu", model.display().operation()); + Assertions.assertEquals("jmvxie", model.display().description()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - OperationInner model = new OperationInner().withName("vxb") - .withDisplay(new OperationDisplay().withProvider("udutnco") - .withResource("r") - .withOperation("qtvcofudflvkgj") - .withDescription("gdknnqv")); + OperationInner model = new OperationInner().withName("sa") + .withDisplay(new OperationDisplay().withProvider("ku") + .withResource("oskg") + .withOperation("auu") + .withDescription("jmvxie")); model = BinaryData.fromObject(model).toObject(OperationInner.class); - Assertions.assertEquals("vxb", model.name()); - Assertions.assertEquals("udutnco", model.display().provider()); - Assertions.assertEquals("r", model.display().resource()); - Assertions.assertEquals("qtvcofudflvkgj", model.display().operation()); - Assertions.assertEquals("gdknnqv", model.display().description()); + Assertions.assertEquals("sa", model.name()); + Assertions.assertEquals("ku", model.display().provider()); + Assertions.assertEquals("oskg", model.display().resource()); + Assertions.assertEquals("auu", model.display().operation()); + Assertions.assertEquals("jmvxie", model.display().description()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationListResultTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationListResultTests.java index c98a9d19a474..3b474d738a34 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationListResultTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationListResultTests.java @@ -15,28 +15,38 @@ public final class OperationListResultTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { OperationListResult model = BinaryData.fromString( - "{\"value\":[{\"name\":\"xzfe\",\"display\":{\"provider\":\"ppriol\",\"resource\":\"rjaltolmncw\",\"operation\":\"bqwcsdbnwdcf\",\"description\":\"cqdpfuv\"}}],\"nextLink\":\"sbjjc\"}") + "{\"value\":[{\"name\":\"bezy\",\"display\":{\"provider\":\"kktwhrdxw\",\"resource\":\"wqsmbsur\",\"operation\":\"imoryocfsfksym\",\"description\":\"ys\"}},{\"name\":\"i\",\"display\":{\"provider\":\"hqyudxorrqnbpoc\",\"resource\":\"yifqrvkdvjsllrmv\",\"operation\":\"f\",\"description\":\"t\"}},{\"name\":\"n\",\"display\":{\"provider\":\"exxbczwtr\",\"resource\":\"iqzbq\",\"operation\":\"sovmyokacspkwl\",\"description\":\"dobpxjmflbvvn\"}}],\"nextLink\":\"rkcciwwzjuqk\"}") .toObject(OperationListResult.class); - Assertions.assertEquals("xzfe", model.value().get(0).name()); - Assertions.assertEquals("ppriol", model.value().get(0).display().provider()); - Assertions.assertEquals("rjaltolmncw", model.value().get(0).display().resource()); - Assertions.assertEquals("bqwcsdbnwdcf", model.value().get(0).display().operation()); - Assertions.assertEquals("cqdpfuv", model.value().get(0).display().description()); + Assertions.assertEquals("bezy", model.value().get(0).name()); + Assertions.assertEquals("kktwhrdxw", model.value().get(0).display().provider()); + Assertions.assertEquals("wqsmbsur", model.value().get(0).display().resource()); + Assertions.assertEquals("imoryocfsfksym", model.value().get(0).display().operation()); + Assertions.assertEquals("ys", model.value().get(0).display().description()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - OperationListResult model - = new OperationListResult().withValue(Arrays.asList(new OperationInner().withName("xzfe") - .withDisplay(new OperationDisplay().withProvider("ppriol") - .withResource("rjaltolmncw") - .withOperation("bqwcsdbnwdcf") - .withDescription("cqdpfuv")))); + OperationListResult model = new OperationListResult().withValue(Arrays.asList( + new OperationInner().withName("bezy") + .withDisplay(new OperationDisplay().withProvider("kktwhrdxw") + .withResource("wqsmbsur") + .withOperation("imoryocfsfksym") + .withDescription("ys")), + new OperationInner().withName("i") + .withDisplay(new OperationDisplay().withProvider("hqyudxorrqnbpoc") + .withResource("yifqrvkdvjsllrmv") + .withOperation("f") + .withDescription("t")), + new OperationInner().withName("n") + .withDisplay(new OperationDisplay().withProvider("exxbczwtr") + .withResource("iqzbq") + .withOperation("sovmyokacspkwl") + .withDescription("dobpxjmflbvvn")))); model = BinaryData.fromObject(model).toObject(OperationListResult.class); - Assertions.assertEquals("xzfe", model.value().get(0).name()); - Assertions.assertEquals("ppriol", model.value().get(0).display().provider()); - Assertions.assertEquals("rjaltolmncw", model.value().get(0).display().resource()); - Assertions.assertEquals("bqwcsdbnwdcf", model.value().get(0).display().operation()); - Assertions.assertEquals("cqdpfuv", model.value().get(0).display().description()); + Assertions.assertEquals("bezy", model.value().get(0).name()); + Assertions.assertEquals("kktwhrdxw", model.value().get(0).display().provider()); + Assertions.assertEquals("wqsmbsur", model.value().get(0).display().resource()); + Assertions.assertEquals("imoryocfsfksym", model.value().get(0).display().operation()); + Assertions.assertEquals("ys", model.value().get(0).display().description()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationsListMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationsListMockTests.java index 3afabcdaf67d..5b44dd0d0ebd 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationsListMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/OperationsListMockTests.java @@ -7,8 +7,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.Operation; @@ -22,21 +22,21 @@ public final class OperationsListMockTests { @Test public void testList() throws Exception { String responseStr - = "{\"value\":[{\"name\":\"xkykxdssjp\",\"display\":{\"provider\":\"ucfx\",\"resource\":\"kkflrmymyincqlhr\",\"operation\":\"wslmiiiovgqcg\",\"description\":\"ugqkctotiowlxteq\"}}]}"; + = "{\"value\":[{\"name\":\"rxhtvso\",\"display\":{\"provider\":\"wntsjgqrsxy\",\"resource\":\"uuuybnchrsziz\",\"operation\":\"uelyetndn\",\"description\":\"qyggagfl\"}}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response = manager.operations().list(com.azure.core.util.Context.NONE); - Assertions.assertEquals("xkykxdssjp", response.iterator().next().name()); - Assertions.assertEquals("ucfx", response.iterator().next().display().provider()); - Assertions.assertEquals("kkflrmymyincqlhr", response.iterator().next().display().resource()); - Assertions.assertEquals("wslmiiiovgqcg", response.iterator().next().display().operation()); - Assertions.assertEquals("ugqkctotiowlxteq", response.iterator().next().display().description()); + Assertions.assertEquals("rxhtvso", response.iterator().next().name()); + Assertions.assertEquals("wntsjgqrsxy", response.iterator().next().display().provider()); + Assertions.assertEquals("uuuybnchrsziz", response.iterator().next().display().resource()); + Assertions.assertEquals("uelyetndn", response.iterator().next().display().operation()); + Assertions.assertEquals("qyggagfl", response.iterator().next().display().description()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/PrivateLinkScopedResourceTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/PrivateLinkScopedResourceTests.java index 653f54965b40..25393ad99897 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/PrivateLinkScopedResourceTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/PrivateLinkScopedResourceTests.java @@ -11,19 +11,17 @@ public final class PrivateLinkScopedResourceTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - PrivateLinkScopedResource model - = BinaryData.fromString("{\"resourceId\":\"iakp\",\"scopeId\":\"qqmtedltmmji\"}") - .toObject(PrivateLinkScopedResource.class); - Assertions.assertEquals("iakp", model.resourceId()); - Assertions.assertEquals("qqmtedltmmji", model.scopeId()); + PrivateLinkScopedResource model = BinaryData.fromString("{\"resourceId\":\"bar\",\"scopeId\":\"uayjkqa\"}") + .toObject(PrivateLinkScopedResource.class); + Assertions.assertEquals("bar", model.resourceId()); + Assertions.assertEquals("uayjkqa", model.scopeId()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - PrivateLinkScopedResource model - = new PrivateLinkScopedResource().withResourceId("iakp").withScopeId("qqmtedltmmji"); + PrivateLinkScopedResource model = new PrivateLinkScopedResource().withResourceId("bar").withScopeId("uayjkqa"); model = BinaryData.fromObject(model).toObject(PrivateLinkScopedResource.class); - Assertions.assertEquals("iakp", model.resourceId()); - Assertions.assertEquals("qqmtedltmmji", model.scopeId()); + Assertions.assertEquals("bar", model.resourceId()); + Assertions.assertEquals("uayjkqa", model.scopeId()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ProvisioningIssuePropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ProvisioningIssuePropertiesTests.java new file mode 100644 index 000000000000..590d63691346 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ProvisioningIssuePropertiesTests.java @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.ProvisioningIssueProperties; + +public final class ProvisioningIssuePropertiesTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + ProvisioningIssueProperties model = BinaryData.fromString( + "{\"issueType\":\"ConfigurationPropagationFailure\",\"severity\":\"Error\",\"description\":\"jjidjk\",\"suggestedResourceIds\":[\"kyxvxevblbjedn\",\"jlageu\",\"ulxunsmjbnkpp\"],\"suggestedAccessRules\":[{\"name\":\"nlsvxeiz\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"srmffeycxcktpiym\",\"rteeamm\",\"qiekkkzddrt\"],\"subscriptions\":[{\"id\":\"jbmxvavre\"}],\"networkSecurityPerimeters\":[{\"id\":\"svecuijpxtxs\",\"perimeterGuid\":\"adc52fcf-9956-4d7b-b885-5aa059cb79b8\",\"location\":\"rtujwsawddjibab\"},{\"id\":\"ititvtzeexavoxt\",\"perimeterGuid\":\"c8f16ee6-1657-4bf8-bb1f-7a971bba3367\",\"location\":\"ecdmdqbwpy\"}],\"fullyQualifiedDomainNames\":[\"gsfjac\",\"slhhxudbxv\"],\"emailAddresses\":[\"tnsi\",\"ud\"],\"phoneNumbers\":[\"mes\"]}},{\"name\":\"dlpagzrcxfail\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"boxdfgsftufq\",\"brjlnacgcckknhxk\",\"zvytnrzvuljraaer\",\"nok\"],\"subscriptions\":[{\"id\":\"kjq\"},{\"id\":\"broyla\"},{\"id\":\"ulcdisdosf\"},{\"id\":\"jsvg\"}],\"networkSecurityPerimeters\":[{\"id\":\"r\",\"perimeterGuid\":\"c2df6ff4-e0a7-439d-95d8-4f31eca1799f\",\"location\":\"cytdclxgccknfnwm\"},{\"id\":\"mvpdvjdhttzaef\",\"perimeterGuid\":\"72f9d23f-fe31-48a0-920c-847f5c621db6\",\"location\":\"ihchrphkmcrjdqn\"},{\"id\":\"fzpbgtgkyl\",\"perimeterGuid\":\"0966ae6c-c4d9-4729-b0ac-5ca57e868429\",\"location\":\"hrjeuutlw\"}],\"fullyQualifiedDomainNames\":[\"w\"],\"emailAddresses\":[\"kvbwnhhtqlgeh\",\"ppipifhpfeoa\",\"vgcxtx\",\"csheafidltugsr\"],\"phoneNumbers\":[\"kssjhoiftxfk\"]}},{\"name\":\"egprhptil\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"tgdqohmcwsldriz\",\"tpwb\",\"a\"],\"subscriptions\":[{\"id\":\"bphbqzmizakakank\"},{\"id\":\"dnjzh\"}],\"networkSecurityPerimeters\":[{\"id\":\"lhjlmuoyxprimr\",\"perimeterGuid\":\"b115af21-822a-496e-a1a4-18719c29d3b9\",\"location\":\"teecjmeislst\"},{\"id\":\"sylwxdzaumweooh\",\"perimeterGuid\":\"d109b4d6-3814-4e24-9057-c2d4006327a5\",\"location\":\"fuzboyjathwtzolb\"},{\"id\":\"mwmdxmebwjscjpa\",\"perimeterGuid\":\"20275b08-25e9-4438-9163-ba926dcda966\",\"location\":\"veabfqxnmwmqtib\"},{\"id\":\"ijddtvqc\",\"perimeterGuid\":\"8b3f4632-9d68-4176-bca0-f95e8827288a\",\"location\":\"dija\"}],\"fullyQualifiedDomainNames\":[\"mrsieekp\"],\"emailAddresses\":[\"aapm\",\"dqmeqwigpibudq\",\"yxeb\",\"ybpmzznrtffyaq\"],\"phoneNumbers\":[\"hheioqaqhvseuf\"]}}]}") + .toObject(ProvisioningIssueProperties.class); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + ProvisioningIssueProperties model = new ProvisioningIssueProperties(); + model = BinaryData.fromObject(model).toObject(ProvisioningIssueProperties.class); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ProvisioningIssueTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ProvisioningIssueTests.java new file mode 100644 index 000000000000..5dfb515c0292 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ProvisioningIssueTests.java @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.ProvisioningIssue; + +public final class ProvisioningIssueTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + ProvisioningIssue model = BinaryData.fromString( + "{\"name\":\"wipmvekdxuk\",\"properties\":{\"issueType\":\"MissingIdentityConfiguration\",\"severity\":\"Error\",\"description\":\"undxgketw\",\"suggestedResourceIds\":[\"zjhfjmhvv\",\"uvgp\"],\"suggestedAccessRules\":[{\"name\":\"qsxvmhf\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"hsasbhu\",\"ypoh\"],\"subscriptions\":[{},{},{}],\"networkSecurityPerimeters\":[{},{},{}],\"fullyQualifiedDomainNames\":[\"nsqyrpfoobrltt\",\"msjnygqdnfw\",\"zdzgtilaxhnfhqly\"],\"emailAddresses\":[\"ouwivkxoyzunbixx\"],\"phoneNumbers\":[\"kvcpwpgclr\",\"ivtsoxfrkenxpm\"]}},{\"name\":\"efrp\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"skawaoqvmmb\",\"pqfrtqlkz\"],\"subscriptions\":[{},{},{}],\"networkSecurityPerimeters\":[{},{}],\"fullyQualifiedDomainNames\":[\"vkxlz\",\"qdrfegcealzxwhc\",\"nsymoyqhlwigd\"],\"emailAddresses\":[\"kbxgom\",\"ajuwas\",\"vdaeyyguxakjsq\"],\"phoneNumbers\":[\"bezkgimsidxasic\",\"dyvvjskgfmocwahp\",\"gat\",\"eaahhvjhhn\"]}}]}}") + .toObject(ProvisioningIssue.class); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + ProvisioningIssue model = new ProvisioningIssue(); + model = BinaryData.fromObject(model).toObject(ProvisioningIssue.class); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesDeleteWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesDeleteWithResponseMockTests.java index 24e1bf1eae46..c9626f6d165d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesDeleteWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesDeleteWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import java.nio.charset.StandardCharsets; @@ -25,9 +25,10 @@ public void testDeleteWithResponse() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - manager.queries().deleteWithResponse("jdfqwmkyoqufdvr", "zslzojhp", "tfnmdx", com.azure.core.util.Context.NONE); + manager.queries() + .deleteWithResponse("yjucejikzoeo", "vtzejetjklnti", "yjuzkdb", com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesGetWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesGetWithResponseMockTests.java index 1eee646bd614..24a7a169654d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesGetWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesGetWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.LogAnalyticsQueryPackQuery; @@ -21,25 +21,25 @@ public final class QueriesGetWithResponseMockTests { @Test public void testGetWithResponse() throws Exception { String responseStr - = "{\"properties\":{\"id\":\"woycqucwyha\",\"displayName\":\"nomdrkywuhpsv\",\"timeCreated\":\"2021-05-26T05:35:58Z\",\"timeModified\":\"2021-01-31T05:51:43Z\",\"author\":\"lwexxwl\",\"description\":\"niexzsrzpgepq\",\"body\":\"yb\",\"related\":{\"categories\":[\"gdakchz\",\"vl\",\"xqnrkcxk\"],\"resourceTypes\":[\"nxm\"],\"solutions\":[\"xs\",\"qrntv\",\"wijpsttexoqqpwc\"]},\"tags\":{\"ndy\":[\"mhruncuwm\",\"spkcdqzh\",\"ctddun\"],\"boxjumvq\":[\"chrqb\",\"jjrcgegydc\"]},\"properties\":\"datalihrraiouaubr\"},\"id\":\"loqxfuojrngif\",\"name\":\"z\",\"type\":\"sccbiuimzd\"}"; + = "{\"properties\":{\"id\":\"rtws\",\"displayName\":\"hv\",\"timeCreated\":\"2021-09-06T01:44:02Z\",\"timeModified\":\"2021-03-26T17:24:30Z\",\"author\":\"vtrrmhwrbfdpyflu\",\"description\":\"vjglrocuyzlwhhme\",\"body\":\"hoocl\",\"related\":{\"categories\":[\"qmemc\",\"jk\"],\"resourceTypes\":[\"kyujxsglhsrrr\",\"ejylmbkzu\"],\"solutions\":[\"grfihotjewlp\",\"uzzjgnrefq\",\"hqo\"]},\"tags\":{\"tgbebj\":[\"iqakydiwfbr\",\"wpzdqtvhcspo\",\"aqa\",\"sipi\"],\"uhplrvkmjcwmjv\":[\"lbmoichd\",\"pnfpubntnbat\",\"viqsowsaaelcattc\"],\"idqlvhu\":[\"fggc\",\"kyylizr\",\"bjpsfxsfuztlvtm\",\"agb\"]},\"properties\":\"dataveo\"},\"id\":\"zrvjfnmjmvlwyzgi\",\"name\":\"lkujrllfojui\",\"type\":\"jpu\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); LogAnalyticsQueryPackQuery response = manager.queries() - .getWithResponse("cqpbtuo", "xesz", "bbelawumuaslzk", com.azure.core.util.Context.NONE) + .getWithResponse("mtkhlowkxxpvbr", "fjmzsyzfho", "lhikcyychunsj", com.azure.core.util.Context.NONE) .getValue(); - Assertions.assertEquals("nomdrkywuhpsv", response.displayName()); - Assertions.assertEquals("niexzsrzpgepq", response.description()); - Assertions.assertEquals("yb", response.body()); - Assertions.assertEquals("gdakchz", response.related().categories().get(0)); - Assertions.assertEquals("nxm", response.related().resourceTypes().get(0)); - Assertions.assertEquals("xs", response.related().solutions().get(0)); - Assertions.assertEquals("mhruncuwm", response.tags().get("ndy").get(0)); + Assertions.assertEquals("hv", response.displayName()); + Assertions.assertEquals("vjglrocuyzlwhhme", response.description()); + Assertions.assertEquals("hoocl", response.body()); + Assertions.assertEquals("qmemc", response.related().categories().get(0)); + Assertions.assertEquals("kyujxsglhsrrr", response.related().resourceTypes().get(0)); + Assertions.assertEquals("grfihotjewlp", response.related().solutions().get(0)); + Assertions.assertEquals("iqakydiwfbr", response.tags().get("tgbebj").get(0)); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesListMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesListMockTests.java index cebe44dbb225..57f1762ccd5f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesListMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesListMockTests.java @@ -7,8 +7,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.LogAnalyticsQueryPackQuery; @@ -22,24 +22,25 @@ public final class QueriesListMockTests { @Test public void testList() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"id\":\"rcxfailcfxwmdb\",\"displayName\":\"xdfgsftufqobr\",\"timeCreated\":\"2021-06-10T09:16:23Z\",\"timeModified\":\"2021-07-03T04:16:46Z\",\"author\":\"cc\",\"description\":\"nhxk\",\"body\":\"zvytnrzvuljraaer\",\"related\":{\"categories\":[\"qgukkjqnv\"],\"resourceTypes\":[\"ylaxxulcdi\",\"dosfjbjsvgjrw\"],\"solutions\":[\"vyc\",\"t\",\"c\",\"xgccknfnw\"]},\"tags\":{\"z\":[\"vpdvjdhttzae\",\"edxihchrphkmcrj\",\"qnsdfzpbgtgky\",\"kdghrjeuutlwx\"],\"oajvgcxtxjcs\":[\"hokvbwnh\",\"tqlgehgppi\",\"ifhpf\"],\"q\":[\"afidltugsres\",\"kssjhoiftxfk\",\"wegprh\",\"tillucbiqtg\"]},\"properties\":\"datamcwsldrizetpwb\"},\"id\":\"lllibph\",\"name\":\"zmizakakan\",\"type\":\"p\"}]}"; + = "{\"value\":[{\"properties\":{\"id\":\"hpdulon\",\"displayName\":\"acn\",\"timeCreated\":\"2021-04-12T19:25:08Z\",\"timeModified\":\"2020-12-27T20:17:23Z\",\"author\":\"tuevrh\",\"description\":\"jyoogwxh\",\"body\":\"sd\",\"related\":{\"categories\":[\"bsre\",\"rfqkfuar\"],\"resourceTypes\":[\"vhhtklnvnaf\",\"vkyfedevjbosl\",\"qxypokkhminq\"],\"solutions\":[\"czngnbdxxe\",\"unin\"]},\"tags\":{\"xxdtddmflh\":[\"chaqdtvqec\",\"qct\"]},\"properties\":\"datatx\"},\"id\":\"tznapxbannovv\",\"name\":\"xc\",\"type\":\"ytprwnwvroev\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response = manager.queries() - .list("vodhtn", "irudh", 522814180418790552L, false, "sckdlp", com.azure.core.util.Context.NONE); + .list("eizjcpeogkhnmg", "ro", 3903099274195860527L, false, "bhfhpfpazjzoy", + com.azure.core.util.Context.NONE); - Assertions.assertEquals("xdfgsftufqobr", response.iterator().next().displayName()); - Assertions.assertEquals("nhxk", response.iterator().next().description()); - Assertions.assertEquals("zvytnrzvuljraaer", response.iterator().next().body()); - Assertions.assertEquals("qgukkjqnv", response.iterator().next().related().categories().get(0)); - Assertions.assertEquals("ylaxxulcdi", response.iterator().next().related().resourceTypes().get(0)); - Assertions.assertEquals("vyc", response.iterator().next().related().solutions().get(0)); - Assertions.assertEquals("vpdvjdhttzae", response.iterator().next().tags().get("z").get(0)); + Assertions.assertEquals("acn", response.iterator().next().displayName()); + Assertions.assertEquals("jyoogwxh", response.iterator().next().description()); + Assertions.assertEquals("sd", response.iterator().next().body()); + Assertions.assertEquals("bsre", response.iterator().next().related().categories().get(0)); + Assertions.assertEquals("vhhtklnvnaf", response.iterator().next().related().resourceTypes().get(0)); + Assertions.assertEquals("czngnbdxxe", response.iterator().next().related().solutions().get(0)); + Assertions.assertEquals("chaqdtvqec", response.iterator().next().tags().get("xxdtddmflh").get(0)); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesPutWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesPutWithResponseMockTests.java index a5166c94e183..14b3befb2419 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesPutWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesPutWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.LogAnalyticsQueryPackQuery; @@ -25,35 +25,36 @@ public final class QueriesPutWithResponseMockTests { @Test public void testPutWithResponse() throws Exception { String responseStr - = "{\"properties\":{\"id\":\"gcmjkavl\",\"displayName\":\"or\",\"timeCreated\":\"2021-09-10T10:34:34Z\",\"timeModified\":\"2021-06-02T13:00:05Z\",\"author\":\"dtzfjltfvnzcy\",\"description\":\"otp\",\"body\":\"opv\",\"related\":{\"categories\":[\"zq\",\"qqihedsvqwthmk\"],\"resourceTypes\":[\"cysihs\",\"qcwdhoh\"],\"solutions\":[\"mcdzsufcohdxbz\",\"mcmuapc\",\"hdbevwqqxeyskon\"]},\"tags\":{\"ezrxcczurtleipqx\":[\"kfkbgbzbowxeqocl\",\"mygvkzqkj\",\"eokbze\"],\"nzvdfbzdixzmq\":[\"wvz\"],\"bostzel\":[\"odawopqhewjptmcg\"]},\"properties\":\"datala\"},\"id\":\"tmzlbiojlv\",\"name\":\"rbbpneqvcwwyy\",\"type\":\"mochpprprsnmok\"}"; + = "{\"properties\":{\"id\":\"itdigsxcdgljp\",\"displayName\":\"keuachtomf\",\"timeCreated\":\"2021-03-19T13:19:35Z\",\"timeModified\":\"2021-09-29T06:45:15Z\",\"author\":\"fpfmdgycxnmskwh\",\"description\":\"jyslurl\",\"body\":\"shhkvpedw\",\"related\":{\"categories\":[\"rhmpqvwwsk\",\"ndcbrwi\",\"uvqejosovyrrle\"],\"resourceTypes\":[\"inuqtljq\",\"bbpihehcecy\",\"mrqbrjbbmpxdlv\",\"kfrexcrseqwjks\"],\"solutions\":[\"dgzhxogj\",\"gsv\",\"u\"]},\"tags\":{\"o\":[\"bdafhrkm\",\"yomkxfbvfbhdy\",\"rhpw\",\"gddeimaw\"],\"comlikytwvczc\":[\"kkum\",\"ikjcjcazt\",\"wsnsqowx\"],\"cvejyfdvlvhbwrn\":[\"k\"],\"nkcoeqswankltyt\":[\"tgddpqthehnmnaoy\"]},\"properties\":\"datadroznn\"},\"id\":\"rlktgjcsggu\",\"name\":\"hemlwywaee\",\"type\":\"zgfbukklelssx\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); LogAnalyticsQueryPackQuery response = manager.queries() - .define("absnmfpp") - .withExistingQueryPack("tngfdgugeyzihgr", "yui") - .withTags(mapOf("asiibmiybnnust", Arrays.asList("gh", "iypoqeyhlqhykprl", "yznuciqd", "mexiitdfuxt"))) - .withDisplayName("yhsgz") - .withDescription("glqgleoh") - .withBody("betnluankrrfxee") - .withRelated(new LogAnalyticsQueryPackQueryPropertiesRelated().withCategories(Arrays.asList("j")) - .withResourceTypes(Arrays.asList("vbmqzbqq", "lajrnwxacevehj")) - .withSolutions(Arrays.asList("xoafgaoqltfae", "linmfgv"))) - .withProperties("dataljhnmgixhcmav") + .define("rrkolawjmjs") + .withExistingQueryPack("zolxrzvhqjwtr", "tgvgzp") + .withTags(mapOf("gjekglklby", Arrays.asList("hzdtxetlgydlh", "vlnnpx", "b", "fiqgeaar"))) + .withDisplayName("tlhguynuchl") + .withDescription("pafolp") + .withBody("mwamxqzragpgdph") + .withRelated(new LogAnalyticsQueryPackQueryPropertiesRelated() + .withCategories(Arrays.asList("lajv", "ejchcsrlz", "nmzlanru")) + .withResourceTypes(Arrays.asList("vnphc", "zqtpjhmq")) + .withSolutions(Arrays.asList("thlaiwdcxs"))) + .withProperties("dataidwcwvmzegjon") .create(); - Assertions.assertEquals("or", response.displayName()); - Assertions.assertEquals("otp", response.description()); - Assertions.assertEquals("opv", response.body()); - Assertions.assertEquals("zq", response.related().categories().get(0)); - Assertions.assertEquals("cysihs", response.related().resourceTypes().get(0)); - Assertions.assertEquals("mcdzsufcohdxbz", response.related().solutions().get(0)); - Assertions.assertEquals("kfkbgbzbowxeqocl", response.tags().get("ezrxcczurtleipqx").get(0)); + Assertions.assertEquals("keuachtomf", response.displayName()); + Assertions.assertEquals("jyslurl", response.description()); + Assertions.assertEquals("shhkvpedw", response.body()); + Assertions.assertEquals("rhmpqvwwsk", response.related().categories().get(0)); + Assertions.assertEquals("inuqtljq", response.related().resourceTypes().get(0)); + Assertions.assertEquals("dgzhxogj", response.related().solutions().get(0)); + Assertions.assertEquals("bdafhrkm", response.tags().get("o").get(0)); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesSearchMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesSearchMockTests.java index 92aa6353046f..a3324dc0be72 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesSearchMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueriesSearchMockTests.java @@ -7,8 +7,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.LogAnalyticsQueryPackQuery; @@ -27,34 +27,33 @@ public final class QueriesSearchMockTests { @Test public void testSearch() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"id\":\"heioqa\",\"displayName\":\"hvseufuqyrx\",\"timeCreated\":\"2021-03-18T00:27:23Z\",\"timeModified\":\"2020-12-31T00:49:04Z\",\"author\":\"lsismjqfrd\",\"description\":\"amqu\",\"body\":\"iosrsjuivfcdis\",\"related\":{\"categories\":[\"xzhczexrxz\",\"ujrtrhqvwr\"],\"resourceTypes\":[\"h\"],\"solutions\":[\"nzonzl\",\"piqywnc\",\"jtszcof\",\"zehtdhgb\"]},\"tags\":{\"bccxjmonfdgn\":[\"eljeamurvzmlovua\",\"ashcxlpmjerbdk\",\"lvidizozs\"],\"uqj\":[\"cypuuwwlt\"]},\"properties\":\"datazenkeifzzhmkd\"},\"id\":\"vflyhbxcu\",\"name\":\"hxgsrboldfor\",\"type\":\"wjlvizbfhfov\"}]}"; + = "{\"value\":[{\"properties\":{\"id\":\"caac\",\"displayName\":\"dmmcpugmehqep\",\"timeCreated\":\"2021-03-30T21:15:26Z\",\"timeModified\":\"2021-08-04T03:32:09Z\",\"author\":\"ehewhoqh\",\"description\":\"bqnbl\",\"body\":\"xeaclgsc\",\"related\":{\"categories\":[\"mkrsrrmoucsofl\",\"puviyfcaabe\",\"lhbhl\"],\"resourceTypes\":[\"xuqibsxtkcudf\"],\"solutions\":[\"arfsi\",\"wlkjxn\"]},\"tags\":{\"ycjimryvwgcwwpbm\":[\"gf\",\"tmhqykiz\",\"d\",\"saoafcluqvox\"]},\"properties\":\"dataw\"},\"id\":\"ydsx\",\"name\":\"efoh\",\"type\":\"cbvopwndyqleallk\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response = manager.queries() - .search("jzhajoy", "hjlmu", - new LogAnalyticsQueryPackQuerySearchProperties() - .withRelated(new LogAnalyticsQueryPackQuerySearchPropertiesRelated() - .withCategories(Arrays.asList("rimrs", "pteecjme")) - .withResourceTypes(Arrays.asList("stvasylwxdzaumw")) - .withSolutions(Arrays.asList("hguuf", "zboyjathwt"))) - .withTags(mapOf("mwmdxmebwjscjpa", Arrays.asList("a"), "ekpndzaapmudq", - Arrays.asList("xveabf", "xnmwmqtibxyijddt", "qcttadijaeukmrsi"), "e", - Arrays.asList("qwigpibudqwyxe"))), - 5927921282145979607L, true, "zznrtffyaqi", com.azure.core.util.Context.NONE); + .search("tlyo", "rrrouuxvnsa", new LogAnalyticsQueryPackQuerySearchProperties() + .withRelated( + new LogAnalyticsQueryPackQuerySearchPropertiesRelated().withCategories(Arrays.asList("ymodizrxk")) + .withResourceTypes(Arrays.asList("d", "nazpmk")) + .withSolutions(Arrays.asList("vevfxz"))) + .withTags(mapOf("p", Arrays.asList("bzxliohrdddtfgxq", "awpcbbnzqcykn"), "bwwg", + Arrays.asList("fyuicdh", "bd"), "muvapc", Arrays.asList("vibidmhmwffpl"), "mfsvbpav", + Arrays.asList("crrvweyo", "oy", "ukphaimmoiroq", "oshbragapyy"))), + 5906080066098666385L, false, "ppdbwnupgahxkum", com.azure.core.util.Context.NONE); - Assertions.assertEquals("hvseufuqyrx", response.iterator().next().displayName()); - Assertions.assertEquals("amqu", response.iterator().next().description()); - Assertions.assertEquals("iosrsjuivfcdis", response.iterator().next().body()); - Assertions.assertEquals("xzhczexrxz", response.iterator().next().related().categories().get(0)); - Assertions.assertEquals("h", response.iterator().next().related().resourceTypes().get(0)); - Assertions.assertEquals("nzonzl", response.iterator().next().related().solutions().get(0)); - Assertions.assertEquals("eljeamurvzmlovua", response.iterator().next().tags().get("bccxjmonfdgn").get(0)); + Assertions.assertEquals("dmmcpugmehqep", response.iterator().next().displayName()); + Assertions.assertEquals("bqnbl", response.iterator().next().description()); + Assertions.assertEquals("xeaclgsc", response.iterator().next().body()); + Assertions.assertEquals("mkrsrrmoucsofl", response.iterator().next().related().categories().get(0)); + Assertions.assertEquals("xuqibsxtkcudf", response.iterator().next().related().resourceTypes().get(0)); + Assertions.assertEquals("arfsi", response.iterator().next().related().solutions().get(0)); + Assertions.assertEquals("gf", response.iterator().next().tags().get("ycjimryvwgcwwpbm").get(0)); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateWithResponseMockTests.java index 5d446e46190b..5c2cada33883 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.LogAnalyticsQueryPack; @@ -23,24 +23,24 @@ public final class QueryPacksCreateOrUpdateWithResponseMockTests { @Test public void testCreateOrUpdateWithResponse() throws Exception { String responseStr - = "{\"properties\":{\"queryPackId\":\"nlsvxeiz\",\"timeCreated\":\"2021-09-15T09:10:38Z\",\"timeModified\":\"2021-10-15T15:15:24Z\",\"provisioningState\":\"srmffeycxcktpiym\"},\"location\":\"rteeamm\",\"tags\":{\"rtkgdojbmxvavref\":\"ekkkzd\",\"jpxtxsuwprtuj\":\"eesvecu\",\"itvtzeexavo\":\"sawddjibabxvi\",\"dmdqb\":\"tfgle\"},\"id\":\"pypqtgsfj\",\"name\":\"cbslhhx\",\"type\":\"db\"}"; + = "{\"properties\":{\"queryPackId\":\"emv\",\"timeCreated\":\"2021-10-29T03:31:17Z\",\"timeModified\":\"2020-12-21T13:58:30Z\",\"provisioningState\":\"hmnr\"},\"location\":\"bsojk\",\"tags\":{\"ysprq\":\"hmdp\",\"pli\":\"gnzxojpslsvj\",\"qvapcohhoucq\":\"fiqwoy\"},\"id\":\"q\",\"name\":\"jxcx\",\"type\":\"rzdcgdzbenribcaw\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); LogAnalyticsQueryPack response = manager.queryPacks() - .define("vbkbxgomf") - .withRegion("zkgimsid") - .withExistingResourceGroup("nsymoyqhlwigd") - .withTags(mapOf("hpqgatjeaahhvj", "icddyvvjskgfmocw", "jjidjk", "hnakzyb")) + .define("byrrueqth") + .withRegion("yqyybxubmdna") + .withExistingResourceGroup("yueayfbpcmsp") + .withTags(mapOf("qacigeleo", "qwremjel", "vqvwzkjopwbe", "d", "x", "nrlkwzdqy")) .create(); - Assertions.assertEquals("rteeamm", response.location()); - Assertions.assertEquals("ekkkzd", response.tags().get("rtkgdojbmxvavref")); + Assertions.assertEquals("bsojk", response.location()); + Assertions.assertEquals("hmdp", response.tags().get("ysprq")); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateWithoutNameWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateWithoutNameWithResponseMockTests.java index 5805a5f8e9f9..b02f3f534120 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateWithoutNameWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksCreateOrUpdateWithoutNameWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.fluent.models.LogAnalyticsQueryPackInner; @@ -24,23 +24,24 @@ public final class QueryPacksCreateOrUpdateWithoutNameWithResponseMockTests { @Test public void testCreateOrUpdateWithoutNameWithResponse() throws Exception { String responseStr - = "{\"properties\":{\"queryPackId\":\"xukuqgsj\",\"timeCreated\":\"2021-08-01T00:57:39Z\",\"timeModified\":\"2021-06-29T21:31:03Z\",\"provisioningState\":\"gketwzhhzjhf\"},\"location\":\"mhv\",\"tags\":{\"qsxvmhf\":\"vgpmun\"},\"id\":\"uzjyihsasbhudypo\",\"name\":\"yue\",\"type\":\"slynsqyrpfoo\"}"; + = "{\"properties\":{\"queryPackId\":\"rgmsplzga\",\"timeCreated\":\"2021-02-13T02:42:05Z\",\"timeModified\":\"2021-02-02T09:58:56Z\",\"provisioningState\":\"vnewgnxkympqanx\"},\"location\":\"kixtwbtaoy\",\"tags\":{\"pxycphdr\":\"ghshxcylhkgmnsg\"},\"id\":\"jjkhvyomaclu\",\"name\":\"vxnqmhrpqpd\",\"type\":\"wmkoisq\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 201, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); LogAnalyticsQueryPack response = manager.queryPacks() - .createOrUpdateWithoutNameWithResponse("fiwrxgkn", - new LogAnalyticsQueryPackInner().withLocation("gzdjtxvzf").withTags(mapOf("aqvlgafcqusr", "v")), + .createOrUpdateWithoutNameWithResponse("wfiwzcxmj", + new LogAnalyticsQueryPackInner().withLocation("cabvnuil") + .withTags(mapOf("ugmrmf", "aswlp", "oauk", "lrxw", "moaedsxj", "fkvcisi")), com.azure.core.util.Context.NONE) .getValue(); - Assertions.assertEquals("mhv", response.location()); - Assertions.assertEquals("vgpmun", response.tags().get("qsxvmhf")); + Assertions.assertEquals("kixtwbtaoy", response.location()); + Assertions.assertEquals("ghshxcylhkgmnsg", response.tags().get("pxycphdr")); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksDeleteByResourceGroupWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksDeleteByResourceGroupWithResponseMockTests.java index 5db48519b0d3..ec13a6955468 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksDeleteByResourceGroupWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksDeleteByResourceGroupWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import java.nio.charset.StandardCharsets; @@ -25,11 +25,10 @@ public void testDeleteWithResponse() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); manager.queryPacks() - .deleteByResourceGroupWithResponse("rlttymsjnygqdnfw", "zdzgtilaxhnfhqly", - com.azure.core.util.Context.NONE); + .deleteByResourceGroupWithResponse("ssffxuifmc", "ypobkdqzr", com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksGetByResourceGroupWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksGetByResourceGroupWithResponseMockTests.java index 4635a85ab2c9..2048593384ce 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksGetByResourceGroupWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksGetByResourceGroupWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.LogAnalyticsQueryPack; @@ -21,20 +21,20 @@ public final class QueryPacksGetByResourceGroupWithResponseMockTests { @Test public void testGetByResourceGroupWithResponse() throws Exception { String responseStr - = "{\"properties\":{\"queryPackId\":\"pgclrciv\",\"timeCreated\":\"2021-01-12T06:52:04Z\",\"timeModified\":\"2020-12-22T20:01:29Z\",\"provisioningState\":\"kenx\"},\"location\":\"m\",\"tags\":{\"oqvm\":\"frpmpdnqqskaw\"},\"id\":\"bnpqfrtqlkzme\",\"name\":\"nitgvkxlz\",\"type\":\"qdrfegcealzxwhc\"}"; + = "{\"properties\":{\"queryPackId\":\"uaurkihcir\",\"timeCreated\":\"2021-04-17T15:27:55Z\",\"timeModified\":\"2021-09-20T22:33:09Z\",\"provisioningState\":\"dcoxnbk\"},\"location\":\"anurnnqb\",\"tags\":{\"rxvbfihwuh\":\"pizxqltgrdogyp\",\"iowxi\":\"ctafsrbxrblm\",\"klsbsbqqqagw\":\"spnxwqagnepzw\"},\"id\":\"rxaomzisglrrcze\",\"name\":\"k\",\"type\":\"hltnjadhqoawjq\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); LogAnalyticsQueryPack response = manager.queryPacks() - .getByResourceGroupWithResponse("ijouwivkxoyzunb", "xxrtikvc", com.azure.core.util.Context.NONE) + .getByResourceGroupWithResponse("zsylollgt", "czzydmxzjij", com.azure.core.util.Context.NONE) .getValue(); - Assertions.assertEquals("m", response.location()); - Assertions.assertEquals("frpmpdnqqskaw", response.tags().get("oqvm")); + Assertions.assertEquals("anurnnqb", response.location()); + Assertions.assertEquals("pizxqltgrdogyp", response.tags().get("rxvbfihwuh")); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListByResourceGroupMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListByResourceGroupMockTests.java index 0e8fd6299f34..402d3c1d2c70 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListByResourceGroupMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListByResourceGroupMockTests.java @@ -7,8 +7,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.LogAnalyticsQueryPack; @@ -22,19 +22,19 @@ public final class QueryPacksListByResourceGroupMockTests { @Test public void testListByResourceGroup() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"queryPackId\":\"aomylwea\",\"timeCreated\":\"2021-12-02T19:30Z\",\"timeModified\":\"2021-02-22T04:35:52Z\",\"provisioningState\":\"thwwn\"},\"location\":\"jhlfzswpchwahf\",\"tags\":{\"ncxykxhdjhlimm\":\"snfepgfewetwlyx\",\"cjzhqi\":\"cxfhbcporxv\",\"ftjuh\":\"xfpxtgqscja\"},\"id\":\"qaz\",\"name\":\"mtggu\",\"type\":\"pijrajcivmmghf\"}]}"; + = "{\"value\":[{\"properties\":{\"queryPackId\":\"wslmiiiovgqcg\",\"timeCreated\":\"2021-03-09T10:20:04Z\",\"timeModified\":\"2021-07-06T10:58:26Z\",\"provisioningState\":\"ctotiowlx\"},\"location\":\"qd\",\"tags\":{\"lwphqlkccuzgyg\":\"gwdtgukran\",\"gniiprglvaw\":\"wahoiul\",\"pmcubkmifoxxkub\":\"wzdufypivlsbb\",\"gvgovpbbttefjo\":\"phavpmhbrb\"},\"id\":\"nssqyzqed\",\"name\":\"kdfrdbiqmrjgeihf\",\"type\":\"lg\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response - = manager.queryPacks().listByResourceGroup("oaimlnw", com.azure.core.util.Context.NONE); + = manager.queryPacks().listByResourceGroup("kkflrmymyincqlhr", com.azure.core.util.Context.NONE); - Assertions.assertEquals("jhlfzswpchwahf", response.iterator().next().location()); - Assertions.assertEquals("snfepgfewetwlyx", response.iterator().next().tags().get("ncxykxhdjhlimm")); + Assertions.assertEquals("qd", response.iterator().next().location()); + Assertions.assertEquals("gwdtgukran", response.iterator().next().tags().get("lwphqlkccuzgyg")); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListMockTests.java index e80c92f3388b..5fb621aeec76 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksListMockTests.java @@ -7,8 +7,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.LogAnalyticsQueryPack; @@ -22,18 +22,18 @@ public final class QueryPacksListMockTests { @Test public void testList() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"queryPackId\":\"pkxztmoobkl\",\"timeCreated\":\"2021-05-25T12:15:23Z\",\"timeModified\":\"2021-09-03T03:39:31Z\",\"provisioningState\":\"cwq\"},\"location\":\"pimaqxzhemjyh\",\"tags\":{\"lkb\":\"jswtwkozzwc\"},\"id\":\"wpfaj\",\"name\":\"jwltlwtjjgu\",\"type\":\"talhsnvkcdmxzr\"}]}"; + = "{\"value\":[{\"properties\":{\"queryPackId\":\"ycsxzu\",\"timeCreated\":\"2021-06-18T01:50:48Z\",\"timeModified\":\"2021-11-03T00:52:43Z\",\"provisioningState\":\"mdesqp\"},\"location\":\"vmjcdoewb\",\"tags\":{\"xvgpiude\":\"vteo\",\"axwk\":\"gfsxzec\",\"znabaobns\":\"fykhvuhxepmru\",\"ihywartspph\":\"ujdjltymkmvg\"},\"id\":\"ixkykxd\",\"name\":\"sj\",\"type\":\"emmucfxh\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response = manager.queryPacks().list(com.azure.core.util.Context.NONE); - Assertions.assertEquals("pimaqxzhemjyh", response.iterator().next().location()); - Assertions.assertEquals("jswtwkozzwc", response.iterator().next().tags().get("lkb")); + Assertions.assertEquals("vmjcdoewb", response.iterator().next().location()); + Assertions.assertEquals("vteo", response.iterator().next().tags().get("xvgpiude")); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksResourceTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksResourceTests.java deleted file mode 100644 index 7bb9c15f45e0..000000000000 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/QueryPacksResourceTests.java +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.loganalytics.generated; - -import com.azure.core.util.BinaryData; -import com.azure.resourcemanager.loganalytics.models.QueryPacksResource; -import java.util.HashMap; -import java.util.Map; -import org.junit.jupiter.api.Assertions; - -public final class QueryPacksResourceTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - QueryPacksResource model = BinaryData.fromString( - "{\"location\":\"lokjyemkk\",\"tags\":{\"ejspodmail\":\"pjoxzjnch\",\"yahux\":\"ydehoj\",\"vcputegj\":\"npmqnjaqwixjspro\",\"uuvmkjozkrwfnd\":\"wmfdatscmdvpjhul\"},\"id\":\"odjpslwejd\",\"name\":\"vwryoqpso\",\"type\":\"cctazakljlahbc\"}") - .toObject(QueryPacksResource.class); - Assertions.assertEquals("lokjyemkk", model.location()); - Assertions.assertEquals("pjoxzjnch", model.tags().get("ejspodmail")); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - QueryPacksResource model = new QueryPacksResource().withLocation("lokjyemkk") - .withTags(mapOf("ejspodmail", "pjoxzjnch", "yahux", "ydehoj", "vcputegj", "npmqnjaqwixjspro", - "uuvmkjozkrwfnd", "wmfdatscmdvpjhul")); - model = BinaryData.fromObject(model).toObject(QueryPacksResource.class); - Assertions.assertEquals("lokjyemkk", model.location()); - Assertions.assertEquals("pjoxzjnch", model.tags().get("ejspodmail")); - } - - // Use "Map.of" if available - @SuppressWarnings("unchecked") - private static Map mapOf(Object... inputs) { - Map map = new HashMap<>(); - for (int i = 0; i < inputs.length; i += 2) { - String key = (String) inputs[i]; - T value = (T) inputs[i + 1]; - map.put(key, value); - } - return map; - } -} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ResourceAssociationTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ResourceAssociationTests.java new file mode 100644 index 000000000000..4cf7556677b5 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ResourceAssociationTests.java @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.ResourceAssociation; +import com.azure.resourcemanager.loganalytics.models.ResourceAssociationAccessMode; +import org.junit.jupiter.api.Assertions; + +public final class ResourceAssociationTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + ResourceAssociation model = BinaryData.fromString("{\"name\":\"fnmdxotn\",\"accessMode\":\"Learning\"}") + .toObject(ResourceAssociation.class); + Assertions.assertEquals("fnmdxotn", model.name()); + Assertions.assertEquals(ResourceAssociationAccessMode.LEARNING, model.accessMode()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + ResourceAssociation model + = new ResourceAssociation().withName("fnmdxotn").withAccessMode(ResourceAssociationAccessMode.LEARNING); + model = BinaryData.fromObject(model).toObject(ResourceAssociation.class); + Assertions.assertEquals("fnmdxotn", model.name()); + Assertions.assertEquals(ResourceAssociationAccessMode.LEARNING, model.accessMode()); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/RestoredLogsTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/RestoredLogsTests.java index b37076c3ed16..27622c44b1bb 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/RestoredLogsTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/RestoredLogsTests.java @@ -13,21 +13,21 @@ public final class RestoredLogsTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { RestoredLogs model = BinaryData.fromString( - "{\"startRestoreTime\":\"2021-08-18T12:02:08Z\",\"endRestoreTime\":\"2021-10-23T03:32:09Z\",\"sourceTable\":\"zydvfvf\",\"azureAsyncOperationId\":\"naeo\"}") + "{\"startRestoreTime\":\"2021-10-09T17:15:47Z\",\"endRestoreTime\":\"2021-11-26T04:46:53Z\",\"sourceTable\":\"cedcpnmdy\",\"azureAsyncOperationId\":\"nwzxltjcv\"}") .toObject(RestoredLogs.class); - Assertions.assertEquals(OffsetDateTime.parse("2021-08-18T12:02:08Z"), model.startRestoreTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-10-23T03:32:09Z"), model.endRestoreTime()); - Assertions.assertEquals("zydvfvf", model.sourceTable()); + Assertions.assertEquals(OffsetDateTime.parse("2021-10-09T17:15:47Z"), model.startRestoreTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-11-26T04:46:53Z"), model.endRestoreTime()); + Assertions.assertEquals("cedcpnmdy", model.sourceTable()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - RestoredLogs model = new RestoredLogs().withStartRestoreTime(OffsetDateTime.parse("2021-08-18T12:02:08Z")) - .withEndRestoreTime(OffsetDateTime.parse("2021-10-23T03:32:09Z")) - .withSourceTable("zydvfvf"); + RestoredLogs model = new RestoredLogs().withStartRestoreTime(OffsetDateTime.parse("2021-10-09T17:15:47Z")) + .withEndRestoreTime(OffsetDateTime.parse("2021-11-26T04:46:53Z")) + .withSourceTable("cedcpnmdy"); model = BinaryData.fromObject(model).toObject(RestoredLogs.class); - Assertions.assertEquals(OffsetDateTime.parse("2021-08-18T12:02:08Z"), model.startRestoreTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-10-23T03:32:09Z"), model.endRestoreTime()); - Assertions.assertEquals("zydvfvf", model.sourceTable()); + Assertions.assertEquals(OffsetDateTime.parse("2021-10-09T17:15:47Z"), model.startRestoreTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-11-26T04:46:53Z"), model.endRestoreTime()); + Assertions.assertEquals("cedcpnmdy", model.sourceTable()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ResultStatisticsTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ResultStatisticsTests.java index e9b3a05e3a98..b72f364ca3ad 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ResultStatisticsTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ResultStatisticsTests.java @@ -11,7 +11,7 @@ public final class ResultStatisticsTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { ResultStatistics model - = BinaryData.fromString("{\"progress\":40.47698,\"ingestedRecords\":1226403170,\"scannedGb\":23.974842}") + = BinaryData.fromString("{\"progress\":68.59587,\"ingestedRecords\":823307226,\"scannedGb\":19.583012}") .toObject(ResultStatistics.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/RuleDefinitionTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/RuleDefinitionTests.java new file mode 100644 index 000000000000..c54c051e2f1d --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/RuleDefinitionTests.java @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.RuleDefinition; +import com.azure.resourcemanager.loganalytics.models.TimeSelectorEnum; +import java.time.OffsetDateTime; +import org.junit.jupiter.api.Assertions; + +public final class RuleDefinitionTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + RuleDefinition model = BinaryData.fromString( + "{\"query\":\"hahzvechndbnwi\",\"binSize\":1717475306,\"binDelay\":36238226,\"binStartTime\":\"2021-06-22T19:10:38Z\",\"timeSelector\":\"TimeGenerated\",\"destinationTable\":\"ubwefqs\"}") + .toObject(RuleDefinition.class); + Assertions.assertEquals("hahzvechndbnwi", model.query()); + Assertions.assertEquals(1717475306, model.binSize()); + Assertions.assertEquals(36238226, model.binDelay()); + Assertions.assertEquals(OffsetDateTime.parse("2021-06-22T19:10:38Z"), model.binStartTime()); + Assertions.assertEquals(TimeSelectorEnum.TIME_GENERATED, model.timeSelector()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + RuleDefinition model = new RuleDefinition().withQuery("hahzvechndbnwi") + .withBinSize(1717475306) + .withBinDelay(36238226) + .withBinStartTime(OffsetDateTime.parse("2021-06-22T19:10:38Z")) + .withTimeSelector(TimeSelectorEnum.TIME_GENERATED); + model = BinaryData.fromObject(model).toObject(RuleDefinition.class); + Assertions.assertEquals("hahzvechndbnwi", model.query()); + Assertions.assertEquals(1717475306, model.binSize()); + Assertions.assertEquals(36238226, model.binDelay()); + Assertions.assertEquals(OffsetDateTime.parse("2021-06-22T19:10:38Z"), model.binStartTime()); + Assertions.assertEquals(TimeSelectorEnum.TIME_GENERATED, model.timeSelector()); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchInnerTests.java index f3d67547b9b4..5712414c503d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchInnerTests.java @@ -14,38 +14,38 @@ public final class SavedSearchInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { SavedSearchInner model = BinaryData.fromString( - "{\"etag\":\"xc\",\"properties\":{\"category\":\"sbfov\",\"displayName\":\"srruvwbhsqfsubcg\",\"query\":\"birx\",\"functionAlias\":\"ybsrfbjfdtwss\",\"functionParameters\":\"ftpvjzbexil\",\"version\":8368126717708512338,\"tags\":[{\"name\":\"nvwpmqtaruouj\",\"value\":\"kcjhwqytjrybnwj\"}]},\"id\":\"wgdrjervnaenqp\",\"name\":\"hin\",\"type\":\"oygmift\"}") + "{\"etag\":\"mv\",\"properties\":{\"category\":\"ekg\",\"displayName\":\"wozuhkf\",\"query\":\"bsjyofdx\",\"functionAlias\":\"us\",\"functionParameters\":\"touwaboekqv\",\"version\":2699583635820054770,\"tags\":[{\"name\":\"vbxwyjsflhh\",\"value\":\"aalnjixi\"}]},\"id\":\"xyawj\",\"name\":\"yaqcslyjpkiidz\",\"type\":\"exznelixhnr\"}") .toObject(SavedSearchInner.class); - Assertions.assertEquals("xc", model.etag()); - Assertions.assertEquals("sbfov", model.category()); - Assertions.assertEquals("srruvwbhsqfsubcg", model.displayName()); - Assertions.assertEquals("birx", model.query()); - Assertions.assertEquals("ybsrfbjfdtwss", model.functionAlias()); - Assertions.assertEquals("ftpvjzbexil", model.functionParameters()); - Assertions.assertEquals(8368126717708512338L, model.version()); - Assertions.assertEquals("nvwpmqtaruouj", model.tags().get(0).name()); - Assertions.assertEquals("kcjhwqytjrybnwj", model.tags().get(0).value()); + Assertions.assertEquals("mv", model.etag()); + Assertions.assertEquals("ekg", model.category()); + Assertions.assertEquals("wozuhkf", model.displayName()); + Assertions.assertEquals("bsjyofdx", model.query()); + Assertions.assertEquals("us", model.functionAlias()); + Assertions.assertEquals("touwaboekqv", model.functionParameters()); + Assertions.assertEquals(2699583635820054770L, model.version()); + Assertions.assertEquals("vbxwyjsflhh", model.tags().get(0).name()); + Assertions.assertEquals("aalnjixi", model.tags().get(0).value()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - SavedSearchInner model = new SavedSearchInner().withEtag("xc") - .withCategory("sbfov") - .withDisplayName("srruvwbhsqfsubcg") - .withQuery("birx") - .withFunctionAlias("ybsrfbjfdtwss") - .withFunctionParameters("ftpvjzbexil") - .withVersion(8368126717708512338L) - .withTags(Arrays.asList(new Tag().withName("nvwpmqtaruouj").withValue("kcjhwqytjrybnwj"))); + SavedSearchInner model = new SavedSearchInner().withEtag("mv") + .withCategory("ekg") + .withDisplayName("wozuhkf") + .withQuery("bsjyofdx") + .withFunctionAlias("us") + .withFunctionParameters("touwaboekqv") + .withVersion(2699583635820054770L) + .withTags(Arrays.asList(new Tag().withName("vbxwyjsflhh").withValue("aalnjixi"))); model = BinaryData.fromObject(model).toObject(SavedSearchInner.class); - Assertions.assertEquals("xc", model.etag()); - Assertions.assertEquals("sbfov", model.category()); - Assertions.assertEquals("srruvwbhsqfsubcg", model.displayName()); - Assertions.assertEquals("birx", model.query()); - Assertions.assertEquals("ybsrfbjfdtwss", model.functionAlias()); - Assertions.assertEquals("ftpvjzbexil", model.functionParameters()); - Assertions.assertEquals(8368126717708512338L, model.version()); - Assertions.assertEquals("nvwpmqtaruouj", model.tags().get(0).name()); - Assertions.assertEquals("kcjhwqytjrybnwj", model.tags().get(0).value()); + Assertions.assertEquals("mv", model.etag()); + Assertions.assertEquals("ekg", model.category()); + Assertions.assertEquals("wozuhkf", model.displayName()); + Assertions.assertEquals("bsjyofdx", model.query()); + Assertions.assertEquals("us", model.functionAlias()); + Assertions.assertEquals("touwaboekqv", model.functionParameters()); + Assertions.assertEquals(2699583635820054770L, model.version()); + Assertions.assertEquals("vbxwyjsflhh", model.tags().get(0).name()); + Assertions.assertEquals("aalnjixi", model.tags().get(0).value()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchPropertiesTests.java index 48746c228292..133048ecba43 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchPropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchPropertiesTests.java @@ -14,37 +14,36 @@ public final class SavedSearchPropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { SavedSearchProperties model = BinaryData.fromString( - "{\"category\":\"nzdndslgna\",\"displayName\":\"qig\",\"query\":\"nduhavhqlkthum\",\"functionAlias\":\"olbgycduiertgccy\",\"functionParameters\":\"aolps\",\"version\":1053709421770726696,\"tags\":[{\"name\":\"mdnbbglzpswiy\",\"value\":\"mcwyhzdxssadb\"},{\"name\":\"mnvdfzn\",\"value\":\"daodvxzbncblyl\"},{\"name\":\"stdbhhxsrzdzu\",\"value\":\"erscdntne\"}]}") + "{\"category\":\"tfolhbnx\",\"displayName\":\"nalaulppg\",\"query\":\"dtpnapnyiropuhp\",\"functionAlias\":\"vpgylgqgitxmed\",\"functionParameters\":\"c\",\"version\":6530746203139727560,\"tags\":[{\"name\":\"wncwzzhxgktrmg\",\"value\":\"cnapkteoell\"},{\"name\":\"pt\",\"value\":\"d\"},{\"name\":\"gpfqbuace\",\"value\":\"pzfqrhhuaoppp\"}]}") .toObject(SavedSearchProperties.class); - Assertions.assertEquals("nzdndslgna", model.category()); - Assertions.assertEquals("qig", model.displayName()); - Assertions.assertEquals("nduhavhqlkthum", model.query()); - Assertions.assertEquals("olbgycduiertgccy", model.functionAlias()); - Assertions.assertEquals("aolps", model.functionParameters()); - Assertions.assertEquals(1053709421770726696L, model.version()); - Assertions.assertEquals("mdnbbglzpswiy", model.tags().get(0).name()); - Assertions.assertEquals("mcwyhzdxssadb", model.tags().get(0).value()); + Assertions.assertEquals("tfolhbnx", model.category()); + Assertions.assertEquals("nalaulppg", model.displayName()); + Assertions.assertEquals("dtpnapnyiropuhp", model.query()); + Assertions.assertEquals("vpgylgqgitxmed", model.functionAlias()); + Assertions.assertEquals("c", model.functionParameters()); + Assertions.assertEquals(6530746203139727560L, model.version()); + Assertions.assertEquals("wncwzzhxgktrmg", model.tags().get(0).name()); + Assertions.assertEquals("cnapkteoell", model.tags().get(0).value()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - SavedSearchProperties model = new SavedSearchProperties().withCategory("nzdndslgna") - .withDisplayName("qig") - .withQuery("nduhavhqlkthum") - .withFunctionAlias("olbgycduiertgccy") - .withFunctionParameters("aolps") - .withVersion(1053709421770726696L) - .withTags(Arrays.asList(new Tag().withName("mdnbbglzpswiy").withValue("mcwyhzdxssadb"), - new Tag().withName("mnvdfzn").withValue("daodvxzbncblyl"), - new Tag().withName("stdbhhxsrzdzu").withValue("erscdntne"))); + SavedSearchProperties model = new SavedSearchProperties().withCategory("tfolhbnx") + .withDisplayName("nalaulppg") + .withQuery("dtpnapnyiropuhp") + .withFunctionAlias("vpgylgqgitxmed") + .withFunctionParameters("c") + .withVersion(6530746203139727560L) + .withTags(Arrays.asList(new Tag().withName("wncwzzhxgktrmg").withValue("cnapkteoell"), + new Tag().withName("pt").withValue("d"), new Tag().withName("gpfqbuace").withValue("pzfqrhhuaoppp"))); model = BinaryData.fromObject(model).toObject(SavedSearchProperties.class); - Assertions.assertEquals("nzdndslgna", model.category()); - Assertions.assertEquals("qig", model.displayName()); - Assertions.assertEquals("nduhavhqlkthum", model.query()); - Assertions.assertEquals("olbgycduiertgccy", model.functionAlias()); - Assertions.assertEquals("aolps", model.functionParameters()); - Assertions.assertEquals(1053709421770726696L, model.version()); - Assertions.assertEquals("mdnbbglzpswiy", model.tags().get(0).name()); - Assertions.assertEquals("mcwyhzdxssadb", model.tags().get(0).value()); + Assertions.assertEquals("tfolhbnx", model.category()); + Assertions.assertEquals("nalaulppg", model.displayName()); + Assertions.assertEquals("dtpnapnyiropuhp", model.query()); + Assertions.assertEquals("vpgylgqgitxmed", model.functionAlias()); + Assertions.assertEquals("c", model.functionParameters()); + Assertions.assertEquals(6530746203139727560L, model.version()); + Assertions.assertEquals("wncwzzhxgktrmg", model.tags().get(0).name()); + Assertions.assertEquals("cnapkteoell", model.tags().get(0).value()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesCreateOrUpdateWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesCreateOrUpdateWithResponseMockTests.java index 7cb0ef1ba341..1a82fbfd7007 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesCreateOrUpdateWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesCreateOrUpdateWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.SavedSearch; @@ -23,37 +23,39 @@ public final class SavedSearchesCreateOrUpdateWithResponseMockTests { @Test public void testCreateOrUpdateWithResponse() throws Exception { String responseStr - = "{\"etag\":\"refqy\",\"properties\":{\"category\":\"qotoihiqakydiwfb\",\"displayName\":\"kwpzdqtvh\",\"query\":\"spodaqax\",\"functionAlias\":\"pie\",\"functionParameters\":\"bebjfu\",\"version\":8153035996823274813,\"tags\":[{\"name\":\"h\",\"value\":\"lpnfpubntnb\"},{\"name\":\"tzviqsowsaaelcat\",\"value\":\"cjuhplrvkm\"},{\"name\":\"cwmjvlg\",\"value\":\"ggcvk\"}]},\"id\":\"y\",\"name\":\"izrzb\",\"type\":\"psfxsf\"}"; + = "{\"etag\":\"nynkbwet\",\"properties\":{\"category\":\"juhpsprkzyau\",\"displayName\":\"ia\",\"query\":\"cxnafbwqrooh\",\"functionAlias\":\"ovmaonurjtum\",\"functionParameters\":\"ihpvecmslclblyj\",\"version\":1273828074911332298,\"tags\":[{\"name\":\"uscv\",\"value\":\"f\"},{\"name\":\"igctmgxuupbezq\",\"value\":\"cydrtceukdqkk\"}]},\"id\":\"ihztgeqmgqzgwldo\",\"name\":\"chillcecf\",\"type\":\"huwaoaguhic\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); SavedSearch response = manager.savedSearches() - .define("ikcyyc") - .withExistingWorkspace("khlowkxxpv", "rdfjmzsyzfhotl") - .withCategory("hv") - .withDisplayName("uic") - .withQuery("hvtrrmhwrbfdpyf") - .withTags(Arrays.asList(new Tag().withName("ooclutnp").withValue("memczjkmmyk"), - new Tag().withName("ujxsglhsr").withValue("rye"))) - .withEtag("nsjlpjrtws") - .withFunctionAlias("bhvjglr") - .withFunctionParameters("uyzlw") - .withVersion(5515716031108163936L) + .define("uzivensrpmeyyvp") + .withExistingWorkspace("lpdwwexymzvlazi", "bhpwvqsgnyy") + .withCategory("jp") + .withDisplayName("gsksrfhf") + .withQuery("olmk") + .withTags(Arrays.asList(new Tag().withName("uiaclkiexhajlfn").withValue("hiqfyuttdiy"), + new Tag().withName("b").withValue("vnwsw"), + new Tag().withName("txkyctwwgzwxjlm").withValue("cvogygzyvne"), + new Tag().withName("zaifghtmoqqtlff").withValue("zbkr"))) + .withEtag("atlb") + .withFunctionAlias("nxwcdommpv") + .withFunctionParameters("awz") + .withVersion(371412437274292802L) .create(); - Assertions.assertEquals("refqy", response.etag()); - Assertions.assertEquals("qotoihiqakydiwfb", response.category()); - Assertions.assertEquals("kwpzdqtvh", response.displayName()); - Assertions.assertEquals("spodaqax", response.query()); - Assertions.assertEquals("pie", response.functionAlias()); - Assertions.assertEquals("bebjfu", response.functionParameters()); - Assertions.assertEquals(8153035996823274813L, response.version()); - Assertions.assertEquals("h", response.tags().get(0).name()); - Assertions.assertEquals("lpnfpubntnb", response.tags().get(0).value()); + Assertions.assertEquals("nynkbwet", response.etag()); + Assertions.assertEquals("juhpsprkzyau", response.category()); + Assertions.assertEquals("ia", response.displayName()); + Assertions.assertEquals("cxnafbwqrooh", response.query()); + Assertions.assertEquals("ovmaonurjtum", response.functionAlias()); + Assertions.assertEquals("ihpvecmslclblyj", response.functionParameters()); + Assertions.assertEquals(1273828074911332298L, response.version()); + Assertions.assertEquals("uscv", response.tags().get(0).name()); + Assertions.assertEquals("f", response.tags().get(0).value()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesDeleteWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesDeleteWithResponseMockTests.java index 75719dae958f..4f5a5307d24f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesDeleteWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesDeleteWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import java.nio.charset.StandardCharsets; @@ -25,10 +25,10 @@ public void testDeleteWithResponse() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); manager.savedSearches() - .deleteWithResponse("fcsserxhtvsox", "lwntsjgqrs", "y", com.azure.core.util.Context.NONE); + .deleteWithResponse("tzqdd", "jwfljhznamtua", "mzwcjjncqt", com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesGetWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesGetWithResponseMockTests.java index c8563f46f382..852804f280c1 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesGetWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesGetWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.SavedSearch; @@ -21,27 +21,26 @@ public final class SavedSearchesGetWithResponseMockTests { @Test public void testGetWithResponse() throws Exception { String responseStr - = "{\"etag\":\"gm\",\"properties\":{\"category\":\"rwahzjmucftbyr\",\"displayName\":\"lrohkpig\",\"query\":\"fusuckzmkwklsno\",\"functionAlias\":\"xmqeqalh\",\"functionParameters\":\"nhg\",\"version\":2571955917130233939,\"tags\":[{\"name\":\"fsvkhgbvqtanarfd\",\"value\":\"pukhpyrne\"},{\"name\":\"zjcpeogk\",\"value\":\"nmg\"}]},\"id\":\"ro\",\"name\":\"xddbhfhpfpaz\",\"type\":\"zoyw\"}"; + = "{\"etag\":\"uvbxngr\",\"properties\":{\"category\":\"bwggahtt\",\"displayName\":\"lswva\",\"query\":\"qfutlxjo\",\"functionAlias\":\"asunwqrjzfrgq\",\"functionParameters\":\"ohcmbu\",\"version\":765942631551785851,\"tags\":[{\"name\":\"hmbpyryxamebly\",\"value\":\"yvk\"},{\"name\":\"kmrocxne\",\"value\":\"v\"}]},\"id\":\"mtodl\",\"name\":\"pyapucygvoav\",\"type\":\"unssxlghieegjl\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - SavedSearch response = manager.savedSearches() - .getWithResponse("ruuuybnch", "szizoyuelyetndnb", "qyggagfl", com.azure.core.util.Context.NONE) - .getValue(); + SavedSearch response + = manager.savedSearches().getWithResponse("z", "izvg", "gat", com.azure.core.util.Context.NONE).getValue(); - Assertions.assertEquals("gm", response.etag()); - Assertions.assertEquals("rwahzjmucftbyr", response.category()); - Assertions.assertEquals("lrohkpig", response.displayName()); - Assertions.assertEquals("fusuckzmkwklsno", response.query()); - Assertions.assertEquals("xmqeqalh", response.functionAlias()); - Assertions.assertEquals("nhg", response.functionParameters()); - Assertions.assertEquals(2571955917130233939L, response.version()); - Assertions.assertEquals("fsvkhgbvqtanarfd", response.tags().get(0).name()); - Assertions.assertEquals("pukhpyrne", response.tags().get(0).value()); + Assertions.assertEquals("uvbxngr", response.etag()); + Assertions.assertEquals("bwggahtt", response.category()); + Assertions.assertEquals("lswva", response.displayName()); + Assertions.assertEquals("qfutlxjo", response.query()); + Assertions.assertEquals("asunwqrjzfrgq", response.functionAlias()); + Assertions.assertEquals("ohcmbu", response.functionParameters()); + Assertions.assertEquals(765942631551785851L, response.version()); + Assertions.assertEquals("hmbpyryxamebly", response.tags().get(0).name()); + Assertions.assertEquals("yvk", response.tags().get(0).value()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesListByWorkspaceWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesListByWorkspaceWithResponseMockTests.java index 3ab8a59de174..b5d812ed4b24 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesListByWorkspaceWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesListByWorkspaceWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.SavedSearchesListResult; @@ -21,27 +21,27 @@ public final class SavedSearchesListByWorkspaceWithResponseMockTests { @Test public void testListByWorkspaceWithResponse() throws Exception { String responseStr - = "{\"value\":[{\"etag\":\"xh\",\"properties\":{\"category\":\"sd\",\"displayName\":\"ugwbsreurfqkf\",\"query\":\"arenlvhhtklnvnaf\",\"functionAlias\":\"kyfede\",\"functionParameters\":\"bo\",\"version\":5433915956599731708,\"tags\":[{\"name\":\"p\",\"value\":\"kkhminqcymczngn\"}]},\"id\":\"dxxewuninv\",\"name\":\"db\",\"type\":\"h\"},{\"etag\":\"dtvqe\",\"properties\":{\"category\":\"rqctmxxdtdd\",\"displayName\":\"flhuytxzv\",\"query\":\"zna\",\"functionAlias\":\"bannovvoxczytp\",\"functionParameters\":\"nwvroevytlyokrr\",\"version\":4414369503729973449,\"tags\":[{\"name\":\"nsa\",\"value\":\"bcrymodizrx\"},{\"name\":\"lobdxna\",\"value\":\"pmkmlmvevfx\"},{\"name\":\"op\",\"value\":\"hbzxli\"},{\"name\":\"hrdd\",\"value\":\"tfgxqbawpcb\"}]},\"id\":\"nzqcy\",\"name\":\"napqo\",\"type\":\"yuicdhzbdy\"},{\"etag\":\"wgbdvibidmhmwffp\",\"properties\":{\"category\":\"fmuvapckccr\",\"displayName\":\"vwe\",\"query\":\"oxoyyukp\",\"functionAlias\":\"immoiroqboshbrag\",\"functionParameters\":\"yyrmfsvbp\",\"version\":3531624930963004551,\"tags\":[{\"name\":\"ppdbwnupgahxkum\",\"value\":\"sjcaacfdmmcpugm\"},{\"name\":\"hqepvufhbzehewh\",\"value\":\"qhnlbqnbld\"}]},\"id\":\"eaclgschorimk\",\"name\":\"srrm\",\"type\":\"ucsofldpuviyf\"},{\"etag\":\"abeolhbhlvbm\",\"properties\":{\"category\":\"uqibsxtkcu\",\"displayName\":\"fbsfarfsiow\",\"query\":\"kjxnqpvwgfstmhq\",\"functionAlias\":\"izmdksa\",\"functionParameters\":\"fcluqvo\",\"version\":8904305259908062937,\"tags\":[{\"name\":\"mr\",\"value\":\"vwg\"}]},\"id\":\"wwpbmzgwesyd\",\"name\":\"xwefohecbvopwndy\",\"type\":\"leallklm\"}]}"; + = "{\"value\":[{\"etag\":\"i\",\"properties\":{\"category\":\"irpiwrqofulopmj\",\"displayName\":\"lexwhcbjp\",\"query\":\"bke\",\"functionAlias\":\"uuuercta\",\"functionParameters\":\"yintqpbrlcy\",\"version\":5915975308764094349,\"tags\":[{\"name\":\"go\",\"value\":\"xyf\"}]},\"id\":\"rucvcrrpcjttbs\",\"name\":\"vjeaqnrmvvfkoxml\",\"type\":\"hktuidvrma\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); SavedSearchesListResult response = manager.savedSearches() - .listByWorkspaceWithResponse("xhpdulontacnpqwt", "htuevrhrljy", com.azure.core.util.Context.NONE) + .listByWorkspaceWithResponse("vvpa", "eksgbuxantuygd", com.azure.core.util.Context.NONE) .getValue(); - Assertions.assertEquals("xh", response.value().get(0).etag()); - Assertions.assertEquals("sd", response.value().get(0).category()); - Assertions.assertEquals("ugwbsreurfqkf", response.value().get(0).displayName()); - Assertions.assertEquals("arenlvhhtklnvnaf", response.value().get(0).query()); - Assertions.assertEquals("kyfede", response.value().get(0).functionAlias()); - Assertions.assertEquals("bo", response.value().get(0).functionParameters()); - Assertions.assertEquals(5433915956599731708L, response.value().get(0).version()); - Assertions.assertEquals("p", response.value().get(0).tags().get(0).name()); - Assertions.assertEquals("kkhminqcymczngn", response.value().get(0).tags().get(0).value()); + Assertions.assertEquals("i", response.value().get(0).etag()); + Assertions.assertEquals("irpiwrqofulopmj", response.value().get(0).category()); + Assertions.assertEquals("lexwhcbjp", response.value().get(0).displayName()); + Assertions.assertEquals("bke", response.value().get(0).query()); + Assertions.assertEquals("uuuercta", response.value().get(0).functionAlias()); + Assertions.assertEquals("yintqpbrlcy", response.value().get(0).functionParameters()); + Assertions.assertEquals(5915975308764094349L, response.value().get(0).version()); + Assertions.assertEquals("go", response.value().get(0).tags().get(0).name()); + Assertions.assertEquals("xyf", response.value().get(0).tags().get(0).value()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesListResultInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesListResultInnerTests.java index ba62da5bddc0..c21dae16b4ed 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesListResultInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SavedSearchesListResultInnerTests.java @@ -15,69 +15,49 @@ public final class SavedSearchesListResultInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { SavedSearchesListResultInner model = BinaryData.fromString( - "{\"value\":[{\"etag\":\"abnetshh\",\"properties\":{\"category\":\"zhedplvwiw\",\"displayName\":\"bmwmbesldnkw\",\"query\":\"tppjflcx\",\"functionAlias\":\"aokonzmnsik\",\"functionParameters\":\"kqze\",\"version\":4891735483783264620,\"tags\":[{\"name\":\"fzxmhhvhgureodkw\",\"value\":\"bdagxt\"}]},\"id\":\"bqdxbx\",\"name\":\"akbogqxndlkzgxh\",\"type\":\"ripl\"},{\"etag\":\"odxun\",\"properties\":{\"category\":\"bebxmubyyntwl\",\"displayName\":\"bqtkoievseotgqr\",\"query\":\"ltmuwlauwzizx\",\"functionAlias\":\"pgcjefuzmuvp\",\"functionParameters\":\"tdum\",\"version\":411911013999749991,\"tags\":[{\"name\":\"bmnzbtbhjpgl\",\"value\":\"fgohdneuelfphs\"},{\"name\":\"yhtozfikdowwqu\",\"value\":\"v\"},{\"name\":\"zx\",\"value\":\"lvithhqzonosgg\"},{\"name\":\"hcohfwdsjnk\",\"value\":\"ljuti\"}]},\"id\":\"swacffgdkzz\",\"name\":\"wkfvhqcrailvp\",\"type\":\"ppfufl\"},{\"etag\":\"dmhdlxyjr\",\"properties\":{\"category\":\"sag\",\"displayName\":\"fcnihgwq\",\"query\":\"pnedgf\",\"functionAlias\":\"vkcvqvpkeqd\",\"functionParameters\":\"drhvoodsotbo\",\"version\":596884672630210595,\"tags\":[{\"name\":\"j\",\"value\":\"vnhdldwmgxcxr\"},{\"name\":\"lpmutwuoegrpkhj\",\"value\":\"niyqslui\"}]},\"id\":\"pdggkzzlvm\",\"name\":\"mpaxmodfvuefywsb\",\"type\":\"fvmwy\"},{\"etag\":\"fouyf\",\"properties\":{\"category\":\"aakc\",\"displayName\":\"wiyzvqtmnubexkp\",\"query\":\"ksmond\",\"functionAlias\":\"quxvypomgkop\",\"functionParameters\":\"hojvpajqgxysmocm\",\"version\":3563158574762399534,\"tags\":[{\"name\":\"kcxozapvhelx\",\"value\":\"rgly\"},{\"name\":\"tddckcb\",\"value\":\"uejrjxgc\"},{\"name\":\"qibrhosxsdqrhzoy\",\"value\":\"i\"}]},\"id\":\"m\",\"name\":\"qyib\",\"type\":\"hwflu\"}]}") + "{\"value\":[{\"etag\":\"xcto\",\"properties\":{\"category\":\"gbkdmoizpos\",\"displayName\":\"mgrcfbu\",\"query\":\"rmfqjhhkxbpvj\",\"functionAlias\":\"jhxxjyn\",\"functionParameters\":\"divkrt\",\"version\":4478371279557844955,\"tags\":[{\"name\":\"vszjfauvjfdxxi\",\"value\":\"e\"},{\"name\":\"vtcqaqtdo\",\"value\":\"mcbxvwvxysl\"}]},\"id\":\"bhsfxob\",\"name\":\"ytkblmpew\",\"type\":\"wfbkrvrns\"},{\"etag\":\"hqjohxcrsbfova\",\"properties\":{\"category\":\"rruvwbhsq\",\"displayName\":\"sub\",\"query\":\"gjb\",\"functionAlias\":\"xb\",\"functionParameters\":\"bsrfbj\",\"version\":3597217556472938019,\"tags\":[{\"name\":\"otftpvjzbexilz\",\"value\":\"nfqqnvwp\"},{\"name\":\"qtaruoujmkcjhwq\",\"value\":\"tjrybnwjewgdr\"}]},\"id\":\"ervnaenqpehi\",\"name\":\"doy\",\"type\":\"mifthnzdnd\"}]}") .toObject(SavedSearchesListResultInner.class); - Assertions.assertEquals("abnetshh", model.value().get(0).etag()); - Assertions.assertEquals("zhedplvwiw", model.value().get(0).category()); - Assertions.assertEquals("bmwmbesldnkw", model.value().get(0).displayName()); - Assertions.assertEquals("tppjflcx", model.value().get(0).query()); - Assertions.assertEquals("aokonzmnsik", model.value().get(0).functionAlias()); - Assertions.assertEquals("kqze", model.value().get(0).functionParameters()); - Assertions.assertEquals(4891735483783264620L, model.value().get(0).version()); - Assertions.assertEquals("fzxmhhvhgureodkw", model.value().get(0).tags().get(0).name()); - Assertions.assertEquals("bdagxt", model.value().get(0).tags().get(0).value()); + Assertions.assertEquals("xcto", model.value().get(0).etag()); + Assertions.assertEquals("gbkdmoizpos", model.value().get(0).category()); + Assertions.assertEquals("mgrcfbu", model.value().get(0).displayName()); + Assertions.assertEquals("rmfqjhhkxbpvj", model.value().get(0).query()); + Assertions.assertEquals("jhxxjyn", model.value().get(0).functionAlias()); + Assertions.assertEquals("divkrt", model.value().get(0).functionParameters()); + Assertions.assertEquals(4478371279557844955L, model.value().get(0).version()); + Assertions.assertEquals("vszjfauvjfdxxi", model.value().get(0).tags().get(0).name()); + Assertions.assertEquals("e", model.value().get(0).tags().get(0).value()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { SavedSearchesListResultInner model = new SavedSearchesListResultInner().withValue(Arrays.asList( - new SavedSearchInner().withEtag("abnetshh") - .withCategory("zhedplvwiw") - .withDisplayName("bmwmbesldnkw") - .withQuery("tppjflcx") - .withFunctionAlias("aokonzmnsik") - .withFunctionParameters("kqze") - .withVersion(4891735483783264620L) - .withTags(Arrays.asList(new Tag().withName("fzxmhhvhgureodkw").withValue("bdagxt"))), - new SavedSearchInner().withEtag("odxun") - .withCategory("bebxmubyyntwl") - .withDisplayName("bqtkoievseotgqr") - .withQuery("ltmuwlauwzizx") - .withFunctionAlias("pgcjefuzmuvp") - .withFunctionParameters("tdum") - .withVersion(411911013999749991L) - .withTags(Arrays.asList(new Tag().withName("bmnzbtbhjpgl").withValue("fgohdneuelfphs"), - new Tag().withName("yhtozfikdowwqu").withValue("v"), - new Tag().withName("zx").withValue("lvithhqzonosgg"), - new Tag().withName("hcohfwdsjnk").withValue("ljuti"))), - new SavedSearchInner().withEtag("dmhdlxyjr") - .withCategory("sag") - .withDisplayName("fcnihgwq") - .withQuery("pnedgf") - .withFunctionAlias("vkcvqvpkeqd") - .withFunctionParameters("drhvoodsotbo") - .withVersion(596884672630210595L) - .withTags(Arrays.asList(new Tag().withName("j").withValue("vnhdldwmgxcxr"), - new Tag().withName("lpmutwuoegrpkhj").withValue("niyqslui"))), - new SavedSearchInner().withEtag("fouyf") - .withCategory("aakc") - .withDisplayName("wiyzvqtmnubexkp") - .withQuery("ksmond") - .withFunctionAlias("quxvypomgkop") - .withFunctionParameters("hojvpajqgxysmocm") - .withVersion(3563158574762399534L) - .withTags(Arrays.asList(new Tag().withName("kcxozapvhelx").withValue("rgly"), - new Tag().withName("tddckcb").withValue("uejrjxgc"), - new Tag().withName("qibrhosxsdqrhzoy").withValue("i"))))); + new SavedSearchInner().withEtag("xcto") + .withCategory("gbkdmoizpos") + .withDisplayName("mgrcfbu") + .withQuery("rmfqjhhkxbpvj") + .withFunctionAlias("jhxxjyn") + .withFunctionParameters("divkrt") + .withVersion(4478371279557844955L) + .withTags(Arrays.asList(new Tag().withName("vszjfauvjfdxxi").withValue("e"), + new Tag().withName("vtcqaqtdo").withValue("mcbxvwvxysl"))), + new SavedSearchInner().withEtag("hqjohxcrsbfova") + .withCategory("rruvwbhsq") + .withDisplayName("sub") + .withQuery("gjb") + .withFunctionAlias("xb") + .withFunctionParameters("bsrfbj") + .withVersion(3597217556472938019L) + .withTags(Arrays.asList(new Tag().withName("otftpvjzbexilz").withValue("nfqqnvwp"), + new Tag().withName("qtaruoujmkcjhwq").withValue("tjrybnwjewgdr"))))); model = BinaryData.fromObject(model).toObject(SavedSearchesListResultInner.class); - Assertions.assertEquals("abnetshh", model.value().get(0).etag()); - Assertions.assertEquals("zhedplvwiw", model.value().get(0).category()); - Assertions.assertEquals("bmwmbesldnkw", model.value().get(0).displayName()); - Assertions.assertEquals("tppjflcx", model.value().get(0).query()); - Assertions.assertEquals("aokonzmnsik", model.value().get(0).functionAlias()); - Assertions.assertEquals("kqze", model.value().get(0).functionParameters()); - Assertions.assertEquals(4891735483783264620L, model.value().get(0).version()); - Assertions.assertEquals("fzxmhhvhgureodkw", model.value().get(0).tags().get(0).name()); - Assertions.assertEquals("bdagxt", model.value().get(0).tags().get(0).value()); + Assertions.assertEquals("xcto", model.value().get(0).etag()); + Assertions.assertEquals("gbkdmoizpos", model.value().get(0).category()); + Assertions.assertEquals("mgrcfbu", model.value().get(0).displayName()); + Assertions.assertEquals("rmfqjhhkxbpvj", model.value().get(0).query()); + Assertions.assertEquals("jhxxjyn", model.value().get(0).functionAlias()); + Assertions.assertEquals("divkrt", model.value().get(0).functionParameters()); + Assertions.assertEquals(4478371279557844955L, model.value().get(0).version()); + Assertions.assertEquals("vszjfauvjfdxxi", model.value().get(0).tags().get(0).name()); + Assertions.assertEquals("e", model.value().get(0).tags().get(0).value()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SchemaTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SchemaTests.java index 4b0668991e30..f0a4da19d385 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SchemaTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SchemaTests.java @@ -16,42 +16,42 @@ public final class SchemaTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { Schema model = BinaryData.fromString( - "{\"name\":\"r\",\"displayName\":\"ukiscvwmzhw\",\"description\":\"efaxvxilc\",\"columns\":[{\"name\":\"hnze\",\"type\":\"guid\",\"dataTypeHint\":\"ip\",\"displayName\":\"fzqlqhycavod\",\"description\":\"xdbeesmieknl\",\"isDefaultDisplay\":false,\"isHidden\":true},{\"name\":\"wiuagydwqf\",\"type\":\"int\",\"dataTypeHint\":\"uri\",\"displayName\":\"giagtcojo\",\"description\":\"wogfnzjvu\",\"isDefaultDisplay\":true,\"isHidden\":false}],\"standardColumns\":[{\"name\":\"uxylfsbtkadpy\",\"type\":\"string\",\"dataTypeHint\":\"ip\",\"displayName\":\"gkbugrjqct\",\"description\":\"cmisofie\",\"isDefaultDisplay\":true,\"isHidden\":true},{\"name\":\"yqdhcuplcplcw\",\"type\":\"int\",\"dataTypeHint\":\"armPath\",\"displayName\":\"lhzdsqtzb\",\"description\":\"gnowcjhfgmveca\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"teyowclu\",\"type\":\"real\",\"dataTypeHint\":\"guid\",\"displayName\":\"vgqouwifzmpj\",\"description\":\"ivqikfxcvhr\",\"isDefaultDisplay\":true,\"isHidden\":true},{\"name\":\"grttikteusqczk\",\"type\":\"real\",\"dataTypeHint\":\"ip\",\"displayName\":\"byjaffmmf\",\"description\":\"cqc\",\"isDefaultDisplay\":false,\"isHidden\":true}],\"categories\":[\"rtalmet\"],\"labels\":[\"gdslqxihhrmoo\",\"z\"],\"source\":\"customer\",\"tableType\":\"CustomLog\",\"tableSubType\":\"Classic\",\"solutions\":[\"cxa\",\"zhyrpeto\",\"e\",\"joxslhvnhla\"]}") + "{\"name\":\"xnavvwxq\",\"displayName\":\"y\",\"description\":\"nyowxwlmdjrkvfg\",\"columns\":[{\"name\":\"p\",\"type\":\"real\",\"dataTypeHint\":\"armPath\",\"displayName\":\"izsjqlhkrr\",\"description\":\"deibqip\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"ndzwmkrefa\",\"type\":\"guid\",\"dataTypeHint\":\"uri\",\"displayName\":\"kqnyh\",\"description\":\"ij\",\"isDefaultDisplay\":true,\"isHidden\":true}],\"standardColumns\":[{\"name\":\"jabibsystawf\",\"type\":\"dynamic\",\"dataTypeHint\":\"uri\",\"displayName\":\"vp\",\"description\":\"xbkzbzkdvncj\",\"isDefaultDisplay\":true,\"isHidden\":true}],\"categories\":[\"kakmokzh\",\"jk\",\"ffhmouwqlgzr\",\"zeeyebi\"],\"labels\":[\"ayuhqlbjbsy\",\"bqwrvtldgm\",\"pgvmpipaslthaqfx\"],\"source\":\"customer\",\"tableType\":\"Microsoft\",\"tableSubType\":\"Classic\",\"solutions\":[\"srezp\",\"rhneuyowq\",\"d\",\"ytisibir\"]}") .toObject(Schema.class); - Assertions.assertEquals("r", model.name()); - Assertions.assertEquals("ukiscvwmzhw", model.displayName()); - Assertions.assertEquals("efaxvxilc", model.description()); - Assertions.assertEquals("hnze", model.columns().get(0).name()); - Assertions.assertEquals(ColumnTypeEnum.GUID, model.columns().get(0).type()); - Assertions.assertEquals(ColumnDataTypeHintEnum.IP, model.columns().get(0).dataTypeHint()); - Assertions.assertEquals("fzqlqhycavod", model.columns().get(0).displayName()); - Assertions.assertEquals("xdbeesmieknl", model.columns().get(0).description()); + Assertions.assertEquals("xnavvwxq", model.name()); + Assertions.assertEquals("y", model.displayName()); + Assertions.assertEquals("nyowxwlmdjrkvfg", model.description()); + Assertions.assertEquals("p", model.columns().get(0).name()); + Assertions.assertEquals(ColumnTypeEnum.REAL, model.columns().get(0).type()); + Assertions.assertEquals(ColumnDataTypeHintEnum.ARM_PATH, model.columns().get(0).dataTypeHint()); + Assertions.assertEquals("izsjqlhkrr", model.columns().get(0).displayName()); + Assertions.assertEquals("deibqip", model.columns().get(0).description()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - Schema model = new Schema().withName("r") - .withDisplayName("ukiscvwmzhw") - .withDescription("efaxvxilc") + Schema model = new Schema().withName("xnavvwxq") + .withDisplayName("y") + .withDescription("nyowxwlmdjrkvfg") .withColumns(Arrays.asList( - new Column().withName("hnze") + new Column().withName("p") + .withType(ColumnTypeEnum.REAL) + .withDataTypeHint(ColumnDataTypeHintEnum.ARM_PATH) + .withDisplayName("izsjqlhkrr") + .withDescription("deibqip"), + new Column().withName("ndzwmkrefa") .withType(ColumnTypeEnum.GUID) - .withDataTypeHint(ColumnDataTypeHintEnum.IP) - .withDisplayName("fzqlqhycavod") - .withDescription("xdbeesmieknl"), - new Column().withName("wiuagydwqf") - .withType(ColumnTypeEnum.INT) .withDataTypeHint(ColumnDataTypeHintEnum.URI) - .withDisplayName("giagtcojo") - .withDescription("wogfnzjvu"))); + .withDisplayName("kqnyh") + .withDescription("ij"))); model = BinaryData.fromObject(model).toObject(Schema.class); - Assertions.assertEquals("r", model.name()); - Assertions.assertEquals("ukiscvwmzhw", model.displayName()); - Assertions.assertEquals("efaxvxilc", model.description()); - Assertions.assertEquals("hnze", model.columns().get(0).name()); - Assertions.assertEquals(ColumnTypeEnum.GUID, model.columns().get(0).type()); - Assertions.assertEquals(ColumnDataTypeHintEnum.IP, model.columns().get(0).dataTypeHint()); - Assertions.assertEquals("fzqlqhycavod", model.columns().get(0).displayName()); - Assertions.assertEquals("xdbeesmieknl", model.columns().get(0).description()); + Assertions.assertEquals("xnavvwxq", model.name()); + Assertions.assertEquals("y", model.displayName()); + Assertions.assertEquals("nyowxwlmdjrkvfg", model.description()); + Assertions.assertEquals("p", model.columns().get(0).name()); + Assertions.assertEquals(ColumnTypeEnum.REAL, model.columns().get(0).type()); + Assertions.assertEquals(ColumnDataTypeHintEnum.ARM_PATH, model.columns().get(0).dataTypeHint()); + Assertions.assertEquals("izsjqlhkrr", model.columns().get(0).displayName()); + Assertions.assertEquals("deibqip", model.columns().get(0).description()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SchemasGetWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SchemasGetWithResponseMockTests.java index 8116903943b4..f768497bb26e 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SchemasGetWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SchemasGetWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.SearchGetSchemaResponse; @@ -22,44 +22,44 @@ public final class SchemasGetWithResponseMockTests { @Test public void testGetWithResponse() throws Exception { String responseStr - = "{\"metadata\":{\"requestId\":\"lg\",\"resultType\":\"txd\",\"total\":7982443333722102241,\"top\":2221953429879798985,\"id\":\"zvlnsnnjz\",\"coreSummaries\":[{\"status\":\"olpy\",\"numberOfDocuments\":117086894031994632},{\"status\":\"xqzragp\",\"numberOfDocuments\":5124334742263421163},{\"status\":\"t\",\"numberOfDocuments\":5064204054792112038},{\"status\":\"a\",\"numberOfDocuments\":1817616718311848555}],\"status\":\"jchcsrlzknmzla\",\"startTime\":\"2021-01-20T21:47:05Z\",\"lastUpdated\":\"2021-11-08T10:57:25Z\",\"eTag\":\"vnphc\",\"sort\":[{\"name\":\"pjhmqrhvthl\",\"order\":\"desc\"}],\"requestTime\":1106480050332233961,\"aggregatedValueField\":\"mlzzhzdtxetlgyd\",\"aggregatedGroupingFields\":\"qvlnnpxybafiqgea\",\"sum\":3246800772078835427,\"max\":7730272397217059241,\"schema\":{\"name\":\"klbyulidwcw\",\"version\":1795651624}},\"value\":[{\"name\":\"o\",\"displayName\":\"hj\",\"type\":\"wgdnqzbr\",\"indexed\":true,\"stored\":true,\"facet\":false,\"ownerType\":[\"zmtksjci\",\"digsxcdgl\"]}]}"; + = "{\"metadata\":{\"requestId\":\"hrweftkw\",\"resultType\":\"jp\",\"total\":2377130180811265800,\"top\":3632648174501059306,\"id\":\"pwamcxtczhupeuk\",\"coreSummaries\":[{\"status\":\"uyyes\",\"numberOfDocuments\":5177486878531490465},{\"status\":\"fbocyvhh\",\"numberOfDocuments\":7086241339877476619},{\"status\":\"ywikd\",\"numberOfDocuments\":1557781167596850119},{\"status\":\"kuflgbh\",\"numberOfDocuments\":6099044169152299925}],\"status\":\"cdixmx\",\"startTime\":\"2021-07-21T10:11:29Z\",\"lastUpdated\":\"2021-10-28T11:16:26Z\",\"eTag\":\"jqgdkfnozoeo\",\"sort\":[{\"name\":\"h\",\"order\":\"asc\"},{\"name\":\"wbmqjchntas\",\"order\":\"desc\"},{\"name\":\"xbulpzealbmqkyo\",\"order\":\"asc\"}],\"requestTime\":6096246762150938167,\"aggregatedValueField\":\"btsuahxs\",\"aggregatedGroupingFields\":\"jcmmzrrscub\",\"sum\":1482066446768394569,\"max\":9101534338635329443,\"schema\":{\"name\":\"wodiffjxc\",\"version\":1719649030}},\"value\":[{\"name\":\"bwi\",\"displayName\":\"jogjonmc\",\"type\":\"foyzbamwineof\",\"indexed\":false,\"stored\":false,\"facet\":true,\"ownerType\":[\"oldtvevboclzhz\"]},{\"name\":\"n\",\"displayName\":\"xgvttxp\",\"type\":\"upzaamrdixtre\",\"indexed\":false,\"stored\":false,\"facet\":true,\"ownerType\":[\"skbruffgllukkut\",\"lxhrp\"]},{\"name\":\"vmblcouqe\",\"displayName\":\"hbcdsziry\",\"type\":\"ndo\",\"indexed\":true,\"stored\":false,\"facet\":false,\"ownerType\":[\"oormkfqlwxldyka\"]}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); SearchGetSchemaResponse response - = manager.schemas().getWithResponse("cdxfzzzwyjafitl", "guyn", com.azure.core.util.Context.NONE).getValue(); + = manager.schemas().getWithResponse("llizs", "ac", com.azure.core.util.Context.NONE).getValue(); - Assertions.assertEquals("lg", response.metadata().searchId()); - Assertions.assertEquals("txd", response.metadata().resultType()); - Assertions.assertEquals(7982443333722102241L, response.metadata().total()); - Assertions.assertEquals(2221953429879798985L, response.metadata().top()); - Assertions.assertEquals("zvlnsnnjz", response.metadata().id()); - Assertions.assertEquals("olpy", response.metadata().coreSummaries().get(0).status()); - Assertions.assertEquals(117086894031994632L, response.metadata().coreSummaries().get(0).numberOfDocuments()); - Assertions.assertEquals("jchcsrlzknmzla", response.metadata().status()); - Assertions.assertEquals(OffsetDateTime.parse("2021-01-20T21:47:05Z"), response.metadata().startTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-11-08T10:57:25Z"), response.metadata().lastUpdated()); - Assertions.assertEquals("vnphc", response.metadata().etag()); - Assertions.assertEquals("pjhmqrhvthl", response.metadata().sort().get(0).name()); - Assertions.assertEquals(SearchSortEnum.DESC, response.metadata().sort().get(0).order()); - Assertions.assertEquals(1106480050332233961L, response.metadata().requestTime()); - Assertions.assertEquals("mlzzhzdtxetlgyd", response.metadata().aggregatedValueField()); - Assertions.assertEquals("qvlnnpxybafiqgea", response.metadata().aggregatedGroupingFields()); - Assertions.assertEquals(3246800772078835427L, response.metadata().sum()); - Assertions.assertEquals(7730272397217059241L, response.metadata().max()); - Assertions.assertEquals("klbyulidwcw", response.metadata().schema().name()); - Assertions.assertEquals(1795651624, response.metadata().schema().version()); - Assertions.assertEquals("o", response.value().get(0).name()); - Assertions.assertEquals("hj", response.value().get(0).displayName()); - Assertions.assertEquals("wgdnqzbr", response.value().get(0).type()); - Assertions.assertEquals(true, response.value().get(0).indexed()); - Assertions.assertEquals(true, response.value().get(0).stored()); - Assertions.assertEquals(false, response.value().get(0).facet()); - Assertions.assertEquals("zmtksjci", response.value().get(0).ownerType().get(0)); + Assertions.assertEquals("hrweftkw", response.metadata().searchId()); + Assertions.assertEquals("jp", response.metadata().resultType()); + Assertions.assertEquals(2377130180811265800L, response.metadata().total()); + Assertions.assertEquals(3632648174501059306L, response.metadata().top()); + Assertions.assertEquals("pwamcxtczhupeuk", response.metadata().id()); + Assertions.assertEquals("uyyes", response.metadata().coreSummaries().get(0).status()); + Assertions.assertEquals(5177486878531490465L, response.metadata().coreSummaries().get(0).numberOfDocuments()); + Assertions.assertEquals("cdixmx", response.metadata().status()); + Assertions.assertEquals(OffsetDateTime.parse("2021-07-21T10:11:29Z"), response.metadata().startTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-10-28T11:16:26Z"), response.metadata().lastUpdated()); + Assertions.assertEquals("jqgdkfnozoeo", response.metadata().etag()); + Assertions.assertEquals("h", response.metadata().sort().get(0).name()); + Assertions.assertEquals(SearchSortEnum.ASC, response.metadata().sort().get(0).order()); + Assertions.assertEquals(6096246762150938167L, response.metadata().requestTime()); + Assertions.assertEquals("btsuahxs", response.metadata().aggregatedValueField()); + Assertions.assertEquals("jcmmzrrscub", response.metadata().aggregatedGroupingFields()); + Assertions.assertEquals(1482066446768394569L, response.metadata().sum()); + Assertions.assertEquals(9101534338635329443L, response.metadata().max()); + Assertions.assertEquals("wodiffjxc", response.metadata().schema().name()); + Assertions.assertEquals(1719649030, response.metadata().schema().version()); + Assertions.assertEquals("bwi", response.value().get(0).name()); + Assertions.assertEquals("jogjonmc", response.value().get(0).displayName()); + Assertions.assertEquals("foyzbamwineof", response.value().get(0).type()); + Assertions.assertFalse(response.value().get(0).indexed()); + Assertions.assertFalse(response.value().get(0).stored()); + Assertions.assertTrue(response.value().get(0).facet()); + Assertions.assertEquals("oldtvevboclzhz", response.value().get(0).ownerType().get(0)); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchGetSchemaResponseInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchGetSchemaResponseInnerTests.java index 216dfe67397e..6c61eb99fb6b 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchGetSchemaResponseInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchGetSchemaResponseInnerTests.java @@ -20,119 +20,113 @@ public final class SearchGetSchemaResponseInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { SearchGetSchemaResponseInner model = BinaryData.fromString( - "{\"metadata\":{\"requestId\":\"enwash\",\"resultType\":\"dtkcnqxwbpokulp\",\"total\":4256703090352932350,\"top\":8748295195867506861,\"id\":\"pqiiobyuqe\",\"coreSummaries\":[{\"status\":\"pqwcciuqgbdbutau\",\"numberOfDocuments\":4381546425309848486},{\"status\":\"kuwhh\",\"numberOfDocuments\":8532271889690426142},{\"status\":\"ojoxafnndlp\",\"numberOfDocuments\":3311442512942014453}],\"status\":\"o\",\"startTime\":\"2021-07-02T22:41:48Z\",\"lastUpdated\":\"2021-10-22T11:40:28Z\",\"eTag\":\"h\",\"sort\":[{\"name\":\"pwdreqnovvqf\",\"order\":\"asc\"},{\"name\":\"xywsuws\",\"order\":\"asc\"},{\"name\":\"dsytgadgvr\",\"order\":\"desc\"},{\"name\":\"neqn\",\"order\":\"desc\"}],\"requestTime\":5080605539580294993,\"aggregatedValueField\":\"uu\",\"aggregatedGroupingFields\":\"fqka\",\"sum\":8183486072070109381,\"max\":1237347078053939435,\"schema\":{\"name\":\"bjibwwiftohq\",\"version\":1205462118}},\"value\":[{\"name\":\"sgplsakn\",\"displayName\":\"fsynljphuop\",\"type\":\"dlqiyntorzih\",\"indexed\":false,\"stored\":false,\"facet\":false,\"ownerType\":[\"w\",\"rmslyzrpzbchckqq\"]},{\"name\":\"ioxiysuiizyn\",\"displayName\":\"dy\",\"type\":\"rwyhqmibzyhwitsm\",\"indexed\":false,\"stored\":true,\"facet\":true,\"ownerType\":[\"cdpu\",\"nzgmwznmabik\"]},{\"name\":\"orgjhxbldt\",\"displayName\":\"wrlkdmtn\",\"type\":\"ok\",\"indexed\":true,\"stored\":false,\"facet\":false,\"ownerType\":[\"yhgsy\"]},{\"name\":\"ogjltdtbnnhad\",\"displayName\":\"crkvcikhnv\",\"type\":\"mqg\",\"indexed\":false,\"stored\":false,\"facet\":false,\"ownerType\":[\"ik\",\"wggxkallat\"]}]}") + "{\"metadata\":{\"requestId\":\"nayqi\",\"resultType\":\"nduhavhqlkthum\",\"total\":8390013026245928421,\"top\":5649591766559477880,\"id\":\"duiertgcc\",\"coreSummaries\":[{\"status\":\"olpsslqlf\",\"numberOfDocuments\":5488709340385622129},{\"status\":\"bbglzpswiydmc\",\"numberOfDocuments\":2535246333551569384},{\"status\":\"dxssadbzm\",\"numberOfDocuments\":6861155578766594130}],\"status\":\"znud\",\"startTime\":\"2021-05-14T14:21:36Z\",\"lastUpdated\":\"2021-09-27T09:43:19Z\",\"eTag\":\"bncblylpstdbhhx\",\"sort\":[{\"name\":\"zucerscdntnev\",\"order\":\"asc\"},{\"name\":\"mygtdssls\",\"order\":\"desc\"},{\"name\":\"eriofzpyqs\",\"order\":\"asc\"},{\"name\":\"bnetshh\",\"order\":\"asc\"}],\"requestTime\":87133014421625826,\"aggregatedValueField\":\"vwiwubmwmbesld\",\"aggregatedGroupingFields\":\"wwtppj\",\"sum\":3431932886317561144,\"max\":5668149621351966733,\"schema\":{\"name\":\"onz\",\"version\":1813308851}},\"value\":[{\"name\":\"mkqzeqqkdltfzxmh\",\"displayName\":\"hgure\",\"type\":\"kwobdagxtibq\",\"indexed\":false,\"stored\":false,\"facet\":false,\"ownerType\":[\"kbogqxndlkzgx\",\"uriplbpodxunkb\",\"bxmubyynt\",\"lrb\"]},{\"name\":\"koievseo\",\"displayName\":\"q\",\"type\":\"ltmuwlauwzizx\",\"indexed\":true,\"stored\":true,\"facet\":false,\"ownerType\":[\"efuzmuvpbttd\",\"morppxebmnzbtbh\",\"pglkf\",\"ohdneuel\"]},{\"name\":\"hsd\",\"displayName\":\"t\",\"type\":\"fikdowwqu\",\"indexed\":false,\"stored\":false,\"facet\":false,\"ownerType\":[\"lvithhqzonosgg\",\"hcohfwdsjnk\"]}]}") .toObject(SearchGetSchemaResponseInner.class); - Assertions.assertEquals("enwash", model.metadata().searchId()); - Assertions.assertEquals("dtkcnqxwbpokulp", model.metadata().resultType()); - Assertions.assertEquals(4256703090352932350L, model.metadata().total()); - Assertions.assertEquals(8748295195867506861L, model.metadata().top()); - Assertions.assertEquals("pqiiobyuqe", model.metadata().id()); - Assertions.assertEquals("pqwcciuqgbdbutau", model.metadata().coreSummaries().get(0).status()); - Assertions.assertEquals(4381546425309848486L, model.metadata().coreSummaries().get(0).numberOfDocuments()); - Assertions.assertEquals("o", model.metadata().status()); - Assertions.assertEquals(OffsetDateTime.parse("2021-07-02T22:41:48Z"), model.metadata().startTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-10-22T11:40:28Z"), model.metadata().lastUpdated()); - Assertions.assertEquals("h", model.metadata().etag()); - Assertions.assertEquals("pwdreqnovvqf", model.metadata().sort().get(0).name()); + Assertions.assertEquals("nayqi", model.metadata().searchId()); + Assertions.assertEquals("nduhavhqlkthum", model.metadata().resultType()); + Assertions.assertEquals(8390013026245928421L, model.metadata().total()); + Assertions.assertEquals(5649591766559477880L, model.metadata().top()); + Assertions.assertEquals("duiertgcc", model.metadata().id()); + Assertions.assertEquals("olpsslqlf", model.metadata().coreSummaries().get(0).status()); + Assertions.assertEquals(5488709340385622129L, model.metadata().coreSummaries().get(0).numberOfDocuments()); + Assertions.assertEquals("znud", model.metadata().status()); + Assertions.assertEquals(OffsetDateTime.parse("2021-05-14T14:21:36Z"), model.metadata().startTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-09-27T09:43:19Z"), model.metadata().lastUpdated()); + Assertions.assertEquals("bncblylpstdbhhx", model.metadata().etag()); + Assertions.assertEquals("zucerscdntnev", model.metadata().sort().get(0).name()); Assertions.assertEquals(SearchSortEnum.ASC, model.metadata().sort().get(0).order()); - Assertions.assertEquals(5080605539580294993L, model.metadata().requestTime()); - Assertions.assertEquals("uu", model.metadata().aggregatedValueField()); - Assertions.assertEquals("fqka", model.metadata().aggregatedGroupingFields()); - Assertions.assertEquals(8183486072070109381L, model.metadata().sum()); - Assertions.assertEquals(1237347078053939435L, model.metadata().max()); - Assertions.assertEquals("bjibwwiftohq", model.metadata().schema().name()); - Assertions.assertEquals(1205462118, model.metadata().schema().version()); - Assertions.assertEquals("sgplsakn", model.value().get(0).name()); - Assertions.assertEquals("fsynljphuop", model.value().get(0).displayName()); - Assertions.assertEquals("dlqiyntorzih", model.value().get(0).type()); - Assertions.assertEquals(false, model.value().get(0).indexed()); - Assertions.assertEquals(false, model.value().get(0).stored()); - Assertions.assertEquals(false, model.value().get(0).facet()); - Assertions.assertEquals("w", model.value().get(0).ownerType().get(0)); + Assertions.assertEquals(87133014421625826L, model.metadata().requestTime()); + Assertions.assertEquals("vwiwubmwmbesld", model.metadata().aggregatedValueField()); + Assertions.assertEquals("wwtppj", model.metadata().aggregatedGroupingFields()); + Assertions.assertEquals(3431932886317561144L, model.metadata().sum()); + Assertions.assertEquals(5668149621351966733L, model.metadata().max()); + Assertions.assertEquals("onz", model.metadata().schema().name()); + Assertions.assertEquals(1813308851, model.metadata().schema().version()); + Assertions.assertEquals("mkqzeqqkdltfzxmh", model.value().get(0).name()); + Assertions.assertEquals("hgure", model.value().get(0).displayName()); + Assertions.assertEquals("kwobdagxtibq", model.value().get(0).type()); + Assertions.assertFalse(model.value().get(0).indexed()); + Assertions.assertFalse(model.value().get(0).stored()); + Assertions.assertFalse(model.value().get(0).facet()); + Assertions.assertEquals("kbogqxndlkzgx", model.value().get(0).ownerType().get(0)); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - SearchGetSchemaResponseInner model = new SearchGetSchemaResponseInner() - .withMetadata(new SearchMetadata().withSearchId("enwash") - .withResultType("dtkcnqxwbpokulp") - .withTotal(4256703090352932350L) - .withTop(8748295195867506861L) - .withId("pqiiobyuqe") - .withCoreSummaries(Arrays.asList( - new CoreSummary().withStatus("pqwcciuqgbdbutau").withNumberOfDocuments(4381546425309848486L), - new CoreSummary().withStatus("kuwhh").withNumberOfDocuments(8532271889690426142L), - new CoreSummary().withStatus("ojoxafnndlp").withNumberOfDocuments(3311442512942014453L))) - .withStatus("o") - .withStartTime(OffsetDateTime.parse("2021-07-02T22:41:48Z")) - .withLastUpdated(OffsetDateTime.parse("2021-10-22T11:40:28Z")) - .withEtag("h") - .withSort(Arrays.asList(new SearchSort().withName("pwdreqnovvqf").withOrder(SearchSortEnum.ASC), - new SearchSort().withName("xywsuws").withOrder(SearchSortEnum.ASC), - new SearchSort().withName("dsytgadgvr").withOrder(SearchSortEnum.DESC), - new SearchSort().withName("neqn").withOrder(SearchSortEnum.DESC))) - .withRequestTime(5080605539580294993L) - .withAggregatedValueField("uu") - .withAggregatedGroupingFields("fqka") - .withSum(8183486072070109381L) - .withMax(1237347078053939435L) - .withSchema(new SearchMetadataSchema().withName("bjibwwiftohq").withVersion(1205462118))) - .withValue(Arrays.asList( - new SearchSchemaValue().withName("sgplsakn") - .withDisplayName("fsynljphuop") - .withType("dlqiyntorzih") - .withIndexed(false) - .withStored(false) - .withFacet(false) - .withOwnerType(Arrays.asList("w", "rmslyzrpzbchckqq")), - new SearchSchemaValue().withName("ioxiysuiizyn") - .withDisplayName("dy") - .withType("rwyhqmibzyhwitsm") - .withIndexed(false) - .withStored(true) - .withFacet(true) - .withOwnerType(Arrays.asList("cdpu", "nzgmwznmabik")), - new SearchSchemaValue().withName("orgjhxbldt") - .withDisplayName("wrlkdmtn") - .withType("ok") - .withIndexed(true) - .withStored(false) - .withFacet(false) - .withOwnerType(Arrays.asList("yhgsy")), - new SearchSchemaValue().withName("ogjltdtbnnhad") - .withDisplayName("crkvcikhnv") - .withType("mqg") - .withIndexed(false) - .withStored(false) - .withFacet(false) - .withOwnerType(Arrays.asList("ik", "wggxkallat")))); + SearchGetSchemaResponseInner model + = new SearchGetSchemaResponseInner() + .withMetadata(new SearchMetadata().withSearchId("nayqi") + .withResultType("nduhavhqlkthum") + .withTotal(8390013026245928421L) + .withTop(5649591766559477880L) + .withId("duiertgcc") + .withCoreSummaries(Arrays.asList( + new CoreSummary().withStatus("olpsslqlf").withNumberOfDocuments(5488709340385622129L), + new CoreSummary().withStatus("bbglzpswiydmc").withNumberOfDocuments(2535246333551569384L), + new CoreSummary().withStatus("dxssadbzm").withNumberOfDocuments(6861155578766594130L))) + .withStatus("znud") + .withStartTime(OffsetDateTime.parse("2021-05-14T14:21:36Z")) + .withLastUpdated(OffsetDateTime.parse("2021-09-27T09:43:19Z")) + .withEtag("bncblylpstdbhhx") + .withSort(Arrays.asList(new SearchSort().withName("zucerscdntnev").withOrder(SearchSortEnum.ASC), + new SearchSort().withName("mygtdssls").withOrder(SearchSortEnum.DESC), + new SearchSort().withName("eriofzpyqs").withOrder(SearchSortEnum.ASC), + new SearchSort().withName("bnetshh").withOrder(SearchSortEnum.ASC))) + .withRequestTime(87133014421625826L) + .withAggregatedValueField("vwiwubmwmbesld") + .withAggregatedGroupingFields("wwtppj") + .withSum(3431932886317561144L) + .withMax(5668149621351966733L) + .withSchema(new SearchMetadataSchema().withName("onz").withVersion(1813308851))) + .withValue(Arrays.asList( + new SearchSchemaValue().withName("mkqzeqqkdltfzxmh") + .withDisplayName("hgure") + .withType("kwobdagxtibq") + .withIndexed(false) + .withStored(false) + .withFacet(false) + .withOwnerType(Arrays.asList("kbogqxndlkzgx", "uriplbpodxunkb", "bxmubyynt", "lrb")), + new SearchSchemaValue().withName("koievseo") + .withDisplayName("q") + .withType("ltmuwlauwzizx") + .withIndexed(true) + .withStored(true) + .withFacet(false) + .withOwnerType(Arrays.asList("efuzmuvpbttd", "morppxebmnzbtbh", "pglkf", "ohdneuel")), + new SearchSchemaValue().withName("hsd") + .withDisplayName("t") + .withType("fikdowwqu") + .withIndexed(false) + .withStored(false) + .withFacet(false) + .withOwnerType(Arrays.asList("lvithhqzonosgg", "hcohfwdsjnk")))); model = BinaryData.fromObject(model).toObject(SearchGetSchemaResponseInner.class); - Assertions.assertEquals("enwash", model.metadata().searchId()); - Assertions.assertEquals("dtkcnqxwbpokulp", model.metadata().resultType()); - Assertions.assertEquals(4256703090352932350L, model.metadata().total()); - Assertions.assertEquals(8748295195867506861L, model.metadata().top()); - Assertions.assertEquals("pqiiobyuqe", model.metadata().id()); - Assertions.assertEquals("pqwcciuqgbdbutau", model.metadata().coreSummaries().get(0).status()); - Assertions.assertEquals(4381546425309848486L, model.metadata().coreSummaries().get(0).numberOfDocuments()); - Assertions.assertEquals("o", model.metadata().status()); - Assertions.assertEquals(OffsetDateTime.parse("2021-07-02T22:41:48Z"), model.metadata().startTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-10-22T11:40:28Z"), model.metadata().lastUpdated()); - Assertions.assertEquals("h", model.metadata().etag()); - Assertions.assertEquals("pwdreqnovvqf", model.metadata().sort().get(0).name()); + Assertions.assertEquals("nayqi", model.metadata().searchId()); + Assertions.assertEquals("nduhavhqlkthum", model.metadata().resultType()); + Assertions.assertEquals(8390013026245928421L, model.metadata().total()); + Assertions.assertEquals(5649591766559477880L, model.metadata().top()); + Assertions.assertEquals("duiertgcc", model.metadata().id()); + Assertions.assertEquals("olpsslqlf", model.metadata().coreSummaries().get(0).status()); + Assertions.assertEquals(5488709340385622129L, model.metadata().coreSummaries().get(0).numberOfDocuments()); + Assertions.assertEquals("znud", model.metadata().status()); + Assertions.assertEquals(OffsetDateTime.parse("2021-05-14T14:21:36Z"), model.metadata().startTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-09-27T09:43:19Z"), model.metadata().lastUpdated()); + Assertions.assertEquals("bncblylpstdbhhx", model.metadata().etag()); + Assertions.assertEquals("zucerscdntnev", model.metadata().sort().get(0).name()); Assertions.assertEquals(SearchSortEnum.ASC, model.metadata().sort().get(0).order()); - Assertions.assertEquals(5080605539580294993L, model.metadata().requestTime()); - Assertions.assertEquals("uu", model.metadata().aggregatedValueField()); - Assertions.assertEquals("fqka", model.metadata().aggregatedGroupingFields()); - Assertions.assertEquals(8183486072070109381L, model.metadata().sum()); - Assertions.assertEquals(1237347078053939435L, model.metadata().max()); - Assertions.assertEquals("bjibwwiftohq", model.metadata().schema().name()); - Assertions.assertEquals(1205462118, model.metadata().schema().version()); - Assertions.assertEquals("sgplsakn", model.value().get(0).name()); - Assertions.assertEquals("fsynljphuop", model.value().get(0).displayName()); - Assertions.assertEquals("dlqiyntorzih", model.value().get(0).type()); - Assertions.assertEquals(false, model.value().get(0).indexed()); - Assertions.assertEquals(false, model.value().get(0).stored()); - Assertions.assertEquals(false, model.value().get(0).facet()); - Assertions.assertEquals("w", model.value().get(0).ownerType().get(0)); + Assertions.assertEquals(87133014421625826L, model.metadata().requestTime()); + Assertions.assertEquals("vwiwubmwmbesld", model.metadata().aggregatedValueField()); + Assertions.assertEquals("wwtppj", model.metadata().aggregatedGroupingFields()); + Assertions.assertEquals(3431932886317561144L, model.metadata().sum()); + Assertions.assertEquals(5668149621351966733L, model.metadata().max()); + Assertions.assertEquals("onz", model.metadata().schema().name()); + Assertions.assertEquals(1813308851, model.metadata().schema().version()); + Assertions.assertEquals("mkqzeqqkdltfzxmh", model.value().get(0).name()); + Assertions.assertEquals("hgure", model.value().get(0).displayName()); + Assertions.assertEquals("kwobdagxtibq", model.value().get(0).type()); + Assertions.assertFalse(model.value().get(0).indexed()); + Assertions.assertFalse(model.value().get(0).stored()); + Assertions.assertFalse(model.value().get(0).facet()); + Assertions.assertEquals("kbogqxndlkzgx", model.value().get(0).ownerType().get(0)); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchMetadataSchemaTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchMetadataSchemaTests.java index eb39d2f3c679..e0ab265f0d2d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchMetadataSchemaTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchMetadataSchemaTests.java @@ -11,17 +11,17 @@ public final class SearchMetadataSchemaTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - SearchMetadataSchema model = BinaryData.fromString("{\"name\":\"jhwuaanozjos\",\"version\":1082355314}") + SearchMetadataSchema model = BinaryData.fromString("{\"name\":\"pomgkopkwhojvp\",\"version\":996289807}") .toObject(SearchMetadataSchema.class); - Assertions.assertEquals("jhwuaanozjos", model.name()); - Assertions.assertEquals(1082355314, model.version()); + Assertions.assertEquals("pomgkopkwhojvp", model.name()); + Assertions.assertEquals(996289807, model.version()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - SearchMetadataSchema model = new SearchMetadataSchema().withName("jhwuaanozjos").withVersion(1082355314); + SearchMetadataSchema model = new SearchMetadataSchema().withName("pomgkopkwhojvp").withVersion(996289807); model = BinaryData.fromObject(model).toObject(SearchMetadataSchema.class); - Assertions.assertEquals("jhwuaanozjos", model.name()); - Assertions.assertEquals(1082355314, model.version()); + Assertions.assertEquals("pomgkopkwhojvp", model.name()); + Assertions.assertEquals(996289807, model.version()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchMetadataTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchMetadataTests.java index d94203f802ab..fa74123b19f0 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchMetadataTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchMetadataTests.java @@ -18,71 +18,74 @@ public final class SearchMetadataTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { SearchMetadata model = BinaryData.fromString( - "{\"requestId\":\"lwuip\",\"resultType\":\"cjzkzivgvvcna\",\"total\":8913535749004515550,\"top\":5279516661370439683,\"id\":\"mueedndrdvstk\",\"coreSummaries\":[{\"status\":\"chea\",\"numberOfDocuments\":3646125258806158004}],\"status\":\"tdaaygdvwvg\",\"startTime\":\"2021-06-07T06:53:10Z\",\"lastUpdated\":\"2021-10-23T00:12:41Z\",\"eTag\":\"xrtfudxep\",\"sort\":[{\"name\":\"agvrvmnpkuk\",\"order\":\"asc\"},{\"name\":\"dblx\",\"order\":\"desc\"}],\"requestTime\":7611617377471579634,\"aggregatedValueField\":\"hfjx\",\"aggregatedGroupingFields\":\"szkkfoqre\",\"sum\":8338807266312513089,\"max\":2185206310902116436,\"schema\":{\"name\":\"wneaiv\",\"version\":322973840}}") + "{\"requestId\":\"jutiiswacff\",\"resultType\":\"k\",\"total\":2817316502996814580,\"top\":4896642944442173063,\"id\":\"qcrailvpnppfufl\",\"coreSummaries\":[{\"status\":\"hdlxyjrxsagafcn\",\"numberOfDocuments\":3165727782283367859},{\"status\":\"qapnedgfbcv\",\"numberOfDocuments\":3094759713825353725},{\"status\":\"vpk\",\"numberOfDocuments\":1489368232618160329}],\"status\":\"vdrhvoo\",\"startTime\":\"2021-11-10T16:13:32Z\",\"lastUpdated\":\"2021-11-02T01:53:07Z\",\"eTag\":\"bzdopcj\",\"sort\":[{\"name\":\"dldwmgxc\",\"order\":\"desc\"},{\"name\":\"pmutwuo\",\"order\":\"asc\"},{\"name\":\"khjwn\",\"order\":\"asc\"}],\"requestTime\":9145208048517339786,\"aggregatedValueField\":\"cpdggkzzlvmbmp\",\"aggregatedGroupingFields\":\"modfvuefywsbpfvm\",\"sum\":5583429102583863786,\"max\":98342047801553484,\"schema\":{\"name\":\"taakc\",\"version\":369562825}}") .toObject(SearchMetadata.class); - Assertions.assertEquals("lwuip", model.searchId()); - Assertions.assertEquals("cjzkzivgvvcna", model.resultType()); - Assertions.assertEquals(8913535749004515550L, model.total()); - Assertions.assertEquals(5279516661370439683L, model.top()); - Assertions.assertEquals("mueedndrdvstk", model.id()); - Assertions.assertEquals("chea", model.coreSummaries().get(0).status()); - Assertions.assertEquals(3646125258806158004L, model.coreSummaries().get(0).numberOfDocuments()); - Assertions.assertEquals("tdaaygdvwvg", model.status()); - Assertions.assertEquals(OffsetDateTime.parse("2021-06-07T06:53:10Z"), model.startTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-10-23T00:12:41Z"), model.lastUpdated()); - Assertions.assertEquals("xrtfudxep", model.etag()); - Assertions.assertEquals("agvrvmnpkuk", model.sort().get(0).name()); - Assertions.assertEquals(SearchSortEnum.ASC, model.sort().get(0).order()); - Assertions.assertEquals(7611617377471579634L, model.requestTime()); - Assertions.assertEquals("hfjx", model.aggregatedValueField()); - Assertions.assertEquals("szkkfoqre", model.aggregatedGroupingFields()); - Assertions.assertEquals(8338807266312513089L, model.sum()); - Assertions.assertEquals(2185206310902116436L, model.max()); - Assertions.assertEquals("wneaiv", model.schema().name()); - Assertions.assertEquals(322973840, model.schema().version()); + Assertions.assertEquals("jutiiswacff", model.searchId()); + Assertions.assertEquals("k", model.resultType()); + Assertions.assertEquals(2817316502996814580L, model.total()); + Assertions.assertEquals(4896642944442173063L, model.top()); + Assertions.assertEquals("qcrailvpnppfufl", model.id()); + Assertions.assertEquals("hdlxyjrxsagafcn", model.coreSummaries().get(0).status()); + Assertions.assertEquals(3165727782283367859L, model.coreSummaries().get(0).numberOfDocuments()); + Assertions.assertEquals("vdrhvoo", model.status()); + Assertions.assertEquals(OffsetDateTime.parse("2021-11-10T16:13:32Z"), model.startTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-11-02T01:53:07Z"), model.lastUpdated()); + Assertions.assertEquals("bzdopcj", model.etag()); + Assertions.assertEquals("dldwmgxc", model.sort().get(0).name()); + Assertions.assertEquals(SearchSortEnum.DESC, model.sort().get(0).order()); + Assertions.assertEquals(9145208048517339786L, model.requestTime()); + Assertions.assertEquals("cpdggkzzlvmbmp", model.aggregatedValueField()); + Assertions.assertEquals("modfvuefywsbpfvm", model.aggregatedGroupingFields()); + Assertions.assertEquals(5583429102583863786L, model.sum()); + Assertions.assertEquals(98342047801553484L, model.max()); + Assertions.assertEquals("taakc", model.schema().name()); + Assertions.assertEquals(369562825, model.schema().version()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - SearchMetadata model = new SearchMetadata().withSearchId("lwuip") - .withResultType("cjzkzivgvvcna") - .withTotal(8913535749004515550L) - .withTop(5279516661370439683L) - .withId("mueedndrdvstk") - .withCoreSummaries( - Arrays.asList(new CoreSummary().withStatus("chea").withNumberOfDocuments(3646125258806158004L))) - .withStatus("tdaaygdvwvg") - .withStartTime(OffsetDateTime.parse("2021-06-07T06:53:10Z")) - .withLastUpdated(OffsetDateTime.parse("2021-10-23T00:12:41Z")) - .withEtag("xrtfudxep") - .withSort(Arrays.asList(new SearchSort().withName("agvrvmnpkuk").withOrder(SearchSortEnum.ASC), - new SearchSort().withName("dblx").withOrder(SearchSortEnum.DESC))) - .withRequestTime(7611617377471579634L) - .withAggregatedValueField("hfjx") - .withAggregatedGroupingFields("szkkfoqre") - .withSum(8338807266312513089L) - .withMax(2185206310902116436L) - .withSchema(new SearchMetadataSchema().withName("wneaiv").withVersion(322973840)); + SearchMetadata model = new SearchMetadata().withSearchId("jutiiswacff") + .withResultType("k") + .withTotal(2817316502996814580L) + .withTop(4896642944442173063L) + .withId("qcrailvpnppfufl") + .withCoreSummaries(Arrays.asList( + new CoreSummary().withStatus("hdlxyjrxsagafcn").withNumberOfDocuments(3165727782283367859L), + new CoreSummary().withStatus("qapnedgfbcv").withNumberOfDocuments(3094759713825353725L), + new CoreSummary().withStatus("vpk").withNumberOfDocuments(1489368232618160329L))) + .withStatus("vdrhvoo") + .withStartTime(OffsetDateTime.parse("2021-11-10T16:13:32Z")) + .withLastUpdated(OffsetDateTime.parse("2021-11-02T01:53:07Z")) + .withEtag("bzdopcj") + .withSort(Arrays.asList(new SearchSort().withName("dldwmgxc").withOrder(SearchSortEnum.DESC), + new SearchSort().withName("pmutwuo").withOrder(SearchSortEnum.ASC), + new SearchSort().withName("khjwn").withOrder(SearchSortEnum.ASC))) + .withRequestTime(9145208048517339786L) + .withAggregatedValueField("cpdggkzzlvmbmp") + .withAggregatedGroupingFields("modfvuefywsbpfvm") + .withSum(5583429102583863786L) + .withMax(98342047801553484L) + .withSchema(new SearchMetadataSchema().withName("taakc").withVersion(369562825)); model = BinaryData.fromObject(model).toObject(SearchMetadata.class); - Assertions.assertEquals("lwuip", model.searchId()); - Assertions.assertEquals("cjzkzivgvvcna", model.resultType()); - Assertions.assertEquals(8913535749004515550L, model.total()); - Assertions.assertEquals(5279516661370439683L, model.top()); - Assertions.assertEquals("mueedndrdvstk", model.id()); - Assertions.assertEquals("chea", model.coreSummaries().get(0).status()); - Assertions.assertEquals(3646125258806158004L, model.coreSummaries().get(0).numberOfDocuments()); - Assertions.assertEquals("tdaaygdvwvg", model.status()); - Assertions.assertEquals(OffsetDateTime.parse("2021-06-07T06:53:10Z"), model.startTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-10-23T00:12:41Z"), model.lastUpdated()); - Assertions.assertEquals("xrtfudxep", model.etag()); - Assertions.assertEquals("agvrvmnpkuk", model.sort().get(0).name()); - Assertions.assertEquals(SearchSortEnum.ASC, model.sort().get(0).order()); - Assertions.assertEquals(7611617377471579634L, model.requestTime()); - Assertions.assertEquals("hfjx", model.aggregatedValueField()); - Assertions.assertEquals("szkkfoqre", model.aggregatedGroupingFields()); - Assertions.assertEquals(8338807266312513089L, model.sum()); - Assertions.assertEquals(2185206310902116436L, model.max()); - Assertions.assertEquals("wneaiv", model.schema().name()); - Assertions.assertEquals(322973840, model.schema().version()); + Assertions.assertEquals("jutiiswacff", model.searchId()); + Assertions.assertEquals("k", model.resultType()); + Assertions.assertEquals(2817316502996814580L, model.total()); + Assertions.assertEquals(4896642944442173063L, model.top()); + Assertions.assertEquals("qcrailvpnppfufl", model.id()); + Assertions.assertEquals("hdlxyjrxsagafcn", model.coreSummaries().get(0).status()); + Assertions.assertEquals(3165727782283367859L, model.coreSummaries().get(0).numberOfDocuments()); + Assertions.assertEquals("vdrhvoo", model.status()); + Assertions.assertEquals(OffsetDateTime.parse("2021-11-10T16:13:32Z"), model.startTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-11-02T01:53:07Z"), model.lastUpdated()); + Assertions.assertEquals("bzdopcj", model.etag()); + Assertions.assertEquals("dldwmgxc", model.sort().get(0).name()); + Assertions.assertEquals(SearchSortEnum.DESC, model.sort().get(0).order()); + Assertions.assertEquals(9145208048517339786L, model.requestTime()); + Assertions.assertEquals("cpdggkzzlvmbmp", model.aggregatedValueField()); + Assertions.assertEquals("modfvuefywsbpfvm", model.aggregatedGroupingFields()); + Assertions.assertEquals(5583429102583863786L, model.sum()); + Assertions.assertEquals(98342047801553484L, model.max()); + Assertions.assertEquals("taakc", model.schema().name()); + Assertions.assertEquals(369562825, model.schema().version()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchResultsTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchResultsTests.java index ba8ec02b5961..1b6934cb5846 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchResultsTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchResultsTests.java @@ -13,27 +13,27 @@ public final class SearchResultsTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { SearchResults model = BinaryData.fromString( - "{\"query\":\"fffwafqroudaspav\",\"description\":\"hrv\",\"limit\":901509130,\"startSearchTime\":\"2021-12-01T01:47:09Z\",\"endSearchTime\":\"2021-08-09T03:45:34Z\",\"sourceTable\":\"dhcxgkmoy\",\"azureAsyncOperationId\":\"dyuib\"}") + "{\"query\":\"olppvksrpqvujz\",\"description\":\"ehtwdwrft\",\"limit\":767551661,\"startSearchTime\":\"2021-10-26T11:25:15Z\",\"endSearchTime\":\"2021-11-04T23:57:55Z\",\"sourceTable\":\"l\",\"azureAsyncOperationId\":\"shfwpracstwity\"}") .toObject(SearchResults.class); - Assertions.assertEquals("fffwafqroudaspav", model.query()); - Assertions.assertEquals("hrv", model.description()); - Assertions.assertEquals(901509130, model.limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-12-01T01:47:09Z"), model.startSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-08-09T03:45:34Z"), model.endSearchTime()); + Assertions.assertEquals("olppvksrpqvujz", model.query()); + Assertions.assertEquals("ehtwdwrft", model.description()); + Assertions.assertEquals(767551661, model.limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-10-26T11:25:15Z"), model.startSearchTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-11-04T23:57:55Z"), model.endSearchTime()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - SearchResults model = new SearchResults().withQuery("fffwafqroudaspav") - .withDescription("hrv") - .withLimit(901509130) - .withStartSearchTime(OffsetDateTime.parse("2021-12-01T01:47:09Z")) - .withEndSearchTime(OffsetDateTime.parse("2021-08-09T03:45:34Z")); + SearchResults model = new SearchResults().withQuery("olppvksrpqvujz") + .withDescription("ehtwdwrft") + .withLimit(767551661) + .withStartSearchTime(OffsetDateTime.parse("2021-10-26T11:25:15Z")) + .withEndSearchTime(OffsetDateTime.parse("2021-11-04T23:57:55Z")); model = BinaryData.fromObject(model).toObject(SearchResults.class); - Assertions.assertEquals("fffwafqroudaspav", model.query()); - Assertions.assertEquals("hrv", model.description()); - Assertions.assertEquals(901509130, model.limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-12-01T01:47:09Z"), model.startSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-08-09T03:45:34Z"), model.endSearchTime()); + Assertions.assertEquals("olppvksrpqvujz", model.query()); + Assertions.assertEquals("ehtwdwrft", model.description()); + Assertions.assertEquals(767551661, model.limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-10-26T11:25:15Z"), model.startSearchTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-11-04T23:57:55Z"), model.endSearchTime()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchSchemaValueTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchSchemaValueTests.java index 1dde59a006c6..1f563325e92d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchSchemaValueTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchSchemaValueTests.java @@ -13,33 +13,33 @@ public final class SearchSchemaValueTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { SearchSchemaValue model = BinaryData.fromString( - "{\"name\":\"ulpjr\",\"displayName\":\"ag\",\"type\":\"vimjwos\",\"indexed\":false,\"stored\":false,\"facet\":false,\"ownerType\":[\"skfc\",\"tq\",\"miekkezzikhlyfjh\",\"gqggebdunygae\"]}") + "{\"name\":\"xysmoc\",\"displayName\":\"qfqvmkc\",\"type\":\"zapvhelx\",\"indexed\":false,\"stored\":true,\"facet\":false,\"ownerType\":[\"tddckcb\",\"uejrjxgc\"]}") .toObject(SearchSchemaValue.class); - Assertions.assertEquals("ulpjr", model.name()); - Assertions.assertEquals("ag", model.displayName()); - Assertions.assertEquals("vimjwos", model.type()); - Assertions.assertEquals(false, model.indexed()); - Assertions.assertEquals(false, model.stored()); - Assertions.assertEquals(false, model.facet()); - Assertions.assertEquals("skfc", model.ownerType().get(0)); + Assertions.assertEquals("xysmoc", model.name()); + Assertions.assertEquals("qfqvmkc", model.displayName()); + Assertions.assertEquals("zapvhelx", model.type()); + Assertions.assertFalse(model.indexed()); + Assertions.assertTrue(model.stored()); + Assertions.assertFalse(model.facet()); + Assertions.assertEquals("tddckcb", model.ownerType().get(0)); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - SearchSchemaValue model = new SearchSchemaValue().withName("ulpjr") - .withDisplayName("ag") - .withType("vimjwos") + SearchSchemaValue model = new SearchSchemaValue().withName("xysmoc") + .withDisplayName("qfqvmkc") + .withType("zapvhelx") .withIndexed(false) - .withStored(false) + .withStored(true) .withFacet(false) - .withOwnerType(Arrays.asList("skfc", "tq", "miekkezzikhlyfjh", "gqggebdunygae")); + .withOwnerType(Arrays.asList("tddckcb", "uejrjxgc")); model = BinaryData.fromObject(model).toObject(SearchSchemaValue.class); - Assertions.assertEquals("ulpjr", model.name()); - Assertions.assertEquals("ag", model.displayName()); - Assertions.assertEquals("vimjwos", model.type()); - Assertions.assertEquals(false, model.indexed()); - Assertions.assertEquals(false, model.stored()); - Assertions.assertEquals(false, model.facet()); - Assertions.assertEquals("skfc", model.ownerType().get(0)); + Assertions.assertEquals("xysmoc", model.name()); + Assertions.assertEquals("qfqvmkc", model.displayName()); + Assertions.assertEquals("zapvhelx", model.type()); + Assertions.assertFalse(model.indexed()); + Assertions.assertTrue(model.stored()); + Assertions.assertFalse(model.facet()); + Assertions.assertEquals("tddckcb", model.ownerType().get(0)); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchSortTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchSortTests.java index 2cdc6d74a93c..9952fac215ff 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchSortTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SearchSortTests.java @@ -12,16 +12,16 @@ public final class SearchSortTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - SearchSort model = BinaryData.fromString("{\"name\":\"kl\",\"order\":\"desc\"}").toObject(SearchSort.class); - Assertions.assertEquals("kl", model.name()); + SearchSort model = BinaryData.fromString("{\"name\":\"ondjmq\",\"order\":\"desc\"}").toObject(SearchSort.class); + Assertions.assertEquals("ondjmq", model.name()); Assertions.assertEquals(SearchSortEnum.DESC, model.order()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - SearchSort model = new SearchSort().withName("kl").withOrder(SearchSortEnum.DESC); + SearchSort model = new SearchSort().withName("ondjmq").withOrder(SearchSortEnum.DESC); model = BinaryData.fromObject(model).toObject(SearchSort.class); - Assertions.assertEquals("kl", model.name()); + Assertions.assertEquals("ondjmq", model.name()); Assertions.assertEquals(SearchSortEnum.DESC, model.order()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsDeleteWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsDeleteWithResponseMockTests.java index 655116fd9ba7..f483957f3e4b 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsDeleteWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightConfigsDeleteWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import java.nio.charset.StandardCharsets; @@ -25,10 +25,10 @@ public void testDeleteWithResponse() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); manager.storageInsightConfigs() - .deleteWithResponse("jjvpilguooqja", "m", "itgueiookjbs", com.azure.core.util.Context.NONE); + .deleteWithResponse("ewijymrhbguz", "zkye", "nfnzhhh", com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightStatusTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightStatusTests.java index 6912c6597be4..ac95b3a92c3a 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightStatusTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/StorageInsightStatusTests.java @@ -12,17 +12,18 @@ public final class StorageInsightStatusTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - StorageInsightStatus model - = BinaryData.fromString("{\"state\":\"OK\",\"description\":\"n\"}").toObject(StorageInsightStatus.class); + StorageInsightStatus model = BinaryData.fromString("{\"state\":\"OK\",\"description\":\"kcdyhbpk\"}") + .toObject(StorageInsightStatus.class); Assertions.assertEquals(StorageInsightState.OK, model.state()); - Assertions.assertEquals("n", model.description()); + Assertions.assertEquals("kcdyhbpk", model.description()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - StorageInsightStatus model = new StorageInsightStatus().withState(StorageInsightState.OK).withDescription("n"); + StorageInsightStatus model + = new StorageInsightStatus().withState(StorageInsightState.OK).withDescription("kcdyhbpk"); model = BinaryData.fromObject(model).toObject(StorageInsightStatus.class); Assertions.assertEquals(StorageInsightState.OK, model.state()); - Assertions.assertEquals("n", model.description()); + Assertions.assertEquals("kcdyhbpk", model.description()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationsStopWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationsStopWithResponseMockTests.java new file mode 100644 index 000000000000..bf0e2efcb40a --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationsStopWithResponseMockTests.java @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.credential.AccessToken; +import com.azure.core.http.HttpClient; +import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; +import com.azure.core.test.http.MockHttpResponse; +import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; +import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; + +public final class SummaryLogsOperationsStopWithResponseMockTests { + @Test + public void testStopWithResponse() throws Exception { + String responseStr = "{}"; + + HttpClient httpClient + = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); + LogAnalyticsManager manager = LogAnalyticsManager.configure() + .withHttpClient(httpClient) + .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); + + manager.summaryLogsOperations() + .stopWithResponse("t", "inklogxs", "tzarhzvqnsqktc", com.azure.core.util.Context.NONE); + + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsRetryBinPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsRetryBinPropertiesTests.java new file mode 100644 index 000000000000..54f0d4458f74 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsRetryBinPropertiesTests.java @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.SummaryLogsRetryBinProperties; +import java.time.OffsetDateTime; +import org.junit.jupiter.api.Assertions; + +public final class SummaryLogsRetryBinPropertiesTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + SummaryLogsRetryBinProperties model = BinaryData.fromString("{\"retryBinStartTime\":\"2021-07-20T22:39:45Z\"}") + .toObject(SummaryLogsRetryBinProperties.class); + Assertions.assertEquals(OffsetDateTime.parse("2021-07-20T22:39:45Z"), model.retryBinStartTime()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + SummaryLogsRetryBinProperties model + = new SummaryLogsRetryBinProperties().withRetryBinStartTime(OffsetDateTime.parse("2021-07-20T22:39:45Z")); + model = BinaryData.fromObject(model).toObject(SummaryLogsRetryBinProperties.class); + Assertions.assertEquals(OffsetDateTime.parse("2021-07-20T22:39:45Z"), model.retryBinStartTime()); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsRetryBinTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsRetryBinTests.java new file mode 100644 index 000000000000..060185115b7b --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsRetryBinTests.java @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.SummaryLogsRetryBin; +import com.azure.resourcemanager.loganalytics.models.SummaryLogsRetryBinProperties; +import java.time.OffsetDateTime; +import org.junit.jupiter.api.Assertions; + +public final class SummaryLogsRetryBinTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + SummaryLogsRetryBin model + = BinaryData.fromString("{\"properties\":{\"retryBinStartTime\":\"2021-09-02T16:11:18Z\"}}") + .toObject(SummaryLogsRetryBin.class); + Assertions.assertEquals(OffsetDateTime.parse("2021-09-02T16:11:18Z"), model.properties().retryBinStartTime()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + SummaryLogsRetryBin model = new SummaryLogsRetryBin().withProperties( + new SummaryLogsRetryBinProperties().withRetryBinStartTime(OffsetDateTime.parse("2021-09-02T16:11:18Z"))); + model = BinaryData.fromObject(model).toObject(SummaryLogsRetryBin.class); + Assertions.assertEquals(OffsetDateTime.parse("2021-09-02T16:11:18Z"), model.properties().retryBinStartTime()); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SystemDataAutoGeneratedTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SystemDataAutoGeneratedTests.java deleted file mode 100644 index 69d013603667..000000000000 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/SystemDataAutoGeneratedTests.java +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.loganalytics.generated; - -import com.azure.core.util.BinaryData; -import com.azure.resourcemanager.loganalytics.models.CreatedByType; -import com.azure.resourcemanager.loganalytics.models.SystemDataAutoGenerated; -import java.time.OffsetDateTime; -import org.junit.jupiter.api.Assertions; - -public final class SystemDataAutoGeneratedTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - SystemDataAutoGenerated model = BinaryData.fromString( - "{\"createdBy\":\"dntwjchrdgo\",\"createdByType\":\"User\",\"createdAt\":\"2021-10-03T14:03:48Z\",\"lastModifiedBy\":\"ctondz\",\"lastModifiedByType\":\"User\",\"lastModifiedAt\":\"2021-02-01T20:04:58Z\"}") - .toObject(SystemDataAutoGenerated.class); - Assertions.assertEquals("dntwjchrdgo", model.createdBy()); - Assertions.assertEquals(CreatedByType.USER, model.createdByType()); - Assertions.assertEquals(OffsetDateTime.parse("2021-10-03T14:03:48Z"), model.createdAt()); - Assertions.assertEquals("ctondz", model.lastModifiedBy()); - Assertions.assertEquals(CreatedByType.USER, model.lastModifiedByType()); - Assertions.assertEquals(OffsetDateTime.parse("2021-02-01T20:04:58Z"), model.lastModifiedAt()); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - SystemDataAutoGenerated model = new SystemDataAutoGenerated().withCreatedBy("dntwjchrdgo") - .withCreatedByType(CreatedByType.USER) - .withCreatedAt(OffsetDateTime.parse("2021-10-03T14:03:48Z")) - .withLastModifiedBy("ctondz") - .withLastModifiedByType(CreatedByType.USER) - .withLastModifiedAt(OffsetDateTime.parse("2021-02-01T20:04:58Z")); - model = BinaryData.fromObject(model).toObject(SystemDataAutoGenerated.class); - Assertions.assertEquals("dntwjchrdgo", model.createdBy()); - Assertions.assertEquals(CreatedByType.USER, model.createdByType()); - Assertions.assertEquals(OffsetDateTime.parse("2021-10-03T14:03:48Z"), model.createdAt()); - Assertions.assertEquals("ctondz", model.lastModifiedBy()); - Assertions.assertEquals(CreatedByType.USER, model.lastModifiedByType()); - Assertions.assertEquals(OffsetDateTime.parse("2021-02-01T20:04:58Z"), model.lastModifiedAt()); - } -} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TableInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TableInnerTests.java index cdca0715099d..c04c0f4b0c73 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TableInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TableInnerTests.java @@ -21,75 +21,85 @@ public final class TableInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { TableInner model = BinaryData.fromString( - "{\"properties\":{\"retentionInDays\":744996388,\"totalRetentionInDays\":1739983778,\"archiveRetentionInDays\":1797695866,\"searchResults\":{\"query\":\"vjlfrqtt\",\"description\":\"jlkatnwxy\",\"limit\":2086170636,\"startSearchTime\":\"2021-07-06T16:40:26Z\",\"endSearchTime\":\"2021-05-28T18:08:40Z\",\"sourceTable\":\"fku\",\"azureAsyncOperationId\":\"cxkdmligovi\"},\"restoredLogs\":{\"startRestoreTime\":\"2021-07-15T21:34:15Z\",\"endRestoreTime\":\"2021-12-03T21:08:29Z\",\"sourceTable\":\"oaz\",\"azureAsyncOperationId\":\"u\"},\"resultStatistics\":{\"progress\":46.173687,\"ingestedRecords\":1776042141,\"scannedGb\":38.299255},\"plan\":\"Analytics\",\"lastPlanModifiedDate\":\"ybfhjxa\",\"schema\":{\"name\":\"jgslordilmyww\",\"displayName\":\"gkxnyedabg\",\"description\":\"udtjuewbc\",\"columns\":[{\"name\":\"uwhcjyxccybv\",\"type\":\"int\",\"dataTypeHint\":\"guid\",\"displayName\":\"udzpxgwjplmagstc\",\"description\":\"hpfkyrkdbdgi\",\"isDefaultDisplay\":false,\"isHidden\":true},{\"name\":\"nwqjnoba\",\"type\":\"int\",\"dataTypeHint\":\"uri\",\"displayName\":\"iacegfnmn\",\"description\":\"pmvmemfnczdwvv\",\"isDefaultDisplay\":true,\"isHidden\":true}],\"standardColumns\":[{\"name\":\"hpodbzev\",\"type\":\"long\",\"dataTypeHint\":\"uri\",\"displayName\":\"ukuv\",\"description\":\"cswsmystul\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"vlerchpqbmfpjba\",\"type\":\"dynamic\",\"dataTypeHint\":\"ip\",\"displayName\":\"xsspuunnoxyhk\",\"description\":\"qddrihpfhoqcaae\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"jvlpjxxkzbr\",\"type\":\"guid\",\"dataTypeHint\":\"guid\",\"displayName\":\"siykzkdncjdxonbz\",\"description\":\"gculap\",\"isDefaultDisplay\":false,\"isHidden\":true},{\"name\":\"ogtqxepnylbf\",\"type\":\"boolean\",\"dataTypeHint\":\"uri\",\"displayName\":\"tlvofq\",\"description\":\"vfcibyfmowux\",\"isDefaultDisplay\":false,\"isHidden\":false}],\"categories\":[\"xfzwi\"],\"labels\":[\"zjb\",\"yzsxjrkambtrne\"],\"source\":\"microsoft\",\"tableType\":\"SearchResults\",\"tableSubType\":\"Classic\",\"solutions\":[\"vldspa\",\"tjb\",\"kdmflvestmjlx\",\"ril\"]},\"provisioningState\":\"Succeeded\",\"retentionInDaysAsDefault\":true,\"totalRetentionInDaysAsDefault\":false},\"systemData\":{\"createdBy\":\"pxlktwkuziycsl\",\"createdByType\":\"Key\",\"createdAt\":\"2021-08-14T04:43:23Z\",\"lastModifiedBy\":\"tcktyhjtqedcgzu\",\"lastModifiedByType\":\"Application\",\"lastModifiedAt\":\"2021-03-09T05:15:02Z\"},\"id\":\"qzz\",\"name\":\"rjvpglydzgkrvqee\",\"type\":\"toepryu\"}") + "{\"properties\":{\"retentionInDays\":1450729079,\"totalRetentionInDays\":981222471,\"archiveRetentionInDays\":5055042,\"searchResults\":{\"query\":\"hhyxxrw\",\"description\":\"co\",\"limit\":381030924,\"startSearchTime\":\"2021-05-28T17:22:29Z\",\"endSearchTime\":\"2021-03-31T06:04:43Z\",\"sourceTable\":\"ymareqnajxqugj\",\"azureAsyncOperationId\":\"ycubeddgs\"},\"restoredLogs\":{\"startRestoreTime\":\"2021-06-13T04:37:53Z\",\"endRestoreTime\":\"2021-04-05T12:57Z\",\"sourceTable\":\"qal\",\"azureAsyncOperationId\":\"mnjijpxacqqudf\"},\"resultStatistics\":{\"progress\":55.070568,\"ingestedRecords\":701185139,\"scannedGb\":23.900133},\"plan\":\"Auxiliary\",\"lastPlanModifiedDate\":\"vayffimrzrt\",\"schema\":{\"name\":\"ogs\",\"displayName\":\"nevfdnw\",\"description\":\"mewzsyyc\",\"columns\":[{\"name\":\"oibjudpfrxtrthz\",\"type\":\"int\",\"dataTypeHint\":\"guid\",\"displayName\":\"kqb\",\"description\":\"ubpaxhe\",\"isDefaultDisplay\":false,\"isHidden\":false},{\"name\":\"pdtii\",\"type\":\"guid\",\"dataTypeHint\":\"armPath\",\"displayName\":\"axoruzfgsquy\",\"description\":\"rxxle\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"jezwlwnw\",\"type\":\"real\",\"dataTypeHint\":\"armPath\",\"displayName\":\"y\",\"description\":\"patdooaojkniodko\",\"isDefaultDisplay\":false,\"isHidden\":false},{\"name\":\"jhemms\",\"type\":\"real\",\"dataTypeHint\":\"uri\",\"displayName\":\"odtji\",\"description\":\"wj\",\"isDefaultDisplay\":false,\"isHidden\":true}],\"standardColumns\":[{\"name\":\"vefkdlfoakggk\",\"type\":\"dynamic\",\"dataTypeHint\":\"uri\",\"displayName\":\"wpu\",\"description\":\"qblylsyxkqj\",\"isDefaultDisplay\":false,\"isHidden\":false},{\"name\":\"tiagx\",\"type\":\"string\",\"dataTypeHint\":\"uri\",\"displayName\":\"mpsbzkfzbeyv\",\"description\":\"qi\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"jjxd\",\"type\":\"guid\",\"dataTypeHint\":\"ip\",\"displayName\":\"zclewyhmlw\",\"description\":\"ztzp\",\"isDefaultDisplay\":false,\"isHidden\":false}],\"categories\":[\"yfzqwhxxbu\",\"qa\",\"zfeqztppri\",\"lxorjaltolmncws\"],\"labels\":[\"wcsdbnwdcfhucq\",\"pfuvglsbjjca\",\"vxb\",\"t\"],\"source\":\"microsoft\",\"tableType\":\"SearchResults\",\"tableSubType\":\"Classic\",\"solutions\":[\"mr\",\"xqtvcofu\",\"f\"]},\"provisioningState\":\"Deleting\",\"retentionInDaysAsDefault\":false,\"totalRetentionInDaysAsDefault\":false},\"id\":\"dknnqvsazn\",\"name\":\"n\",\"type\":\"orudsgsa\"}") .toObject(TableInner.class); - Assertions.assertEquals(744996388, model.retentionInDays()); - Assertions.assertEquals(1739983778, model.totalRetentionInDays()); - Assertions.assertEquals("vjlfrqtt", model.searchResults().query()); - Assertions.assertEquals("jlkatnwxy", model.searchResults().description()); - Assertions.assertEquals(2086170636, model.searchResults().limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-07-06T16:40:26Z"), model.searchResults().startSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-05-28T18:08:40Z"), model.searchResults().endSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-07-15T21:34:15Z"), model.restoredLogs().startRestoreTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-12-03T21:08:29Z"), model.restoredLogs().endRestoreTime()); - Assertions.assertEquals("oaz", model.restoredLogs().sourceTable()); - Assertions.assertEquals(TablePlanEnum.ANALYTICS, model.plan()); - Assertions.assertEquals("jgslordilmyww", model.schema().name()); - Assertions.assertEquals("gkxnyedabg", model.schema().displayName()); - Assertions.assertEquals("udtjuewbc", model.schema().description()); - Assertions.assertEquals("uwhcjyxccybv", model.schema().columns().get(0).name()); + Assertions.assertEquals(1450729079, model.retentionInDays()); + Assertions.assertEquals(981222471, model.totalRetentionInDays()); + Assertions.assertEquals("hhyxxrw", model.searchResults().query()); + Assertions.assertEquals("co", model.searchResults().description()); + Assertions.assertEquals(381030924, model.searchResults().limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-05-28T17:22:29Z"), model.searchResults().startSearchTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-03-31T06:04:43Z"), model.searchResults().endSearchTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-06-13T04:37:53Z"), model.restoredLogs().startRestoreTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-04-05T12:57Z"), model.restoredLogs().endRestoreTime()); + Assertions.assertEquals("qal", model.restoredLogs().sourceTable()); + Assertions.assertEquals(TablePlanEnum.AUXILIARY, model.plan()); + Assertions.assertEquals("ogs", model.schema().name()); + Assertions.assertEquals("nevfdnw", model.schema().displayName()); + Assertions.assertEquals("mewzsyyc", model.schema().description()); + Assertions.assertEquals("oibjudpfrxtrthz", model.schema().columns().get(0).name()); Assertions.assertEquals(ColumnTypeEnum.INT, model.schema().columns().get(0).type()); Assertions.assertEquals(ColumnDataTypeHintEnum.GUID, model.schema().columns().get(0).dataTypeHint()); - Assertions.assertEquals("udzpxgwjplmagstc", model.schema().columns().get(0).displayName()); - Assertions.assertEquals("hpfkyrkdbdgi", model.schema().columns().get(0).description()); + Assertions.assertEquals("kqb", model.schema().columns().get(0).displayName()); + Assertions.assertEquals("ubpaxhe", model.schema().columns().get(0).description()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - TableInner model = new TableInner().withRetentionInDays(744996388) - .withTotalRetentionInDays(1739983778) - .withSearchResults(new SearchResults().withQuery("vjlfrqtt") - .withDescription("jlkatnwxy") - .withLimit(2086170636) - .withStartSearchTime(OffsetDateTime.parse("2021-07-06T16:40:26Z")) - .withEndSearchTime(OffsetDateTime.parse("2021-05-28T18:08:40Z"))) - .withRestoredLogs(new RestoredLogs().withStartRestoreTime(OffsetDateTime.parse("2021-07-15T21:34:15Z")) - .withEndRestoreTime(OffsetDateTime.parse("2021-12-03T21:08:29Z")) - .withSourceTable("oaz")) - .withPlan(TablePlanEnum.ANALYTICS) - .withSchema(new Schema().withName("jgslordilmyww") - .withDisplayName("gkxnyedabg") - .withDescription("udtjuewbc") + TableInner model = new TableInner().withRetentionInDays(1450729079) + .withTotalRetentionInDays(981222471) + .withSearchResults(new SearchResults().withQuery("hhyxxrw") + .withDescription("co") + .withLimit(381030924) + .withStartSearchTime(OffsetDateTime.parse("2021-05-28T17:22:29Z")) + .withEndSearchTime(OffsetDateTime.parse("2021-03-31T06:04:43Z"))) + .withRestoredLogs(new RestoredLogs().withStartRestoreTime(OffsetDateTime.parse("2021-06-13T04:37:53Z")) + .withEndRestoreTime(OffsetDateTime.parse("2021-04-05T12:57Z")) + .withSourceTable("qal")) + .withPlan(TablePlanEnum.AUXILIARY) + .withSchema(new Schema().withName("ogs") + .withDisplayName("nevfdnw") + .withDescription("mewzsyyc") .withColumns(Arrays.asList( - new Column().withName("uwhcjyxccybv") + new Column().withName("oibjudpfrxtrthz") .withType(ColumnTypeEnum.INT) .withDataTypeHint(ColumnDataTypeHintEnum.GUID) - .withDisplayName("udzpxgwjplmagstc") - .withDescription("hpfkyrkdbdgi"), - new Column().withName("nwqjnoba") - .withType(ColumnTypeEnum.INT) + .withDisplayName("kqb") + .withDescription("ubpaxhe"), + new Column().withName("pdtii") + .withType(ColumnTypeEnum.GUID) + .withDataTypeHint(ColumnDataTypeHintEnum.ARM_PATH) + .withDisplayName("axoruzfgsquy") + .withDescription("rxxle"), + new Column().withName("jezwlwnw") + .withType(ColumnTypeEnum.REAL) + .withDataTypeHint(ColumnDataTypeHintEnum.ARM_PATH) + .withDisplayName("y") + .withDescription("patdooaojkniodko"), + new Column().withName("jhemms") + .withType(ColumnTypeEnum.REAL) .withDataTypeHint(ColumnDataTypeHintEnum.URI) - .withDisplayName("iacegfnmn") - .withDescription("pmvmemfnczdwvv")))); + .withDisplayName("odtji") + .withDescription("wj")))); model = BinaryData.fromObject(model).toObject(TableInner.class); - Assertions.assertEquals(744996388, model.retentionInDays()); - Assertions.assertEquals(1739983778, model.totalRetentionInDays()); - Assertions.assertEquals("vjlfrqtt", model.searchResults().query()); - Assertions.assertEquals("jlkatnwxy", model.searchResults().description()); - Assertions.assertEquals(2086170636, model.searchResults().limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-07-06T16:40:26Z"), model.searchResults().startSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-05-28T18:08:40Z"), model.searchResults().endSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-07-15T21:34:15Z"), model.restoredLogs().startRestoreTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-12-03T21:08:29Z"), model.restoredLogs().endRestoreTime()); - Assertions.assertEquals("oaz", model.restoredLogs().sourceTable()); - Assertions.assertEquals(TablePlanEnum.ANALYTICS, model.plan()); - Assertions.assertEquals("jgslordilmyww", model.schema().name()); - Assertions.assertEquals("gkxnyedabg", model.schema().displayName()); - Assertions.assertEquals("udtjuewbc", model.schema().description()); - Assertions.assertEquals("uwhcjyxccybv", model.schema().columns().get(0).name()); + Assertions.assertEquals(1450729079, model.retentionInDays()); + Assertions.assertEquals(981222471, model.totalRetentionInDays()); + Assertions.assertEquals("hhyxxrw", model.searchResults().query()); + Assertions.assertEquals("co", model.searchResults().description()); + Assertions.assertEquals(381030924, model.searchResults().limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-05-28T17:22:29Z"), model.searchResults().startSearchTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-03-31T06:04:43Z"), model.searchResults().endSearchTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-06-13T04:37:53Z"), model.restoredLogs().startRestoreTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-04-05T12:57Z"), model.restoredLogs().endRestoreTime()); + Assertions.assertEquals("qal", model.restoredLogs().sourceTable()); + Assertions.assertEquals(TablePlanEnum.AUXILIARY, model.plan()); + Assertions.assertEquals("ogs", model.schema().name()); + Assertions.assertEquals("nevfdnw", model.schema().displayName()); + Assertions.assertEquals("mewzsyyc", model.schema().description()); + Assertions.assertEquals("oibjudpfrxtrthz", model.schema().columns().get(0).name()); Assertions.assertEquals(ColumnTypeEnum.INT, model.schema().columns().get(0).type()); Assertions.assertEquals(ColumnDataTypeHintEnum.GUID, model.schema().columns().get(0).dataTypeHint()); - Assertions.assertEquals("udzpxgwjplmagstc", model.schema().columns().get(0).displayName()); - Assertions.assertEquals("hpfkyrkdbdgi", model.schema().columns().get(0).description()); + Assertions.assertEquals("kqb", model.schema().columns().get(0).displayName()); + Assertions.assertEquals("ubpaxhe", model.schema().columns().get(0).description()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablePropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablePropertiesTests.java index 3ed057b6cffe..909b4652dfee 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablePropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablePropertiesTests.java @@ -21,69 +21,85 @@ public final class TablePropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { TableProperties model = BinaryData.fromString( - "{\"retentionInDays\":479918870,\"totalRetentionInDays\":2045022432,\"archiveRetentionInDays\":1783841206,\"searchResults\":{\"query\":\"o\",\"description\":\"vf\",\"limit\":1925116648,\"startSearchTime\":\"2021-10-04T03:30Z\",\"endSearchTime\":\"2021-11-05T03:00:16Z\",\"sourceTable\":\"f\",\"azureAsyncOperationId\":\"z\"},\"restoredLogs\":{\"startRestoreTime\":\"2021-04-24T01:32:22Z\",\"endRestoreTime\":\"2021-11-03T23:30:17Z\",\"sourceTable\":\"cx\",\"azureAsyncOperationId\":\"t\"},\"resultStatistics\":{\"progress\":39.374405,\"ingestedRecords\":675680646,\"scannedGb\":64.79667},\"plan\":\"Basic\",\"lastPlanModifiedDate\":\"mldgxobfirc\",\"schema\":{\"name\":\"kciayzri\",\"displayName\":\"hya\",\"description\":\"vjlboxqvk\",\"columns\":[{\"name\":\"ho\",\"type\":\"boolean\",\"dataTypeHint\":\"guid\",\"displayName\":\"wdigumbnraauz\",\"description\":\"tj\",\"isDefaultDisplay\":false,\"isHidden\":false}],\"standardColumns\":[{\"name\":\"zwwva\",\"type\":\"boolean\",\"dataTypeHint\":\"uri\",\"displayName\":\"fonkphhqyikvyla\",\"description\":\"avluwmncs\",\"isDefaultDisplay\":false,\"isHidden\":false},{\"name\":\"bvpoekrsgsgbdhu\",\"type\":\"dynamic\",\"dataTypeHint\":\"uri\",\"displayName\":\"gkynscliqh\",\"description\":\"h\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"kubotppnvdxz\",\"type\":\"dateTime\",\"dataTypeHint\":\"guid\",\"displayName\":\"bbc\",\"description\":\"qagt\",\"isDefaultDisplay\":true,\"isHidden\":false}],\"categories\":[\"qojpy\"],\"labels\":[\"trdcnifmzzs\"],\"source\":\"microsoft\",\"tableType\":\"CustomLog\",\"tableSubType\":\"Any\",\"solutions\":[\"xmprafwg\"]},\"provisioningState\":\"Deleting\",\"retentionInDaysAsDefault\":true,\"totalRetentionInDaysAsDefault\":false}") + "{\"retentionInDays\":220532000,\"totalRetentionInDays\":103703544,\"archiveRetentionInDays\":830439521,\"searchResults\":{\"query\":\"wjue\",\"description\":\"eburu\",\"limit\":1850094254,\"startSearchTime\":\"2021-01-16T01:35:10Z\",\"endSearchTime\":\"2021-09-18T15:34:48Z\",\"sourceTable\":\"l\",\"azureAsyncOperationId\":\"ab\"},\"restoredLogs\":{\"startRestoreTime\":\"2021-09-17T06:29:30Z\",\"endRestoreTime\":\"2021-03-04T19:19:07Z\",\"sourceTable\":\"frvtpuqu\",\"azureAsyncOperationId\":\"qlgkfbtn\"},\"resultStatistics\":{\"progress\":47.37398,\"ingestedRecords\":1440714343,\"scannedGb\":33.60299},\"plan\":\"Auxiliary\",\"lastPlanModifiedDate\":\"ujitcjedftww\",\"schema\":{\"name\":\"kojvd\",\"displayName\":\"zfoqouicybxar\",\"description\":\"szufoxciqopidoa\",\"columns\":[{\"name\":\"dhkha\",\"type\":\"boolean\",\"dataTypeHint\":\"uri\",\"displayName\":\"bon\",\"description\":\"ntoe\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"whkszzcmrvexztvb\",\"type\":\"dateTime\",\"dataTypeHint\":\"uri\",\"displayName\":\"aoyzkoow\",\"description\":\"mnguxawqaldsyu\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"qfobwyz\",\"type\":\"long\",\"dataTypeHint\":\"guid\",\"displayName\":\"t\",\"description\":\"fhpagmhrskdsnf\",\"isDefaultDisplay\":true,\"isHidden\":true},{\"name\":\"gtdlmk\",\"type\":\"long\",\"dataTypeHint\":\"guid\",\"displayName\":\"hewpusdsttwv\",\"description\":\"vbbejdcng\",\"isDefaultDisplay\":false,\"isHidden\":false}],\"standardColumns\":[{\"name\":\"gm\",\"type\":\"int\",\"dataTypeHint\":\"guid\",\"displayName\":\"grtwae\",\"description\":\"uzkopbminrfd\",\"isDefaultDisplay\":false,\"isHidden\":false},{\"name\":\"ziuiefozbhdm\",\"type\":\"string\",\"dataTypeHint\":\"guid\",\"displayName\":\"hoftr\",\"description\":\"equi\",\"isDefaultDisplay\":false,\"isHidden\":true},{\"name\":\"lfaoqzpiyylhaln\",\"type\":\"string\",\"dataTypeHint\":\"guid\",\"displayName\":\"ph\",\"description\":\"ivwitqscywugg\",\"isDefaultDisplay\":false,\"isHidden\":false}],\"categories\":[\"bwemhairs\",\"rgzdwmsweyp\"],\"labels\":[\"xggicccnxqhuexmk\",\"tlstvlzywem\",\"zrncsdt\",\"lusiy\"],\"source\":\"customer\",\"tableType\":\"RestoredLogs\",\"tableSubType\":\"Classic\",\"solutions\":[\"sl\",\"eadcygqukyhejhz\"]},\"provisioningState\":\"Succeeded\",\"retentionInDaysAsDefault\":false,\"totalRetentionInDaysAsDefault\":true}") .toObject(TableProperties.class); - Assertions.assertEquals(479918870, model.retentionInDays()); - Assertions.assertEquals(2045022432, model.totalRetentionInDays()); - Assertions.assertEquals("o", model.searchResults().query()); - Assertions.assertEquals("vf", model.searchResults().description()); - Assertions.assertEquals(1925116648, model.searchResults().limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-10-04T03:30Z"), model.searchResults().startSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-11-05T03:00:16Z"), model.searchResults().endSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-04-24T01:32:22Z"), model.restoredLogs().startRestoreTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-11-03T23:30:17Z"), model.restoredLogs().endRestoreTime()); - Assertions.assertEquals("cx", model.restoredLogs().sourceTable()); - Assertions.assertEquals(TablePlanEnum.BASIC, model.plan()); - Assertions.assertEquals("kciayzri", model.schema().name()); - Assertions.assertEquals("hya", model.schema().displayName()); - Assertions.assertEquals("vjlboxqvk", model.schema().description()); - Assertions.assertEquals("ho", model.schema().columns().get(0).name()); + Assertions.assertEquals(220532000, model.retentionInDays()); + Assertions.assertEquals(103703544, model.totalRetentionInDays()); + Assertions.assertEquals("wjue", model.searchResults().query()); + Assertions.assertEquals("eburu", model.searchResults().description()); + Assertions.assertEquals(1850094254, model.searchResults().limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-01-16T01:35:10Z"), model.searchResults().startSearchTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-09-18T15:34:48Z"), model.searchResults().endSearchTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-09-17T06:29:30Z"), model.restoredLogs().startRestoreTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-03-04T19:19:07Z"), model.restoredLogs().endRestoreTime()); + Assertions.assertEquals("frvtpuqu", model.restoredLogs().sourceTable()); + Assertions.assertEquals(TablePlanEnum.AUXILIARY, model.plan()); + Assertions.assertEquals("kojvd", model.schema().name()); + Assertions.assertEquals("zfoqouicybxar", model.schema().displayName()); + Assertions.assertEquals("szufoxciqopidoa", model.schema().description()); + Assertions.assertEquals("dhkha", model.schema().columns().get(0).name()); Assertions.assertEquals(ColumnTypeEnum.BOOLEAN, model.schema().columns().get(0).type()); - Assertions.assertEquals(ColumnDataTypeHintEnum.GUID, model.schema().columns().get(0).dataTypeHint()); - Assertions.assertEquals("wdigumbnraauz", model.schema().columns().get(0).displayName()); - Assertions.assertEquals("tj", model.schema().columns().get(0).description()); + Assertions.assertEquals(ColumnDataTypeHintEnum.URI, model.schema().columns().get(0).dataTypeHint()); + Assertions.assertEquals("bon", model.schema().columns().get(0).displayName()); + Assertions.assertEquals("ntoe", model.schema().columns().get(0).description()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - TableProperties model = new TableProperties().withRetentionInDays(479918870) - .withTotalRetentionInDays(2045022432) - .withSearchResults(new SearchResults().withQuery("o") - .withDescription("vf") - .withLimit(1925116648) - .withStartSearchTime(OffsetDateTime.parse("2021-10-04T03:30Z")) - .withEndSearchTime(OffsetDateTime.parse("2021-11-05T03:00:16Z"))) - .withRestoredLogs(new RestoredLogs().withStartRestoreTime(OffsetDateTime.parse("2021-04-24T01:32:22Z")) - .withEndRestoreTime(OffsetDateTime.parse("2021-11-03T23:30:17Z")) - .withSourceTable("cx")) - .withPlan(TablePlanEnum.BASIC) - .withSchema(new Schema().withName("kciayzri") - .withDisplayName("hya") - .withDescription("vjlboxqvk") - .withColumns(Arrays.asList(new Column().withName("ho") - .withType(ColumnTypeEnum.BOOLEAN) - .withDataTypeHint(ColumnDataTypeHintEnum.GUID) - .withDisplayName("wdigumbnraauz") - .withDescription("tj")))); + TableProperties model = new TableProperties().withRetentionInDays(220532000) + .withTotalRetentionInDays(103703544) + .withSearchResults(new SearchResults().withQuery("wjue") + .withDescription("eburu") + .withLimit(1850094254) + .withStartSearchTime(OffsetDateTime.parse("2021-01-16T01:35:10Z")) + .withEndSearchTime(OffsetDateTime.parse("2021-09-18T15:34:48Z"))) + .withRestoredLogs(new RestoredLogs().withStartRestoreTime(OffsetDateTime.parse("2021-09-17T06:29:30Z")) + .withEndRestoreTime(OffsetDateTime.parse("2021-03-04T19:19:07Z")) + .withSourceTable("frvtpuqu")) + .withPlan(TablePlanEnum.AUXILIARY) + .withSchema(new Schema().withName("kojvd") + .withDisplayName("zfoqouicybxar") + .withDescription("szufoxciqopidoa") + .withColumns(Arrays.asList( + new Column().withName("dhkha") + .withType(ColumnTypeEnum.BOOLEAN) + .withDataTypeHint(ColumnDataTypeHintEnum.URI) + .withDisplayName("bon") + .withDescription("ntoe"), + new Column().withName("whkszzcmrvexztvb") + .withType(ColumnTypeEnum.DATE_TIME) + .withDataTypeHint(ColumnDataTypeHintEnum.URI) + .withDisplayName("aoyzkoow") + .withDescription("mnguxawqaldsyu"), + new Column().withName("qfobwyz") + .withType(ColumnTypeEnum.LONG) + .withDataTypeHint(ColumnDataTypeHintEnum.GUID) + .withDisplayName("t") + .withDescription("fhpagmhrskdsnf"), + new Column().withName("gtdlmk") + .withType(ColumnTypeEnum.LONG) + .withDataTypeHint(ColumnDataTypeHintEnum.GUID) + .withDisplayName("hewpusdsttwv") + .withDescription("vbbejdcng")))); model = BinaryData.fromObject(model).toObject(TableProperties.class); - Assertions.assertEquals(479918870, model.retentionInDays()); - Assertions.assertEquals(2045022432, model.totalRetentionInDays()); - Assertions.assertEquals("o", model.searchResults().query()); - Assertions.assertEquals("vf", model.searchResults().description()); - Assertions.assertEquals(1925116648, model.searchResults().limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-10-04T03:30Z"), model.searchResults().startSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-11-05T03:00:16Z"), model.searchResults().endSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-04-24T01:32:22Z"), model.restoredLogs().startRestoreTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-11-03T23:30:17Z"), model.restoredLogs().endRestoreTime()); - Assertions.assertEquals("cx", model.restoredLogs().sourceTable()); - Assertions.assertEquals(TablePlanEnum.BASIC, model.plan()); - Assertions.assertEquals("kciayzri", model.schema().name()); - Assertions.assertEquals("hya", model.schema().displayName()); - Assertions.assertEquals("vjlboxqvk", model.schema().description()); - Assertions.assertEquals("ho", model.schema().columns().get(0).name()); + Assertions.assertEquals(220532000, model.retentionInDays()); + Assertions.assertEquals(103703544, model.totalRetentionInDays()); + Assertions.assertEquals("wjue", model.searchResults().query()); + Assertions.assertEquals("eburu", model.searchResults().description()); + Assertions.assertEquals(1850094254, model.searchResults().limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-01-16T01:35:10Z"), model.searchResults().startSearchTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-09-18T15:34:48Z"), model.searchResults().endSearchTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-09-17T06:29:30Z"), model.restoredLogs().startRestoreTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-03-04T19:19:07Z"), model.restoredLogs().endRestoreTime()); + Assertions.assertEquals("frvtpuqu", model.restoredLogs().sourceTable()); + Assertions.assertEquals(TablePlanEnum.AUXILIARY, model.plan()); + Assertions.assertEquals("kojvd", model.schema().name()); + Assertions.assertEquals("zfoqouicybxar", model.schema().displayName()); + Assertions.assertEquals("szufoxciqopidoa", model.schema().description()); + Assertions.assertEquals("dhkha", model.schema().columns().get(0).name()); Assertions.assertEquals(ColumnTypeEnum.BOOLEAN, model.schema().columns().get(0).type()); - Assertions.assertEquals(ColumnDataTypeHintEnum.GUID, model.schema().columns().get(0).dataTypeHint()); - Assertions.assertEquals("wdigumbnraauz", model.schema().columns().get(0).displayName()); - Assertions.assertEquals("tj", model.schema().columns().get(0).description()); + Assertions.assertEquals(ColumnDataTypeHintEnum.URI, model.schema().columns().get(0).dataTypeHint()); + Assertions.assertEquals("bon", model.schema().columns().get(0).displayName()); + Assertions.assertEquals("ntoe", model.schema().columns().get(0).description()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesCancelSearchWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesCancelSearchWithResponseMockTests.java index 8fc39e4f9123..9e7a5de90ff5 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesCancelSearchWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesCancelSearchWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import java.nio.charset.StandardCharsets; @@ -25,9 +25,10 @@ public void testCancelSearchWithResponse() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - manager.tables().cancelSearchWithResponse("myltj", "rspxklur", "clf", com.azure.core.util.Context.NONE); + manager.tables() + .cancelSearchWithResponse("bxsjybvitvqkj", "az", "umtggmuwdchozfn", com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesCreateOrUpdateMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesCreateOrUpdateMockTests.java index a5218a99664d..47b3fe36b9ae 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesCreateOrUpdateMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesCreateOrUpdateMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.Column; @@ -29,65 +29,75 @@ public final class TablesCreateOrUpdateMockTests { @Test public void testCreateOrUpdate() throws Exception { String responseStr - = "{\"properties\":{\"retentionInDays\":480341295,\"totalRetentionInDays\":27190578,\"archiveRetentionInDays\":1086111273,\"searchResults\":{\"query\":\"lidftujwjj\",\"description\":\"wbeqrkuor\",\"limit\":1870712650,\"startSearchTime\":\"2021-06-02T06:21:30Z\",\"endSearchTime\":\"2021-02-07T15:13:54Z\",\"sourceTable\":\"mdvhazcvjy\",\"azureAsyncOperationId\":\"qswbqerzwx\"},\"restoredLogs\":{\"startRestoreTime\":\"2021-02-23T19:01:43Z\",\"endRestoreTime\":\"2021-05-09T17:49:27Z\",\"sourceTable\":\"ukvlb\",\"azureAsyncOperationId\":\"tgdstyouambe\"},\"resultStatistics\":{\"progress\":89.09465,\"ingestedRecords\":1285281809,\"scannedGb\":14.380062},\"plan\":\"Analytics\",\"lastPlanModifiedDate\":\"mut\",\"schema\":{\"name\":\"eyguq\",\"displayName\":\"ijiitns\",\"description\":\"lz\",\"columns\":[{\"name\":\"grijwaiufanrayb\",\"type\":\"real\",\"dataTypeHint\":\"armPath\",\"displayName\":\"oj\",\"description\":\"dgrhydkygywezs\",\"isDefaultDisplay\":false,\"isHidden\":true},{\"name\":\"ygzmxieqvdsmak\",\"type\":\"string\",\"dataTypeHint\":\"guid\",\"displayName\":\"hyhxa\",\"description\":\"bx\",\"isDefaultDisplay\":false,\"isHidden\":false}],\"standardColumns\":[{\"name\":\"tblxpkkwjdjodqhy\",\"type\":\"int\",\"dataTypeHint\":\"uri\",\"displayName\":\"emehllizh\",\"description\":\"umoqodkad\",\"isDefaultDisplay\":true,\"isHidden\":true}],\"categories\":[\"qladywrxwhydtlu\",\"vadswzs\",\"uyem\",\"owuowh\"],\"labels\":[\"nwyrmouv\"],\"source\":\"customer\",\"tableType\":\"CustomLog\",\"tableSubType\":\"Classic\",\"solutions\":[\"trfowtdvr\",\"mvlihcvjdrqcrjid\",\"ftukvhd\"]},\"provisioningState\":\"Succeeded\",\"retentionInDaysAsDefault\":false,\"totalRetentionInDaysAsDefault\":false},\"systemData\":{\"createdBy\":\"zd\",\"createdByType\":\"Application\",\"createdAt\":\"2021-03-22T04:05:19Z\",\"lastModifiedBy\":\"xhafratqx\",\"lastModifiedByType\":\"Application\",\"lastModifiedAt\":\"2021-11-30T03:06:43Z\"},\"id\":\"umzznvalqjrhuz\",\"name\":\"fxonjtpusllywp\",\"type\":\"tiotzb\"}"; + = "{\"properties\":{\"retentionInDays\":1532200707,\"totalRetentionInDays\":543172402,\"archiveRetentionInDays\":699290789,\"searchResults\":{\"query\":\"fccnuhiigb\",\"description\":\"bui\",\"limit\":1764547970,\"startSearchTime\":\"2021-06-14T14:08:19Z\",\"endSearchTime\":\"2021-05-03T08:54:55Z\",\"sourceTable\":\"rkdlb\",\"azureAsyncOperationId\":\"qxvhcsyhzlwxa\"},\"restoredLogs\":{\"startRestoreTime\":\"2021-09-21T01:21:46Z\",\"endRestoreTime\":\"2021-05-18T07:30Z\",\"sourceTable\":\"xdndsbdweaderzm\",\"azureAsyncOperationId\":\"t\"},\"resultStatistics\":{\"progress\":86.6211,\"ingestedRecords\":1639161747,\"scannedGb\":6.1114073},\"plan\":\"Basic\",\"lastPlanModifiedDate\":\"goaqylkjztj\",\"schema\":{\"name\":\"zjcg\",\"displayName\":\"itpfinzcpdl\",\"description\":\"rlgjm\",\"columns\":[{\"name\":\"vcqguefzh\",\"type\":\"string\",\"dataTypeHint\":\"ip\",\"displayName\":\"durelyujl\",\"description\":\"oumpcky\",\"isDefaultDisplay\":false,\"isHidden\":false},{\"name\":\"gptaj\",\"type\":\"boolean\",\"dataTypeHint\":\"armPath\",\"displayName\":\"ucycijo\",\"description\":\"xiutgjcyzyzj\",\"isDefaultDisplay\":false,\"isHidden\":false},{\"name\":\"txjeaoqaqbzgy\",\"type\":\"string\",\"dataTypeHint\":\"uri\",\"displayName\":\"atbwbqam\",\"description\":\"uliyslpkcv\",\"isDefaultDisplay\":false,\"isHidden\":false}],\"standardColumns\":[{\"name\":\"pmywbormcq\",\"type\":\"guid\",\"dataTypeHint\":\"ip\",\"displayName\":\"qpkzfbojxjmcsmy\",\"description\":\"ixvcpwnkwywzwo\",\"isDefaultDisplay\":false,\"isHidden\":true}],\"categories\":[\"uoiqt\",\"mt\"],\"labels\":[\"kn\",\"rwzawnvs\",\"cfhzagxnvhycv\",\"imwrzregzgyufu\"],\"source\":\"microsoft\",\"tableType\":\"CustomLog\",\"tableSubType\":\"Classic\",\"solutions\":[\"kzkdhmeott\",\"w\",\"yos\",\"wwhnhjtfvpn\"]},\"provisioningState\":\"Succeeded\",\"retentionInDaysAsDefault\":true,\"totalRetentionInDaysAsDefault\":false},\"id\":\"wyn\",\"name\":\"dqllzsauzpjlxeeh\",\"type\":\"xiqhzlraymezxlsk\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); Table response = manager.tables() - .define("oytzpose") - .withExistingWorkspace("xa", "n") - .withRetentionInDays(1606592668) - .withTotalRetentionInDays(1200171262) - .withSearchResults(new SearchResults().withQuery("aupxvpi") - .withDescription("f") - .withLimit(479705193) - .withStartSearchTime(OffsetDateTime.parse("2021-06-27T21:10:54Z")) - .withEndSearchTime(OffsetDateTime.parse("2021-06-24T09:11:48Z"))) - .withRestoredLogs(new RestoredLogs().withStartRestoreTime(OffsetDateTime.parse("2021-07-31T20:24:08Z")) - .withEndRestoreTime(OffsetDateTime.parse("2021-02-02T20:49:05Z")) - .withSourceTable("xwetwkdrcyrucpc")) - .withPlan(TablePlanEnum.BASIC) - .withSchema(new Schema().withName("dnelqkaad") - .withDisplayName("nwf") - .withDescription("nniyopetxi") + .define("akizvoaikna") + .withExistingWorkspace("fexl", "xn") + .withRetentionInDays(427869575) + .withTotalRetentionInDays(915740665) + .withSearchResults(new SearchResults().withQuery("lykwphvxz") + .withDescription("xhmpejtlkex") + .withLimit(780657181) + .withStartSearchTime(OffsetDateTime.parse("2021-09-17T09:38:18Z")) + .withEndSearchTime(OffsetDateTime.parse("2021-08-12T17:38:45Z"))) + .withRestoredLogs(new RestoredLogs().withStartRestoreTime(OffsetDateTime.parse("2021-03-10T18:49:30Z")) + .withEndRestoreTime(OffsetDateTime.parse("2021-10-06T09:15:33Z")) + .withSourceTable("kyupijubyqj")) + .withPlan(TablePlanEnum.ANALYTICS) + .withSchema(new Schema().withName("mgzvyfi") + .withDisplayName("kzuqnwsith") + .withDescription("olyahluqwqulsut") .withColumns(Arrays.asList( - new Column().withName("lyxnucaephb") - .withType(ColumnTypeEnum.GUID) - .withDataTypeHint(ColumnDataTypeHintEnum.URI) - .withDisplayName("tv") - .withDescription("sdtcjbctvivuzqym"), - new Column().withName("tgitsqhzvbrzc") - .withType(ColumnTypeEnum.DYNAMIC) + new Column().withName("xykfhyq") + .withType(ColumnTypeEnum.DATE_TIME) .withDataTypeHint(ColumnDataTypeHintEnum.IP) - .withDisplayName("ndscxmxeatk") - .withDescription("mwnrdj")))) + .withDisplayName("g") + .withDescription("ftbcvexreuquow"), + new Column().withName("hreagk") + .withType(ColumnTypeEnum.STRING) + .withDataTypeHint(ColumnDataTypeHintEnum.IP) + .withDisplayName("tvbczsulm") + .withDescription("glmep"), + new Column().withName("kgsangpszng") + .withType(ColumnTypeEnum.STRING) + .withDataTypeHint(ColumnDataTypeHintEnum.ARM_PATH) + .withDisplayName("kvec") + .withDescription("jcngoadyed"), + new Column().withName("oknub") + .withType(ColumnTypeEnum.DATE_TIME) + .withDataTypeHint(ColumnDataTypeHintEnum.GUID) + .withDisplayName("pz") + .withDescription("gdgxvcoqraswug")))) .create(); - Assertions.assertEquals(480341295, response.retentionInDays()); - Assertions.assertEquals(27190578, response.totalRetentionInDays()); - Assertions.assertEquals("lidftujwjj", response.searchResults().query()); - Assertions.assertEquals("wbeqrkuor", response.searchResults().description()); - Assertions.assertEquals(1870712650, response.searchResults().limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-06-02T06:21:30Z"), + Assertions.assertEquals(1532200707, response.retentionInDays()); + Assertions.assertEquals(543172402, response.totalRetentionInDays()); + Assertions.assertEquals("fccnuhiigb", response.searchResults().query()); + Assertions.assertEquals("bui", response.searchResults().description()); + Assertions.assertEquals(1764547970, response.searchResults().limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-06-14T14:08:19Z"), response.searchResults().startSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-02-07T15:13:54Z"), response.searchResults().endSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-02-23T19:01:43Z"), + Assertions.assertEquals(OffsetDateTime.parse("2021-05-03T08:54:55Z"), response.searchResults().endSearchTime()); + Assertions.assertEquals(OffsetDateTime.parse("2021-09-21T01:21:46Z"), response.restoredLogs().startRestoreTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-05-09T17:49:27Z"), response.restoredLogs().endRestoreTime()); - Assertions.assertEquals("ukvlb", response.restoredLogs().sourceTable()); - Assertions.assertEquals(TablePlanEnum.ANALYTICS, response.plan()); - Assertions.assertEquals("eyguq", response.schema().name()); - Assertions.assertEquals("ijiitns", response.schema().displayName()); - Assertions.assertEquals("lz", response.schema().description()); - Assertions.assertEquals("grijwaiufanrayb", response.schema().columns().get(0).name()); - Assertions.assertEquals(ColumnTypeEnum.REAL, response.schema().columns().get(0).type()); - Assertions.assertEquals(ColumnDataTypeHintEnum.ARM_PATH, response.schema().columns().get(0).dataTypeHint()); - Assertions.assertEquals("oj", response.schema().columns().get(0).displayName()); - Assertions.assertEquals("dgrhydkygywezs", response.schema().columns().get(0).description()); + Assertions.assertEquals(OffsetDateTime.parse("2021-05-18T07:30Z"), response.restoredLogs().endRestoreTime()); + Assertions.assertEquals("xdndsbdweaderzm", response.restoredLogs().sourceTable()); + Assertions.assertEquals(TablePlanEnum.BASIC, response.plan()); + Assertions.assertEquals("zjcg", response.schema().name()); + Assertions.assertEquals("itpfinzcpdl", response.schema().displayName()); + Assertions.assertEquals("rlgjm", response.schema().description()); + Assertions.assertEquals("vcqguefzh", response.schema().columns().get(0).name()); + Assertions.assertEquals(ColumnTypeEnum.STRING, response.schema().columns().get(0).type()); + Assertions.assertEquals(ColumnDataTypeHintEnum.IP, response.schema().columns().get(0).dataTypeHint()); + Assertions.assertEquals("durelyujl", response.schema().columns().get(0).displayName()); + Assertions.assertEquals("oumpcky", response.schema().columns().get(0).description()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesDeleteMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesDeleteMockTests.java index 823a115012ca..eb4fe5983d9a 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesDeleteMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesDeleteMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import java.nio.charset.StandardCharsets; @@ -25,9 +25,9 @@ public void testDelete() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - manager.tables().delete("rkgwltxeqip", "gzdyimsfayorp", "avkjog", com.azure.core.util.Context.NONE); + manager.tables().delete("rsofpltdbmairrh", "hfnrac", "npq", com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesGetWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesGetWithResponseMockTests.java index ef1834667e11..87a879528665 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesGetWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesGetWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.ColumnDataTypeHintEnum; @@ -24,39 +24,39 @@ public final class TablesGetWithResponseMockTests { @Test public void testGetWithResponse() throws Exception { String responseStr - = "{\"properties\":{\"retentionInDays\":1168808481,\"totalRetentionInDays\":248802373,\"archiveRetentionInDays\":564672857,\"searchResults\":{\"query\":\"buhzacaq\",\"description\":\"ltcoqc\",\"limit\":1004609054,\"startSearchTime\":\"2021-06-10T09:18:11Z\",\"endSearchTime\":\"2021-04-18T12:03:07Z\",\"sourceTable\":\"kuejk\",\"azureAsyncOperationId\":\"bizt\"},\"restoredLogs\":{\"startRestoreTime\":\"2021-09-28T22:56:41Z\",\"endRestoreTime\":\"2021-06-13T10:08:38Z\",\"sourceTable\":\"vjufycsjmlbe\",\"azureAsyncOperationId\":\"ej\"},\"resultStatistics\":{\"progress\":97.11777,\"ingestedRecords\":859653726,\"scannedGb\":22.48292},\"plan\":\"Analytics\",\"lastPlanModifiedDate\":\"tudaw\",\"schema\":{\"name\":\"felqerpptc\",\"displayName\":\"qnzmnhiil\",\"description\":\"lwcjgckbbcccgzpr\",\"columns\":[{\"name\":\"yuffatsgf\",\"type\":\"string\",\"dataTypeHint\":\"uri\",\"displayName\":\"byubhiqdxyurnpn\",\"description\":\"zafccnuhiigb\",\"isDefaultDisplay\":false,\"isHidden\":true},{\"name\":\"vxva\",\"type\":\"real\",\"dataTypeHint\":\"guid\",\"displayName\":\"lbnb\",\"description\":\"vhcs\",\"isDefaultDisplay\":true,\"isHidden\":true},{\"name\":\"aeaovur\",\"type\":\"dateTime\",\"dataTypeHint\":\"uri\",\"displayName\":\"bdweade\",\"description\":\"mwntopagttmvmma\",\"isDefaultDisplay\":true,\"isHidden\":true},{\"name\":\"kjztjiuazjcgmxi\",\"type\":\"string\",\"dataTypeHint\":\"armPath\",\"displayName\":\"cpdltkrlg\",\"description\":\"tbdrvcqgue\",\"isDefaultDisplay\":true,\"isHidden\":false}],\"standardColumns\":[{\"name\":\"qdurelyujlfyoum\",\"type\":\"dateTime\",\"dataTypeHint\":\"ip\",\"displayName\":\"lcdi\",\"description\":\"tajbrz\",\"isDefaultDisplay\":true,\"isHidden\":true},{\"name\":\"ci\",\"type\":\"real\",\"dataTypeHint\":\"armPath\",\"displayName\":\"utgjcyz\",\"description\":\"jdnrqjbt\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"aqbzgyhfwwvuatbw\",\"type\":\"guid\",\"dataTypeHint\":\"guid\",\"displayName\":\"uliyslpkcv\",\"description\":\"f\",\"isDefaultDisplay\":false,\"isHidden\":true},{\"name\":\"myw\",\"type\":\"guid\",\"dataTypeHint\":\"uri\",\"displayName\":\"miciij\",\"description\":\"kzfbojxjmcsmyq\",\"isDefaultDisplay\":false,\"isHidden\":false}],\"categories\":[\"nkwywzwofa\",\"ickduoiqta\",\"t\"],\"labels\":[\"kn\",\"rwzawnvs\",\"cfhzagxnvhycv\",\"imwrzregzgyufu\"],\"source\":\"microsoft\",\"tableType\":\"CustomLog\",\"tableSubType\":\"Classic\",\"solutions\":[\"kzkdhmeott\",\"w\",\"yos\",\"wwhnhjtfvpn\"]},\"provisioningState\":\"Succeeded\",\"retentionInDaysAsDefault\":true,\"totalRetentionInDaysAsDefault\":false},\"systemData\":{\"createdBy\":\"ynudqllzsa\",\"createdByType\":\"Key\",\"createdAt\":\"2021-01-28T04:04:17Z\",\"lastModifiedBy\":\"eehuxiqhzlray\",\"lastModifiedByType\":\"ManagedIdentity\",\"lastModifiedAt\":\"2021-06-28T07:28:45Z\"},\"id\":\"kihmxrfdsajredn\",\"name\":\"yyshtuwgmevua\",\"type\":\"pwzyi\"}"; + = "{\"properties\":{\"retentionInDays\":173129276,\"totalRetentionInDays\":1276247393,\"archiveRetentionInDays\":611963257,\"searchResults\":{\"query\":\"lblhtjq\",\"description\":\"yvwehtaemxh\",\"limit\":974813630,\"startSearchTime\":\"2021-07-22T16:02:08Z\",\"endSearchTime\":\"2021-06-03T23:18:21Z\",\"sourceTable\":\"xivzrrry\",\"azureAsyncOperationId\":\"imipskdyzatvfuz\"},\"restoredLogs\":{\"startRestoreTime\":\"2020-12-21T06:07:21Z\",\"endRestoreTime\":\"2021-03-13T04:29:21Z\",\"sourceTable\":\"ru\",\"azureAsyncOperationId\":\"igsyeipqdsmjt\"},\"resultStatistics\":{\"progress\":32.653797,\"ingestedRecords\":1529968527,\"scannedGb\":98.93236},\"plan\":\"Analytics\",\"lastPlanModifiedDate\":\"plkcsm\",\"schema\":{\"name\":\"wtbbaedorvvmqf\",\"displayName\":\"ygbdgwumgxdgdhpa\",\"description\":\"dexjddvjs\",\"columns\":[{\"name\":\"tm\",\"type\":\"guid\",\"dataTypeHint\":\"ip\",\"displayName\":\"lsrs\",\"description\":\"pt\",\"isDefaultDisplay\":true,\"isHidden\":true},{\"name\":\"gjokjljnhvlqjbek\",\"type\":\"guid\",\"dataTypeHint\":\"armPath\",\"displayName\":\"bksdqhjvyklxesl\",\"description\":\"hustcpoqmavnwqjw\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"jjjkxybwfdbk\",\"type\":\"guid\",\"dataTypeHint\":\"armPath\",\"displayName\":\"svkzykj\",\"description\":\"kns\",\"isDefaultDisplay\":false,\"isHidden\":true},{\"name\":\"cdp\",\"type\":\"string\",\"dataTypeHint\":\"armPath\",\"displayName\":\"mgjfbpkuwxeoio\",\"description\":\"izfavkjzwf\",\"isDefaultDisplay\":false,\"isHidden\":false}],\"standardColumns\":[{\"name\":\"fz\",\"type\":\"boolean\",\"dataTypeHint\":\"ip\",\"displayName\":\"zxmdew\",\"description\":\"sxkrpl\",\"isDefaultDisplay\":false,\"isHidden\":true}],\"categories\":[\"w\",\"iyoypsuhbrnnhj\"],\"labels\":[\"wjh\",\"kbiwetpozyc\",\"qiqyhgfsetzlexbs\",\"ledynojpz\"],\"source\":\"microsoft\",\"tableType\":\"CustomLog\",\"tableSubType\":\"Any\",\"solutions\":[\"tnhqsycl\"]},\"provisioningState\":\"Deleting\",\"retentionInDaysAsDefault\":true,\"totalRetentionInDaysAsDefault\":true},\"id\":\"afvafh\",\"name\":\"by\",\"type\":\"ccbevxrhyzdf\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); Table response = manager.tables() - .getWithResponse("ubn", "itpkpztrgdg", "vcoqraswugyxpqi", com.azure.core.util.Context.NONE) + .getWithResponse("wqapfgsdp", "vessm", "hhkuuip", com.azure.core.util.Context.NONE) .getValue(); - Assertions.assertEquals(1168808481, response.retentionInDays()); - Assertions.assertEquals(248802373, response.totalRetentionInDays()); - Assertions.assertEquals("buhzacaq", response.searchResults().query()); - Assertions.assertEquals("ltcoqc", response.searchResults().description()); - Assertions.assertEquals(1004609054, response.searchResults().limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-06-10T09:18:11Z"), + Assertions.assertEquals(173129276, response.retentionInDays()); + Assertions.assertEquals(1276247393, response.totalRetentionInDays()); + Assertions.assertEquals("lblhtjq", response.searchResults().query()); + Assertions.assertEquals("yvwehtaemxh", response.searchResults().description()); + Assertions.assertEquals(974813630, response.searchResults().limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-07-22T16:02:08Z"), response.searchResults().startSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-04-18T12:03:07Z"), response.searchResults().endSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-09-28T22:56:41Z"), + Assertions.assertEquals(OffsetDateTime.parse("2021-06-03T23:18:21Z"), response.searchResults().endSearchTime()); + Assertions.assertEquals(OffsetDateTime.parse("2020-12-21T06:07:21Z"), response.restoredLogs().startRestoreTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-06-13T10:08:38Z"), response.restoredLogs().endRestoreTime()); - Assertions.assertEquals("vjufycsjmlbe", response.restoredLogs().sourceTable()); + Assertions.assertEquals(OffsetDateTime.parse("2021-03-13T04:29:21Z"), response.restoredLogs().endRestoreTime()); + Assertions.assertEquals("ru", response.restoredLogs().sourceTable()); Assertions.assertEquals(TablePlanEnum.ANALYTICS, response.plan()); - Assertions.assertEquals("felqerpptc", response.schema().name()); - Assertions.assertEquals("qnzmnhiil", response.schema().displayName()); - Assertions.assertEquals("lwcjgckbbcccgzpr", response.schema().description()); - Assertions.assertEquals("yuffatsgf", response.schema().columns().get(0).name()); - Assertions.assertEquals(ColumnTypeEnum.STRING, response.schema().columns().get(0).type()); - Assertions.assertEquals(ColumnDataTypeHintEnum.URI, response.schema().columns().get(0).dataTypeHint()); - Assertions.assertEquals("byubhiqdxyurnpn", response.schema().columns().get(0).displayName()); - Assertions.assertEquals("zafccnuhiigb", response.schema().columns().get(0).description()); + Assertions.assertEquals("wtbbaedorvvmqf", response.schema().name()); + Assertions.assertEquals("ygbdgwumgxdgdhpa", response.schema().displayName()); + Assertions.assertEquals("dexjddvjs", response.schema().description()); + Assertions.assertEquals("tm", response.schema().columns().get(0).name()); + Assertions.assertEquals(ColumnTypeEnum.GUID, response.schema().columns().get(0).type()); + Assertions.assertEquals(ColumnDataTypeHintEnum.IP, response.schema().columns().get(0).dataTypeHint()); + Assertions.assertEquals("lsrs", response.schema().columns().get(0).displayName()); + Assertions.assertEquals("pt", response.schema().columns().get(0).description()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesListByWorkspaceMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesListByWorkspaceMockTests.java index 412e46fd379a..da5b0231cd34 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesListByWorkspaceMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesListByWorkspaceMockTests.java @@ -7,8 +7,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.ColumnDataTypeHintEnum; @@ -25,41 +25,41 @@ public final class TablesListByWorkspaceMockTests { @Test public void testListByWorkspace() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"retentionInDays\":143517524,\"totalRetentionInDays\":1172309322,\"archiveRetentionInDays\":1559182660,\"searchResults\":{\"query\":\"mmfz\",\"description\":\"fwxrzxmdew\",\"limit\":1373177035,\"startSearchTime\":\"2021-04-20T22:50:05Z\",\"endSearchTime\":\"2021-01-08T17:25:29Z\",\"sourceTable\":\"bjazejwwviy\",\"azureAsyncOperationId\":\"ps\"},\"restoredLogs\":{\"startRestoreTime\":\"2021-11-20T14:34:31Z\",\"endRestoreTime\":\"2021-01-22T13:49:23Z\",\"sourceTable\":\"jxsqwjhqkbiwetp\",\"azureAsyncOperationId\":\"ycyqiqyhgfsetzl\"},\"resultStatistics\":{\"progress\":37.550117,\"ingestedRecords\":207278850,\"scannedGb\":68.76575},\"plan\":\"Basic\",\"lastPlanModifiedDate\":\"jpziu\",\"schema\":{\"name\":\"zkkdtnhqs\",\"displayName\":\"ljselp\",\"description\":\"bafvafhlbylcc\",\"columns\":[{\"name\":\"rhyzdf\",\"type\":\"real\",\"dataTypeHint\":\"uri\",\"displayName\":\"ltdb\",\"description\":\"irrhv\",\"isDefaultDisplay\":false,\"isHidden\":false}],\"standardColumns\":[{\"name\":\"pqigtuujwouhd\",\"type\":\"string\",\"dataTypeHint\":\"ip\",\"displayName\":\"bjb\",\"description\":\"jybvit\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"znumtggmuwdchoz\",\"type\":\"long\",\"dataTypeHint\":\"armPath\",\"displayName\":\"lv\",\"description\":\"oakizvoai\",\"isDefaultDisplay\":false,\"isHidden\":false},{\"name\":\"uwiguyxlyk\",\"type\":\"boolean\",\"dataTypeHint\":\"armPath\",\"displayName\":\"cwxhmpej\",\"description\":\"ke\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"vkcqhr\",\"type\":\"string\",\"dataTypeHint\":\"guid\",\"displayName\":\"ccrmmk\",\"description\":\"pijubyq\",\"isDefaultDisplay\":false,\"isHidden\":false}],\"categories\":[\"frkemyildudxja\",\"cowvfdjkp\",\"xphlkksnmg\",\"vyfijdkzuqnw\"],\"labels\":[\"huqol\",\"ah\",\"uqwqulsutrjbhxyk\"],\"source\":\"microsoft\",\"tableType\":\"CustomLog\",\"tableSubType\":\"Any\",\"solutions\":[\"ugdrftbc\",\"exreu\",\"uowtljvfwhrea\",\"khyxvrqtvbcz\"]},\"provisioningState\":\"Succeeded\",\"retentionInDaysAsDefault\":true,\"totalRetentionInDaysAsDefault\":false},\"systemData\":{\"createdBy\":\"epjpfs\",\"createdByType\":\"ManagedIdentity\",\"createdAt\":\"2021-11-01T10:59:42Z\",\"lastModifiedBy\":\"ngpszngafpg\",\"lastModifiedByType\":\"User\",\"lastModifiedAt\":\"2021-07-27T16:28:59Z\"},\"id\":\"cj\",\"name\":\"jcngoadyed\",\"type\":\"zrgjfok\"}]}"; + = "{\"value\":[{\"properties\":{\"retentionInDays\":1986729733,\"totalRetentionInDays\":260996663,\"archiveRetentionInDays\":1750889059,\"searchResults\":{\"query\":\"cdxa\",\"description\":\"u\",\"limit\":2063766495,\"startSearchTime\":\"2021-08-26T08:46Z\",\"endSearchTime\":\"2021-09-09T20:53:20Z\",\"sourceTable\":\"bklqpxz\",\"azureAsyncOperationId\":\"afeddwwnlza\"},\"restoredLogs\":{\"startRestoreTime\":\"2021-04-21T23:27:57Z\",\"endRestoreTime\":\"2021-11-21T23:37:33Z\",\"sourceTable\":\"hgookrtalvnbwgpb\",\"azureAsyncOperationId\":\"eluclvdjj\"},\"resultStatistics\":{\"progress\":84.43588,\"ingestedRecords\":574084923,\"scannedGb\":58.54812},\"plan\":\"Basic\",\"lastPlanModifiedDate\":\"hhxhq\",\"schema\":{\"name\":\"nvzoqgyipemch\",\"displayName\":\"v\",\"description\":\"zuejd\",\"columns\":[{\"name\":\"lghwzhome\",\"type\":\"string\",\"dataTypeHint\":\"uri\",\"displayName\":\"iuh\",\"description\":\"wmoaiancznvodrrs\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"kxrx\",\"type\":\"dateTime\",\"dataTypeHint\":\"armPath\",\"displayName\":\"kgfbqljnqkhy\",\"description\":\"ocokule\",\"isDefaultDisplay\":true,\"isHidden\":false},{\"name\":\"qffawey\",\"type\":\"boolean\",\"dataTypeHint\":\"uri\",\"displayName\":\"jdxravjuqdbrx\",\"description\":\"gchbapxkiy\",\"isDefaultDisplay\":false,\"isHidden\":true},{\"name\":\"jbuscg\",\"type\":\"string\",\"dataTypeHint\":\"guid\",\"displayName\":\"ycblevpmcl\",\"description\":\"yxkyxlz\",\"isDefaultDisplay\":false,\"isHidden\":true}],\"standardColumns\":[{\"name\":\"taf\",\"type\":\"boolean\",\"dataTypeHint\":\"ip\",\"displayName\":\"vwmbjlzqsczpg\",\"description\":\"wnapfdq\",\"isDefaultDisplay\":false,\"isHidden\":true},{\"name\":\"tnuwjtkschgc\",\"type\":\"string\",\"dataTypeHint\":\"ip\",\"displayName\":\"seyqrhvyeldotjv\",\"description\":\"wiswskukjtasbvw\",\"isDefaultDisplay\":true,\"isHidden\":true},{\"name\":\"dtxfkndlqvtwknvg\",\"type\":\"dateTime\",\"dataTypeHint\":\"ip\",\"displayName\":\"yw\",\"description\":\"mqaqkueatgroes\",\"isDefaultDisplay\":false,\"isHidden\":false},{\"name\":\"byfqxkfaoy\",\"type\":\"string\",\"dataTypeHint\":\"armPath\",\"displayName\":\"vjmvqmtdwckygr\",\"description\":\"jn\",\"isDefaultDisplay\":true,\"isHidden\":false}],\"categories\":[\"skbrreqynkc\",\"ysfaqegplwrysh\"],\"labels\":[\"kvb\"],\"source\":\"customer\",\"tableType\":\"RestoredLogs\",\"tableSubType\":\"Any\",\"solutions\":[\"ptdacarvvl\"]},\"provisioningState\":\"Deleting\",\"retentionInDaysAsDefault\":false,\"totalRetentionInDaysAsDefault\":false},\"id\":\"iwenazero\",\"name\":\"zrsq\",\"type\":\"lsxkd\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response - = manager.tables().listByWorkspace("upnqrmgjfb", "kuwxeoiojfizfavk", com.azure.core.util.Context.NONE); + = manager.tables().listByWorkspace("kxrerlniylylyfwx", "utgqztwh", com.azure.core.util.Context.NONE); - Assertions.assertEquals(143517524, response.iterator().next().retentionInDays()); - Assertions.assertEquals(1172309322, response.iterator().next().totalRetentionInDays()); - Assertions.assertEquals("mmfz", response.iterator().next().searchResults().query()); - Assertions.assertEquals("fwxrzxmdew", response.iterator().next().searchResults().description()); - Assertions.assertEquals(1373177035, response.iterator().next().searchResults().limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-04-20T22:50:05Z"), + Assertions.assertEquals(1986729733, response.iterator().next().retentionInDays()); + Assertions.assertEquals(260996663, response.iterator().next().totalRetentionInDays()); + Assertions.assertEquals("cdxa", response.iterator().next().searchResults().query()); + Assertions.assertEquals("u", response.iterator().next().searchResults().description()); + Assertions.assertEquals(2063766495, response.iterator().next().searchResults().limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-08-26T08:46Z"), response.iterator().next().searchResults().startSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-01-08T17:25:29Z"), + Assertions.assertEquals(OffsetDateTime.parse("2021-09-09T20:53:20Z"), response.iterator().next().searchResults().endSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-11-20T14:34:31Z"), + Assertions.assertEquals(OffsetDateTime.parse("2021-04-21T23:27:57Z"), response.iterator().next().restoredLogs().startRestoreTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-01-22T13:49:23Z"), + Assertions.assertEquals(OffsetDateTime.parse("2021-11-21T23:37:33Z"), response.iterator().next().restoredLogs().endRestoreTime()); - Assertions.assertEquals("jxsqwjhqkbiwetp", response.iterator().next().restoredLogs().sourceTable()); + Assertions.assertEquals("hgookrtalvnbwgpb", response.iterator().next().restoredLogs().sourceTable()); Assertions.assertEquals(TablePlanEnum.BASIC, response.iterator().next().plan()); - Assertions.assertEquals("zkkdtnhqs", response.iterator().next().schema().name()); - Assertions.assertEquals("ljselp", response.iterator().next().schema().displayName()); - Assertions.assertEquals("bafvafhlbylcc", response.iterator().next().schema().description()); - Assertions.assertEquals("rhyzdf", response.iterator().next().schema().columns().get(0).name()); - Assertions.assertEquals(ColumnTypeEnum.REAL, response.iterator().next().schema().columns().get(0).type()); + Assertions.assertEquals("nvzoqgyipemch", response.iterator().next().schema().name()); + Assertions.assertEquals("v", response.iterator().next().schema().displayName()); + Assertions.assertEquals("zuejd", response.iterator().next().schema().description()); + Assertions.assertEquals("lghwzhome", response.iterator().next().schema().columns().get(0).name()); + Assertions.assertEquals(ColumnTypeEnum.STRING, response.iterator().next().schema().columns().get(0).type()); Assertions.assertEquals(ColumnDataTypeHintEnum.URI, response.iterator().next().schema().columns().get(0).dataTypeHint()); - Assertions.assertEquals("ltdb", response.iterator().next().schema().columns().get(0).displayName()); - Assertions.assertEquals("irrhv", response.iterator().next().schema().columns().get(0).description()); + Assertions.assertEquals("iuh", response.iterator().next().schema().columns().get(0).displayName()); + Assertions.assertEquals("wmoaiancznvodrrs", response.iterator().next().schema().columns().get(0).description()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesListResultTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesListResultTests.java index fd41a98a5f76..7c2eff2f4ce6 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesListResultTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesListResultTests.java @@ -20,94 +20,79 @@ public final class TablesListResultTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { TablesListResult model = BinaryData.fromString( - "{\"value\":[{\"properties\":{\"retentionInDays\":1152356837,\"totalRetentionInDays\":230467636,\"archiveRetentionInDays\":1993035285,\"searchResults\":{\"query\":\"fmviklby\",\"description\":\"khbejdznxc\",\"limit\":2045200930,\"startSearchTime\":\"2021-03-13T18:49:59Z\",\"endSearchTime\":\"2020-12-24T21:57:15Z\",\"sourceTable\":\"volvtn\",\"azureAsyncOperationId\":\"qfzgemjdftul\"},\"restoredLogs\":{\"startRestoreTime\":\"2021-11-05T22:04:39Z\",\"endRestoreTime\":\"2021-04-12T02:20:30Z\",\"sourceTable\":\"amtmcz\",\"azureAsyncOperationId\":\"m\"},\"resultStatistics\":{\"progress\":45.98984,\"ingestedRecords\":1157846345,\"scannedGb\":57.057808},\"plan\":\"Analytics\",\"lastPlanModifiedDate\":\"ssxmojms\",\"schema\":{\"name\":\"jpr\",\"displayName\":\"wcfzqljyxgt\",\"description\":\"heyd\",\"columns\":[{},{},{},{}],\"standardColumns\":[{},{},{}],\"categories\":[\"xmaehvbbxu\"],\"labels\":[\"ltfnhtbaxkgx\",\"wrck\",\"yklyhpluodpvruud\"],\"source\":\"microsoft\",\"tableType\":\"Microsoft\",\"tableSubType\":\"Classic\",\"solutions\":[\"tgk\",\"stvdxeclz\"]},\"provisioningState\":\"Succeeded\",\"retentionInDaysAsDefault\":false,\"totalRetentionInDaysAsDefault\":true},\"systemData\":{\"createdBy\":\"h\",\"createdByType\":\"ManagedIdentity\",\"createdAt\":\"2021-07-07T17:09:43Z\",\"lastModifiedBy\":\"dlwwqfbumlkxt\",\"lastModifiedByType\":\"Key\",\"lastModifiedAt\":\"2021-08-10T18:01:13Z\"},\"id\":\"mlmbtxhwgfwsrta\",\"name\":\"coezbrhubskh\",\"type\":\"dyg\"},{\"properties\":{\"retentionInDays\":328293320,\"totalRetentionInDays\":1039197688,\"archiveRetentionInDays\":870237510,\"searchResults\":{\"query\":\"vleo\",\"description\":\"ml\",\"limit\":16475569,\"startSearchTime\":\"2021-06-03T05:33:27Z\",\"endSearchTime\":\"2021-06-07T14:08:39Z\",\"sourceTable\":\"vyvnqqyb\",\"azureAsyncOperationId\":\"yeua\"},\"restoredLogs\":{\"startRestoreTime\":\"2021-05-25T11:37:10Z\",\"endRestoreTime\":\"2021-04-19T19:49:12Z\",\"sourceTable\":\"gzslesjcbhernnti\",\"azureAsyncOperationId\":\"djc\"},\"resultStatistics\":{\"progress\":67.018715,\"ingestedRecords\":584080581,\"scannedGb\":39.08969},\"plan\":\"Analytics\",\"lastPlanModifiedDate\":\"gohbuffkmrq\",\"schema\":{\"name\":\"vhmxtdrjfu\",\"displayName\":\"coebjvewzcj\",\"description\":\"m\",\"columns\":[{},{},{},{}],\"standardColumns\":[{},{},{},{}],\"categories\":[\"adraufactkahzo\",\"ajjziuxxpshne\",\"kulfg\",\"lqubkwdlen\"],\"labels\":[\"utujba\",\"pjuohminyfl\"],\"source\":\"microsoft\",\"tableType\":\"CustomLog\",\"tableSubType\":\"DataCollectionRuleBased\",\"solutions\":[\"pklvxw\",\"ygdxpgpqchis\"]},\"provisioningState\":\"InProgress\",\"retentionInDaysAsDefault\":false,\"totalRetentionInDaysAsDefault\":true},\"systemData\":{\"createdBy\":\"xgibbda\",\"createdByType\":\"User\",\"createdAt\":\"2021-04-14T22:25:17Z\",\"lastModifiedBy\":\"zauorsuk\",\"lastModifiedByType\":\"Application\",\"lastModifiedAt\":\"2021-09-20T10:27:45Z\"},\"id\":\"plhlvnuuepzlrp\",\"name\":\"wzsoldweyuqdunv\",\"type\":\"nnrwrbiork\"},{\"properties\":{\"retentionInDays\":476504183,\"totalRetentionInDays\":681185824,\"archiveRetentionInDays\":1038080670,\"searchResults\":{\"query\":\"nhxmsi\",\"description\":\"omi\",\"limit\":1723847557,\"startSearchTime\":\"2021-10-29T08:24:04Z\",\"endSearchTime\":\"2021-01-25T20:05:05Z\",\"sourceTable\":\"iqndieuzaofj\",\"azureAsyncOperationId\":\"vcyy\"},\"restoredLogs\":{\"startRestoreTime\":\"2021-05-03T11:29:59Z\",\"endRestoreTime\":\"2021-05-09T21:38:39Z\",\"sourceTable\":\"cubiipuipw\",\"azureAsyncOperationId\":\"onmacjekniz\"},\"resultStatistics\":{\"progress\":38.670307,\"ingestedRecords\":1591499316,\"scannedGb\":21.702797},\"plan\":\"Analytics\",\"lastPlanModifiedDate\":\"gmblrri\",\"schema\":{\"name\":\"wdxsm\",\"displayName\":\"cwrwfs\",\"description\":\"fnynszqujizdvoqy\",\"columns\":[{},{},{},{}],\"standardColumns\":[{}],\"categories\":[\"blgyavutpthj\",\"xoi\",\"msksbp\"],\"labels\":[\"qolj\"],\"source\":\"microsoft\",\"tableType\":\"SearchResults\",\"tableSubType\":\"Classic\",\"solutions\":[\"ffgcvizqz\",\"wlvwlyoupf\",\"fbkjubdyhgkfmi\"]},\"provisioningState\":\"Updating\",\"retentionInDaysAsDefault\":false,\"totalRetentionInDaysAsDefault\":false},\"systemData\":{\"createdBy\":\"sttktlahbqa\",\"createdByType\":\"Key\",\"createdAt\":\"2021-10-13T12:53:05Z\",\"lastModifiedBy\":\"ukxit\",\"lastModifiedByType\":\"ManagedIdentity\",\"lastModifiedAt\":\"2021-06-28T23:57:13Z\"},\"id\":\"qqqxhrnxrx\",\"name\":\"pjui\",\"type\":\"av\"}]}") + "{\"value\":[{\"properties\":{\"retentionInDays\":288092317,\"totalRetentionInDays\":1703781779,\"archiveRetentionInDays\":995419481,\"searchResults\":{\"query\":\"bwwift\",\"description\":\"qkvpuvksgplsakn\",\"limit\":792282663,\"startSearchTime\":\"2021-08-07T07:41:08Z\",\"endSearchTime\":\"2021-04-07T05:17:19Z\",\"sourceTable\":\"ph\",\"azureAsyncOperationId\":\"pxodlqiyntorzih\"},\"restoredLogs\":{\"startRestoreTime\":\"2021-07-03T10:26:48Z\",\"endRestoreTime\":\"2021-08-13T08:44:45Z\",\"sourceTable\":\"srmslyzr\",\"azureAsyncOperationId\":\"bchckqqzqio\"},\"resultStatistics\":{\"progress\":77.20928,\"ingestedRecords\":1721034864,\"scannedGb\":44.14792},\"plan\":\"Basic\",\"lastPlanModifiedDate\":\"edyatrwyhqmibzyh\",\"schema\":{\"name\":\"smypyynpc\",\"displayName\":\"umnzgmwznmabik\",\"description\":\"orgjhxbldt\",\"columns\":[{},{}],\"standardColumns\":[{},{},{},{}],\"categories\":[\"m\",\"ncvokotllxdyhg\"],\"labels\":[\"cogjltdtbn\",\"hadoocrk\"],\"source\":\"customer\",\"tableType\":\"RestoredLogs\",\"tableSubType\":\"DataCollectionRuleBased\",\"solutions\":[\"mqg\",\"qqu\",\"zikywgg\",\"kallatmel\"]},\"provisioningState\":\"InProgress\",\"retentionInDaysAsDefault\":true,\"totalRetentionInDaysAsDefault\":true},\"id\":\"zkzivgvvcnay\",\"name\":\"hyrnxxmu\",\"type\":\"edndr\"},{\"properties\":{\"retentionInDays\":817024636,\"totalRetentionInDays\":467483193,\"archiveRetentionInDays\":768624981,\"searchResults\":{\"query\":\"healmfmtda\",\"description\":\"gdv\",\"limit\":1689077175,\"startSearchTime\":\"2021-06-05T03:50:49Z\",\"endSearchTime\":\"2021-10-30T10:52:42Z\",\"sourceTable\":\"wxrt\",\"azureAsyncOperationId\":\"dxepxgyq\"},\"restoredLogs\":{\"startRestoreTime\":\"2021-11-27T06:03:21Z\",\"endRestoreTime\":\"2020-12-28T18:07:39Z\",\"sourceTable\":\"pkukghi\",\"azureAsyncOperationId\":\"blxgwimf\"},\"resultStatistics\":{\"progress\":41.899403,\"ingestedRecords\":510557599,\"scannedGb\":39.004253},\"plan\":\"Auxiliary\",\"lastPlanModifiedDate\":\"kfoqreyfkzikfj\",\"schema\":{\"name\":\"eaivxwczel\",\"displayName\":\"irels\",\"description\":\"aenwabf\",\"columns\":[{}],\"standardColumns\":[{},{},{},{}],\"categories\":[\"bjhwuaan\",\"zjosp\",\"youlp\",\"rvxaglrvimjwosy\"],\"labels\":[\"tcs\"],\"source\":\"customer\",\"tableType\":\"Microsoft\",\"tableSubType\":\"Classic\",\"solutions\":[\"ekkezzikhlyfjh\",\"gqggebdunygae\"]},\"provisioningState\":\"Updating\",\"retentionInDaysAsDefault\":true,\"totalRetentionInDaysAsDefault\":false},\"id\":\"pxllrx\",\"name\":\"yjmoadsu\",\"type\":\"arm\"}]}") .toObject(TablesListResult.class); - Assertions.assertEquals(1152356837, model.value().get(0).retentionInDays()); - Assertions.assertEquals(230467636, model.value().get(0).totalRetentionInDays()); - Assertions.assertEquals("fmviklby", model.value().get(0).searchResults().query()); - Assertions.assertEquals("khbejdznxc", model.value().get(0).searchResults().description()); - Assertions.assertEquals(2045200930, model.value().get(0).searchResults().limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-03-13T18:49:59Z"), + Assertions.assertEquals(288092317, model.value().get(0).retentionInDays()); + Assertions.assertEquals(1703781779, model.value().get(0).totalRetentionInDays()); + Assertions.assertEquals("bwwift", model.value().get(0).searchResults().query()); + Assertions.assertEquals("qkvpuvksgplsakn", model.value().get(0).searchResults().description()); + Assertions.assertEquals(792282663, model.value().get(0).searchResults().limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-08-07T07:41:08Z"), model.value().get(0).searchResults().startSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2020-12-24T21:57:15Z"), + Assertions.assertEquals(OffsetDateTime.parse("2021-04-07T05:17:19Z"), model.value().get(0).searchResults().endSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-11-05T22:04:39Z"), + Assertions.assertEquals(OffsetDateTime.parse("2021-07-03T10:26:48Z"), model.value().get(0).restoredLogs().startRestoreTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-04-12T02:20:30Z"), + Assertions.assertEquals(OffsetDateTime.parse("2021-08-13T08:44:45Z"), model.value().get(0).restoredLogs().endRestoreTime()); - Assertions.assertEquals("amtmcz", model.value().get(0).restoredLogs().sourceTable()); - Assertions.assertEquals(TablePlanEnum.ANALYTICS, model.value().get(0).plan()); - Assertions.assertEquals("jpr", model.value().get(0).schema().name()); - Assertions.assertEquals("wcfzqljyxgt", model.value().get(0).schema().displayName()); - Assertions.assertEquals("heyd", model.value().get(0).schema().description()); + Assertions.assertEquals("srmslyzr", model.value().get(0).restoredLogs().sourceTable()); + Assertions.assertEquals(TablePlanEnum.BASIC, model.value().get(0).plan()); + Assertions.assertEquals("smypyynpc", model.value().get(0).schema().name()); + Assertions.assertEquals("umnzgmwznmabik", model.value().get(0).schema().displayName()); + Assertions.assertEquals("orgjhxbldt", model.value().get(0).schema().description()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { TablesListResult model = new TablesListResult().withValue(Arrays.asList( - new TableInner().withRetentionInDays(1152356837) - .withTotalRetentionInDays(230467636) - .withSearchResults(new SearchResults().withQuery("fmviklby") - .withDescription("khbejdznxc") - .withLimit(2045200930) - .withStartSearchTime(OffsetDateTime.parse("2021-03-13T18:49:59Z")) - .withEndSearchTime(OffsetDateTime.parse("2020-12-24T21:57:15Z"))) - .withRestoredLogs(new RestoredLogs().withStartRestoreTime(OffsetDateTime.parse("2021-11-05T22:04:39Z")) - .withEndRestoreTime(OffsetDateTime.parse("2021-04-12T02:20:30Z")) - .withSourceTable("amtmcz")) - .withPlan(TablePlanEnum.ANALYTICS) - .withSchema(new Schema().withName("jpr") - .withDisplayName("wcfzqljyxgt") - .withDescription("heyd") - .withColumns(Arrays.asList(new Column(), new Column(), new Column(), new Column()))), - new TableInner().withRetentionInDays(328293320) - .withTotalRetentionInDays(1039197688) - .withSearchResults(new SearchResults().withQuery("vleo") - .withDescription("ml") - .withLimit(16475569) - .withStartSearchTime(OffsetDateTime.parse("2021-06-03T05:33:27Z")) - .withEndSearchTime(OffsetDateTime.parse("2021-06-07T14:08:39Z"))) - .withRestoredLogs(new RestoredLogs().withStartRestoreTime(OffsetDateTime.parse("2021-05-25T11:37:10Z")) - .withEndRestoreTime(OffsetDateTime.parse("2021-04-19T19:49:12Z")) - .withSourceTable("gzslesjcbhernnti")) - .withPlan(TablePlanEnum.ANALYTICS) - .withSchema(new Schema().withName("vhmxtdrjfu") - .withDisplayName("coebjvewzcj") - .withDescription("m") - .withColumns(Arrays.asList(new Column(), new Column(), new Column(), new Column()))), - new TableInner().withRetentionInDays(476504183) - .withTotalRetentionInDays(681185824) - .withSearchResults(new SearchResults().withQuery("nhxmsi") - .withDescription("omi") - .withLimit(1723847557) - .withStartSearchTime(OffsetDateTime.parse("2021-10-29T08:24:04Z")) - .withEndSearchTime(OffsetDateTime.parse("2021-01-25T20:05:05Z"))) - .withRestoredLogs(new RestoredLogs().withStartRestoreTime(OffsetDateTime.parse("2021-05-03T11:29:59Z")) - .withEndRestoreTime(OffsetDateTime.parse("2021-05-09T21:38:39Z")) - .withSourceTable("cubiipuipw")) - .withPlan(TablePlanEnum.ANALYTICS) - .withSchema(new Schema().withName("wdxsm") - .withDisplayName("cwrwfs") - .withDescription("fnynszqujizdvoqy") - .withColumns(Arrays.asList(new Column(), new Column(), new Column(), new Column()))))); + new TableInner().withRetentionInDays(288092317) + .withTotalRetentionInDays(1703781779) + .withSearchResults(new SearchResults().withQuery("bwwift") + .withDescription("qkvpuvksgplsakn") + .withLimit(792282663) + .withStartSearchTime(OffsetDateTime.parse("2021-08-07T07:41:08Z")) + .withEndSearchTime(OffsetDateTime.parse("2021-04-07T05:17:19Z"))) + .withRestoredLogs(new RestoredLogs().withStartRestoreTime(OffsetDateTime.parse("2021-07-03T10:26:48Z")) + .withEndRestoreTime(OffsetDateTime.parse("2021-08-13T08:44:45Z")) + .withSourceTable("srmslyzr")) + .withPlan(TablePlanEnum.BASIC) + .withSchema(new Schema().withName("smypyynpc") + .withDisplayName("umnzgmwznmabik") + .withDescription("orgjhxbldt") + .withColumns(Arrays.asList(new Column(), new Column()))), + new TableInner().withRetentionInDays(817024636) + .withTotalRetentionInDays(467483193) + .withSearchResults(new SearchResults().withQuery("healmfmtda") + .withDescription("gdv") + .withLimit(1689077175) + .withStartSearchTime(OffsetDateTime.parse("2021-06-05T03:50:49Z")) + .withEndSearchTime(OffsetDateTime.parse("2021-10-30T10:52:42Z"))) + .withRestoredLogs(new RestoredLogs().withStartRestoreTime(OffsetDateTime.parse("2021-11-27T06:03:21Z")) + .withEndRestoreTime(OffsetDateTime.parse("2020-12-28T18:07:39Z")) + .withSourceTable("pkukghi")) + .withPlan(TablePlanEnum.AUXILIARY) + .withSchema(new Schema().withName("eaivxwczel") + .withDisplayName("irels") + .withDescription("aenwabf") + .withColumns(Arrays.asList(new Column()))))); model = BinaryData.fromObject(model).toObject(TablesListResult.class); - Assertions.assertEquals(1152356837, model.value().get(0).retentionInDays()); - Assertions.assertEquals(230467636, model.value().get(0).totalRetentionInDays()); - Assertions.assertEquals("fmviklby", model.value().get(0).searchResults().query()); - Assertions.assertEquals("khbejdznxc", model.value().get(0).searchResults().description()); - Assertions.assertEquals(2045200930, model.value().get(0).searchResults().limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-03-13T18:49:59Z"), + Assertions.assertEquals(288092317, model.value().get(0).retentionInDays()); + Assertions.assertEquals(1703781779, model.value().get(0).totalRetentionInDays()); + Assertions.assertEquals("bwwift", model.value().get(0).searchResults().query()); + Assertions.assertEquals("qkvpuvksgplsakn", model.value().get(0).searchResults().description()); + Assertions.assertEquals(792282663, model.value().get(0).searchResults().limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-08-07T07:41:08Z"), model.value().get(0).searchResults().startSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2020-12-24T21:57:15Z"), + Assertions.assertEquals(OffsetDateTime.parse("2021-04-07T05:17:19Z"), model.value().get(0).searchResults().endSearchTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-11-05T22:04:39Z"), + Assertions.assertEquals(OffsetDateTime.parse("2021-07-03T10:26:48Z"), model.value().get(0).restoredLogs().startRestoreTime()); - Assertions.assertEquals(OffsetDateTime.parse("2021-04-12T02:20:30Z"), + Assertions.assertEquals(OffsetDateTime.parse("2021-08-13T08:44:45Z"), model.value().get(0).restoredLogs().endRestoreTime()); - Assertions.assertEquals("amtmcz", model.value().get(0).restoredLogs().sourceTable()); - Assertions.assertEquals(TablePlanEnum.ANALYTICS, model.value().get(0).plan()); - Assertions.assertEquals("jpr", model.value().get(0).schema().name()); - Assertions.assertEquals("wcfzqljyxgt", model.value().get(0).schema().displayName()); - Assertions.assertEquals("heyd", model.value().get(0).schema().description()); + Assertions.assertEquals("srmslyzr", model.value().get(0).restoredLogs().sourceTable()); + Assertions.assertEquals(TablePlanEnum.BASIC, model.value().get(0).plan()); + Assertions.assertEquals("smypyynpc", model.value().get(0).schema().name()); + Assertions.assertEquals("umnzgmwznmabik", model.value().get(0).schema().displayName()); + Assertions.assertEquals("orgjhxbldt", model.value().get(0).schema().description()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesMigrateWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesMigrateWithResponseMockTests.java index 3872b158eb39..684c8b69cd1c 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesMigrateWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TablesMigrateWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import java.nio.charset.StandardCharsets; @@ -25,9 +25,9 @@ public void testMigrateWithResponse() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - manager.tables().migrateWithResponse("sl", "bnsmjkwynqxaek", "sykvwjtqpke", com.azure.core.util.Context.NONE); + manager.tables().migrateWithResponse("g", "uuj", "ouhdawsigrb", com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TagTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TagTests.java index af7fd1879930..273d2dc25289 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TagTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TagTests.java @@ -11,17 +11,16 @@ public final class TagTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - Tag model - = BinaryData.fromString("{\"name\":\"fiwjmygtdssls\",\"value\":\"tmweriofzpyq\"}").toObject(Tag.class); - Assertions.assertEquals("fiwjmygtdssls", model.name()); - Assertions.assertEquals("tmweriofzpyq", model.value()); + Tag model = BinaryData.fromString("{\"name\":\"qeqxo\",\"value\":\"z\"}").toObject(Tag.class); + Assertions.assertEquals("qeqxo", model.name()); + Assertions.assertEquals("z", model.value()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - Tag model = new Tag().withName("fiwjmygtdssls").withValue("tmweriofzpyq"); + Tag model = new Tag().withName("qeqxo").withValue("z"); model = BinaryData.fromObject(model).toObject(Tag.class); - Assertions.assertEquals("fiwjmygtdssls", model.name()); - Assertions.assertEquals("tmweriofzpyq", model.value()); + Assertions.assertEquals("qeqxo", model.name()); + Assertions.assertEquals("z", model.value()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TagsResourceTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TagsResourceTests.java index cb53b4fa5d85..b1800956571d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TagsResourceTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/TagsResourceTests.java @@ -13,18 +13,19 @@ public final class TagsResourceTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - TagsResource model = BinaryData.fromString( - "{\"tags\":{\"jakhmsbzjh\":\"fdfdosygexpa\",\"hqtrgqjbpf\":\"rzevdphlxaol\",\"tfell\":\"fsinzgvfcjrwzoxx\",\"lxofpdvhpfxxypin\":\"wfzitonpeqfpjk\"}}") + TagsResource model = BinaryData + .fromString( + "{\"tags\":{\"fhzovawjvzunluth\":\"vu\",\"rnxipei\":\"n\",\"e\":\"pjzu\",\"kzbbtd\":\"xdult\"}}") .toObject(TagsResource.class); - Assertions.assertEquals("fdfdosygexpa", model.tags().get("jakhmsbzjh")); + Assertions.assertEquals("vu", model.tags().get("fhzovawjvzunluth")); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - TagsResource model = new TagsResource().withTags(mapOf("jakhmsbzjh", "fdfdosygexpa", "hqtrgqjbpf", - "rzevdphlxaol", "tfell", "fsinzgvfcjrwzoxx", "lxofpdvhpfxxypin", "wfzitonpeqfpjk")); + TagsResource model = new TagsResource() + .withTags(mapOf("fhzovawjvzunluth", "vu", "rnxipei", "n", "e", "pjzu", "kzbbtd", "xdult")); model = BinaryData.fromObject(model).toObject(TagsResource.class); - Assertions.assertEquals("fdfdosygexpa", model.tags().get("jakhmsbzjh")); + Assertions.assertEquals("vu", model.tags().get("fhzovawjvzunluth")); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UsageMetricInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UsageMetricInnerTests.java index fa04531153b7..b9f09fd2a085 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UsageMetricInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UsageMetricInnerTests.java @@ -14,33 +14,33 @@ public final class UsageMetricInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { UsageMetricInner model = BinaryData.fromString( - "{\"name\":{\"value\":\"yjsflhhcaalnji\",\"localizedValue\":\"sxyawjoyaqcs\"},\"unit\":\"jpkiidzyexznelix\",\"currentValue\":16.42737179588487,\"limit\":65.0090874045316,\"nextResetTime\":\"2021-01-11T05:27:37Z\",\"quotaPeriod\":\"nxknalaulp\"}") + "{\"name\":{\"value\":\"hmtnvy\",\"localizedValue\":\"atkzwpcnpw\"},\"unit\":\"jaesgvvsccya\",\"currentValue\":7.14281993849214,\"limit\":21.496629598428008,\"nextResetTime\":\"2021-07-19T23:39:28Z\",\"quotaPeriod\":\"lvdnkfx\"}") .toObject(UsageMetricInner.class); - Assertions.assertEquals("yjsflhhcaalnji", model.name().value()); - Assertions.assertEquals("sxyawjoyaqcs", model.name().localizedValue()); - Assertions.assertEquals("jpkiidzyexznelix", model.unit()); - Assertions.assertEquals(16.42737179588487D, model.currentValue()); - Assertions.assertEquals(65.0090874045316D, model.limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-01-11T05:27:37Z"), model.nextResetTime()); - Assertions.assertEquals("nxknalaulp", model.quotaPeriod()); + Assertions.assertEquals("hmtnvy", model.name().value()); + Assertions.assertEquals("atkzwpcnpw", model.name().localizedValue()); + Assertions.assertEquals("jaesgvvsccya", model.unit()); + Assertions.assertEquals(7.14281993849214D, model.currentValue()); + Assertions.assertEquals(21.496629598428008D, model.limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-07-19T23:39:28Z"), model.nextResetTime()); + Assertions.assertEquals("lvdnkfx", model.quotaPeriod()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - UsageMetricInner model = new UsageMetricInner() - .withName(new MetricName().withValue("yjsflhhcaalnji").withLocalizedValue("sxyawjoyaqcs")) - .withUnit("jpkiidzyexznelix") - .withCurrentValue(16.42737179588487D) - .withLimit(65.0090874045316D) - .withNextResetTime(OffsetDateTime.parse("2021-01-11T05:27:37Z")) - .withQuotaPeriod("nxknalaulp"); + UsageMetricInner model + = new UsageMetricInner().withName(new MetricName().withValue("hmtnvy").withLocalizedValue("atkzwpcnpw")) + .withUnit("jaesgvvsccya") + .withCurrentValue(7.14281993849214D) + .withLimit(21.496629598428008D) + .withNextResetTime(OffsetDateTime.parse("2021-07-19T23:39:28Z")) + .withQuotaPeriod("lvdnkfx"); model = BinaryData.fromObject(model).toObject(UsageMetricInner.class); - Assertions.assertEquals("yjsflhhcaalnji", model.name().value()); - Assertions.assertEquals("sxyawjoyaqcs", model.name().localizedValue()); - Assertions.assertEquals("jpkiidzyexznelix", model.unit()); - Assertions.assertEquals(16.42737179588487D, model.currentValue()); - Assertions.assertEquals(65.0090874045316D, model.limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-01-11T05:27:37Z"), model.nextResetTime()); - Assertions.assertEquals("nxknalaulp", model.quotaPeriod()); + Assertions.assertEquals("hmtnvy", model.name().value()); + Assertions.assertEquals("atkzwpcnpw", model.name().localizedValue()); + Assertions.assertEquals("jaesgvvsccya", model.unit()); + Assertions.assertEquals(7.14281993849214D, model.currentValue()); + Assertions.assertEquals(21.496629598428008D, model.limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-07-19T23:39:28Z"), model.nextResetTime()); + Assertions.assertEquals("lvdnkfx", model.quotaPeriod()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UsagesListMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UsagesListMockTests.java index b9d7b5598b38..22c9edcecbae 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UsagesListMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UsagesListMockTests.java @@ -7,8 +7,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.UsageMetric; @@ -22,25 +22,25 @@ public final class UsagesListMockTests { @Test public void testList() throws Exception { String responseStr - = "{\"value\":[{\"name\":{\"value\":\"gtuhxuicbu\",\"localizedValue\":\"mr\"},\"unit\":\"njlx\",\"currentValue\":33.720955848019294,\"limit\":33.504071266925294,\"nextResetTime\":\"2021-07-24T18:32:54Z\",\"quotaPeriod\":\"baqehgpdoh\"}]}"; + = "{\"value\":[{\"name\":{\"value\":\"yshtuwgmev\",\"localizedValue\":\"fpwzyifrkgwltx\"},\"unit\":\"ipxgzdy\",\"currentValue\":99.77270946016633,\"limit\":29.475698926269988,\"nextResetTime\":\"2021-07-01T11:25:11Z\",\"quotaPeriod\":\"avkjog\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response - = manager.usages().list("vuwkasiziesfuugh", "uqfecj", com.azure.core.util.Context.NONE); + = manager.usages().list("hmx", "fdsajred", com.azure.core.util.Context.NONE); - Assertions.assertEquals("gtuhxuicbu", response.iterator().next().name().value()); - Assertions.assertEquals("mr", response.iterator().next().name().localizedValue()); - Assertions.assertEquals("njlx", response.iterator().next().unit()); - Assertions.assertEquals(33.720955848019294D, response.iterator().next().currentValue()); - Assertions.assertEquals(33.504071266925294D, response.iterator().next().limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-07-24T18:32:54Z"), + Assertions.assertEquals("yshtuwgmev", response.iterator().next().name().value()); + Assertions.assertEquals("fpwzyifrkgwltx", response.iterator().next().name().localizedValue()); + Assertions.assertEquals("ipxgzdy", response.iterator().next().unit()); + Assertions.assertEquals(99.77270946016633D, response.iterator().next().currentValue()); + Assertions.assertEquals(29.475698926269988D, response.iterator().next().limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-07-01T11:25:11Z"), response.iterator().next().nextResetTime()); - Assertions.assertEquals("baqehgpdoh", response.iterator().next().quotaPeriod()); + Assertions.assertEquals("avkjog", response.iterator().next().quotaPeriod()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UserAssignedIdentityTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UserAssignedIdentityTests.java index 7fa169399014..749bf07a5750 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UserAssignedIdentityTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UserAssignedIdentityTests.java @@ -11,7 +11,7 @@ public final class UserAssignedIdentityTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { UserAssignedIdentity model = BinaryData.fromString( - "{\"principalId\":\"9a09bc28-de09-4353-9fc8-db8f188d440e\",\"clientId\":\"2a023bcc-682d-4e62-8c52-90b378bd07e0\"}") + "{\"principalId\":\"b09c35db-be66-4e95-8498-f542f93b2515\",\"clientId\":\"e882c946-e84d-4658-abe8-71db0e3cfdfc\"}") .toObject(UserAssignedIdentity.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UserIdentityPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UserIdentityPropertiesTests.java index 848bc06680c5..159cb494681f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UserIdentityPropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UserIdentityPropertiesTests.java @@ -10,8 +10,9 @@ public final class UserIdentityPropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - UserIdentityProperties model = BinaryData.fromString("{\"principalId\":\"ithtywu\",\"clientId\":\"cbihwqk\"}") - .toObject(UserIdentityProperties.class); + UserIdentityProperties model + = BinaryData.fromString("{\"principalId\":\"ozauorsukokwb\",\"clientId\":\"lhlv\"}") + .toObject(UserIdentityProperties.class); } @org.junit.jupiter.api.Test diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceCappingTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceCappingTests.java index f30f22bd72ac..1c6d3ad017b3 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceCappingTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceCappingTests.java @@ -12,15 +12,15 @@ public final class WorkspaceCappingTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { WorkspaceCapping model = BinaryData.fromString( - "{\"dailyQuotaGb\":30.97995124606966,\"quotaNextResetTime\":\"nqttezl\",\"dataIngestionStatus\":\"OverQuota\"}") + "{\"dailyQuotaGb\":87.67426402803734,\"quotaNextResetTime\":\"qtqzfavyv\",\"dataIngestionStatus\":\"RespectQuota\"}") .toObject(WorkspaceCapping.class); - Assertions.assertEquals(30.97995124606966D, model.dailyQuotaGb()); + Assertions.assertEquals(87.67426402803734D, model.dailyQuotaGb()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - WorkspaceCapping model = new WorkspaceCapping().withDailyQuotaGb(30.97995124606966D); + WorkspaceCapping model = new WorkspaceCapping().withDailyQuotaGb(87.67426402803734D); model = BinaryData.fromObject(model).toObject(WorkspaceCapping.class); - Assertions.assertEquals(30.97995124606966D, model.dailyQuotaGb()); + Assertions.assertEquals(87.67426402803734D, model.dailyQuotaGb()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceFailoverPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceFailoverPropertiesTests.java new file mode 100644 index 000000000000..156ca6ac7ba2 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceFailoverPropertiesTests.java @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.WorkspaceFailoverProperties; + +public final class WorkspaceFailoverPropertiesTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + WorkspaceFailoverProperties model + = BinaryData.fromString("{\"state\":\"Deactivating\",\"lastModifiedDate\":\"2021-10-19T23:18:49Z\"}") + .toObject(WorkspaceFailoverProperties.class); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + WorkspaceFailoverProperties model = new WorkspaceFailoverProperties(); + model = BinaryData.fromObject(model).toObject(WorkspaceFailoverProperties.class); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceFeaturesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceFeaturesTests.java index a9e3443e9578..2f695f282279 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceFeaturesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceFeaturesTests.java @@ -5,6 +5,8 @@ package com.azure.resourcemanager.loganalytics.generated; import com.azure.core.util.BinaryData; +import com.azure.core.util.serializer.JacksonAdapter; +import com.azure.core.util.serializer.SerializerEncoding; import com.azure.resourcemanager.loganalytics.models.WorkspaceFeatures; import java.util.HashMap; import java.util.Map; @@ -14,29 +16,33 @@ public final class WorkspaceFeaturesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { WorkspaceFeatures model = BinaryData.fromString( - "{\"enableDataExport\":false,\"immediatePurgeDataOn30Days\":false,\"enableLogAccessUsingOnlyResourcePermissions\":true,\"clusterResourceId\":\"wau\",\"disableLocalAuth\":false,\"\":{\"pevzhfst\":\"datagupkvipmdscwxq\",\"pelmcuvhixbjxyf\":\"datatxhojujb\"}}") + "{\"enableDataExport\":true,\"immediatePurgeDataOn30Days\":true,\"enableLogAccessUsingOnlyResourcePermissions\":true,\"clusterResourceId\":\"jcbhern\",\"disableLocalAuth\":false,\"unifiedSentinelBillingOnly\":false,\"associations\":[\"cv\"],\"ehwagoh\":\"datawr\",\"xtdr\":\"datauffkmrqemvvh\",\"znmwcp\":\"datafutacoebjvewzc\"}") .toObject(WorkspaceFeatures.class); - Assertions.assertEquals(false, model.enableDataExport()); - Assertions.assertEquals(false, model.immediatePurgeDataOn30Days()); - Assertions.assertEquals(true, model.enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("wau", model.clusterResourceId()); - Assertions.assertEquals(false, model.disableLocalAuth()); + Assertions.assertTrue(model.enableDataExport()); + Assertions.assertTrue(model.immediatePurgeDataOn30Days()); + Assertions.assertTrue(model.enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("jcbhern", model.clusterResourceId()); + Assertions.assertFalse(model.disableLocalAuth()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - WorkspaceFeatures model = new WorkspaceFeatures().withEnableDataExport(false) - .withImmediatePurgeDataOn30Days(false) + WorkspaceFeatures model = new WorkspaceFeatures().withEnableDataExport(true) + .withImmediatePurgeDataOn30Days(true) .withEnableLogAccessUsingOnlyResourcePermissions(true) - .withClusterResourceId("wau") + .withClusterResourceId("jcbhern") .withDisableLocalAuth(false) - .withAdditionalProperties(mapOf()); + .withAdditionalProperties(mapOf("associations", + JacksonAdapter.createDefaultSerializerAdapter() + .deserialize("[\"cv\"]", Object.class, SerializerEncoding.JSON), + "xtdr", "datauffkmrqemvvh", "ehwagoh", "datawr", "znmwcp", "datafutacoebjvewzc", + "unifiedSentinelBillingOnly", false)); model = BinaryData.fromObject(model).toObject(WorkspaceFeatures.class); - Assertions.assertEquals(false, model.enableDataExport()); - Assertions.assertEquals(false, model.immediatePurgeDataOn30Days()); - Assertions.assertEquals(true, model.enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("wau", model.clusterResourceId()); - Assertions.assertEquals(false, model.disableLocalAuth()); + Assertions.assertTrue(model.enableDataExport()); + Assertions.assertTrue(model.immediatePurgeDataOn30Days()); + Assertions.assertTrue(model.enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("jcbhern", model.clusterResourceId()); + Assertions.assertFalse(model.disableLocalAuth()); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceInnerTests.java index 78bf785bc5b7..12632a0568a3 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceInnerTests.java @@ -5,14 +5,17 @@ package com.azure.resourcemanager.loganalytics.generated; import com.azure.core.util.BinaryData; +import com.azure.core.util.serializer.JacksonAdapter; +import com.azure.core.util.serializer.SerializerEncoding; import com.azure.resourcemanager.loganalytics.fluent.models.WorkspaceInner; -import com.azure.resourcemanager.loganalytics.models.CapacityReservationLevel; import com.azure.resourcemanager.loganalytics.models.Identity; import com.azure.resourcemanager.loganalytics.models.IdentityType; import com.azure.resourcemanager.loganalytics.models.PublicNetworkAccessType; import com.azure.resourcemanager.loganalytics.models.UserIdentityProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceCapping; +import com.azure.resourcemanager.loganalytics.models.WorkspaceFailoverProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceFeatures; +import com.azure.resourcemanager.loganalytics.models.WorkspaceReplicationProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceSku; import com.azure.resourcemanager.loganalytics.models.WorkspaceSkuNameEnum; import java.util.HashMap; @@ -23,67 +26,75 @@ public final class WorkspaceInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { WorkspaceInner model = BinaryData.fromString( - "{\"properties\":{\"provisioningState\":\"Canceled\",\"customerId\":\"jylwbtlhflsj\",\"sku\":{\"name\":\"PerNode\",\"capacityReservationLevel\":500,\"lastSkuUpdate\":\"jvfbgofelja\"},\"retentionInDays\":728576378,\"workspaceCapping\":{\"dailyQuotaGb\":44.315075801765715,\"quotaNextResetTime\":\"vriiio\",\"dataIngestionStatus\":\"ApproachingQuota\"},\"createdDate\":\"ghfkvtvsexs\",\"modifiedDate\":\"ueluqhhahhxvrhmz\",\"publicNetworkAccessForIngestion\":\"Disabled\",\"publicNetworkAccessForQuery\":\"Enabled\",\"forceCmkForQuery\":true,\"privateLinkScopedResources\":[{\"resourceId\":\"ghftqsxhqxujxuk\",\"scopeId\":\"xdigrjg\"},{\"resourceId\":\"fzdm\",\"scopeId\":\"qtfihwhbotzinga\"},{\"resourceId\":\"pph\",\"scopeId\":\"zqzudph\"}],\"features\":{\"enableDataExport\":true,\"immediatePurgeDataOn30Days\":false,\"enableLogAccessUsingOnlyResourcePermissions\":true,\"clusterResourceId\":\"nwcvtbvkayhmtnv\",\"disableLocalAuth\":true,\"\":{\"cjaesgvvs\":\"datakzwpcnpw\",\"wygzlvdnkfxusem\":\"datacyajguqf\",\"pfcqdp\":\"datawzrmuh\"}},\"defaultDataCollectionRuleResourceId\":\"xqv\"},\"identity\":{\"principalId\":\"uoymgccelvezry\",\"tenantId\":\"lmfeokerq\",\"type\":\"managedIdentity\",\"userAssignedIdentities\":{\"pbqpcrfkbwccsn\":{\"principalId\":\"ob\",\"clientId\":\"gxedkow\"},\"y\":{\"principalId\":\"cdwxlpq\",\"clientId\":\"ftnkhtj\"},\"ywkbirryuzhlhkjo\":{\"principalId\":\"gwfqatmt\",\"clientId\":\"tmdvypgikdgs\"}}},\"systemData\":{\"createdBy\":\"qqaatjinrvgou\",\"createdByType\":\"Key\",\"createdAt\":\"2021-11-16T07:49:22Z\",\"lastModifiedBy\":\"fggjioolvr\",\"lastModifiedByType\":\"Application\",\"lastModifiedAt\":\"2021-10-02T02:42:21Z\"},\"etag\":\"k\",\"location\":\"llqwjygvjayvblmh\",\"tags\":{\"gsopbyrqufegxu\":\"uhbxvvy\",\"bnhlmc\":\"wz\",\"dn\":\"l\",\"ijejvegrhbpn\":\"itvgbmhrixkwm\"},\"id\":\"ixexcc\",\"name\":\"dreaxh\",\"type\":\"exdrrvqahqkg\"}") + "{\"properties\":{\"provisioningState\":\"Updating\",\"customerId\":\"gthrrghxjbdhq\",\"sku\":{\"name\":\"Free\",\"capacityReservationLevel\":441101019,\"lastSkuUpdate\":\"2021-08-03T04:18:25Z\"},\"retentionInDays\":469495787,\"workspaceCapping\":{\"dailyQuotaGb\":81.1170037569868,\"quotaNextResetTime\":\"hrnsvbu\",\"dataIngestionStatus\":\"SubscriptionSuspended\"},\"createdDate\":\"2021-09-08T03:32:01Z\",\"modifiedDate\":\"2021-07-28T13:53:22Z\",\"publicNetworkAccessForIngestion\":\"Disabled\",\"publicNetworkAccessForQuery\":\"Disabled\",\"forceCmkForQuery\":true,\"privateLinkScopedResources\":[{\"resourceId\":\"rtkfawnopq\",\"scopeId\":\"kyzirtxdyux\"},{\"resourceId\":\"jntpsewgioilqu\",\"scopeId\":\"ydxtqm\"}],\"features\":{\"enableDataExport\":false,\"immediatePurgeDataOn30Days\":false,\"enableLogAccessUsingOnlyResourcePermissions\":true,\"clusterResourceId\":\"f\",\"disableLocalAuth\":true,\"unifiedSentinelBillingOnly\":false,\"associations\":[\"ghhavgrvkffo\",\"jzhpjbibgjmfx\",\"mv\"],\"nbkfezzxscy\":\"datauyovw\",\"vzzbtdcq\":\"datawzdgirujbzbo\",\"dshf\":\"datapniyujviyl\",\"fmwncotmrfh\":\"datasnrbgyefrymsgao\"},\"defaultDataCollectionRuleResourceId\":\"ctymoxoftp\",\"replication\":{\"location\":\"wycz\",\"enabled\":false,\"provisioningState\":\"DisableRequested\",\"createdDate\":\"2021-11-29T08:27:09Z\",\"lastModifiedDate\":\"2021-01-05T07:46:41Z\"},\"failover\":{\"state\":\"Inactive\",\"lastModifiedDate\":\"2021-07-16T17:01:10Z\"}},\"identity\":{\"principalId\":\"skasdvlmfwdgzxu\",\"tenantId\":\"cvpa\",\"type\":\"UserAssigned\",\"userAssignedIdentities\":{\"jn\":{\"principalId\":\"uzvx\",\"clientId\":\"i\"},\"cesutrgjupauut\":{\"principalId\":\"ytxifqjzgxmrh\",\"clientId\":\"lw\"},\"pnfqntcyp\":{\"principalId\":\"oqh\",\"clientId\":\"ejqgw\"}}},\"etag\":\"vfoimwksli\",\"location\":\"cizjxvydfceacvl\",\"tags\":{\"jslb\":\"gdyftumrtwna\",\"aeqphchqnr\":\"wkojgcyztsfmzn\",\"wrykqgai\":\"rpxeh\"},\"id\":\"mvikl\",\"name\":\"ydv\",\"type\":\"hbejdznxcvdsrhnj\"}") .toObject(WorkspaceInner.class); - Assertions.assertEquals("llqwjygvjayvblmh", model.location()); - Assertions.assertEquals("uhbxvvy", model.tags().get("gsopbyrqufegxu")); - Assertions.assertEquals(IdentityType.MANAGED_IDENTITY, model.identity().type()); - Assertions.assertEquals("k", model.etag()); - Assertions.assertEquals(WorkspaceSkuNameEnum.PER_NODE, model.sku().name()); - Assertions.assertEquals(CapacityReservationLevel.FIVE_ZERO_ZERO, model.sku().capacityReservationLevel()); - Assertions.assertEquals(728576378, model.retentionInDays()); - Assertions.assertEquals(44.315075801765715D, model.workspaceCapping().dailyQuotaGb()); + Assertions.assertEquals("cizjxvydfceacvl", model.location()); + Assertions.assertEquals("gdyftumrtwna", model.tags().get("jslb")); + Assertions.assertEquals(IdentityType.USER_ASSIGNED, model.identity().type()); + Assertions.assertEquals("vfoimwksli", model.etag()); + Assertions.assertEquals(WorkspaceSkuNameEnum.FREE, model.sku().name()); + Assertions.assertEquals(441101019, model.sku().capacityReservationLevel()); + Assertions.assertEquals(469495787, model.retentionInDays()); + Assertions.assertEquals(81.1170037569868D, model.workspaceCapping().dailyQuotaGb()); Assertions.assertEquals(PublicNetworkAccessType.DISABLED, model.publicNetworkAccessForIngestion()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, model.publicNetworkAccessForQuery()); - Assertions.assertEquals(true, model.forceCmkForQuery()); - Assertions.assertEquals(true, model.features().enableDataExport()); - Assertions.assertEquals(false, model.features().immediatePurgeDataOn30Days()); - Assertions.assertEquals(true, model.features().enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("nwcvtbvkayhmtnv", model.features().clusterResourceId()); - Assertions.assertEquals(true, model.features().disableLocalAuth()); - Assertions.assertEquals("xqv", model.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals(PublicNetworkAccessType.DISABLED, model.publicNetworkAccessForQuery()); + Assertions.assertTrue(model.forceCmkForQuery()); + Assertions.assertFalse(model.features().enableDataExport()); + Assertions.assertFalse(model.features().immediatePurgeDataOn30Days()); + Assertions.assertTrue(model.features().enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("f", model.features().clusterResourceId()); + Assertions.assertTrue(model.features().disableLocalAuth()); + Assertions.assertEquals("ctymoxoftp", model.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("wycz", model.replication().location()); + Assertions.assertFalse(model.replication().enabled()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - WorkspaceInner model = new WorkspaceInner().withLocation("llqwjygvjayvblmh") - .withTags(mapOf("gsopbyrqufegxu", "uhbxvvy", "bnhlmc", "wz", "dn", "l", "ijejvegrhbpn", "itvgbmhrixkwm")) - .withIdentity(new Identity().withType(IdentityType.MANAGED_IDENTITY) - .withUserAssignedIdentities(mapOf("pbqpcrfkbwccsn", new UserIdentityProperties(), "y", - new UserIdentityProperties(), "ywkbirryuzhlhkjo", new UserIdentityProperties()))) - .withEtag("k") - .withSku(new WorkspaceSku().withName(WorkspaceSkuNameEnum.PER_NODE) - .withCapacityReservationLevel(CapacityReservationLevel.FIVE_ZERO_ZERO)) - .withRetentionInDays(728576378) - .withWorkspaceCapping(new WorkspaceCapping().withDailyQuotaGb(44.315075801765715D)) + WorkspaceInner model = new WorkspaceInner().withLocation("cizjxvydfceacvl") + .withTags(mapOf("jslb", "gdyftumrtwna", "aeqphchqnr", "wkojgcyztsfmzn", "wrykqgai", "rpxeh")) + .withIdentity(new Identity().withType(IdentityType.USER_ASSIGNED) + .withUserAssignedIdentities(mapOf("jn", new UserIdentityProperties(), "cesutrgjupauut", + new UserIdentityProperties(), "pnfqntcyp", new UserIdentityProperties()))) + .withEtag("vfoimwksli") + .withSku(new WorkspaceSku().withName(WorkspaceSkuNameEnum.FREE).withCapacityReservationLevel(441101019)) + .withRetentionInDays(469495787) + .withWorkspaceCapping(new WorkspaceCapping().withDailyQuotaGb(81.1170037569868D)) .withPublicNetworkAccessForIngestion(PublicNetworkAccessType.DISABLED) - .withPublicNetworkAccessForQuery(PublicNetworkAccessType.ENABLED) + .withPublicNetworkAccessForQuery(PublicNetworkAccessType.DISABLED) .withForceCmkForQuery(true) - .withFeatures(new WorkspaceFeatures().withEnableDataExport(true) + .withFeatures(new WorkspaceFeatures().withEnableDataExport(false) .withImmediatePurgeDataOn30Days(false) .withEnableLogAccessUsingOnlyResourcePermissions(true) - .withClusterResourceId("nwcvtbvkayhmtnv") + .withClusterResourceId("f") .withDisableLocalAuth(true) - .withAdditionalProperties(mapOf())) - .withDefaultDataCollectionRuleResourceId("xqv"); + .withAdditionalProperties(mapOf("associations", JacksonAdapter.createDefaultSerializerAdapter() + .deserialize("[\"ghhavgrvkffo\",\"jzhpjbibgjmfx\",\"mv\"]", Object.class, SerializerEncoding.JSON), + "dshf", "datapniyujviyl", "vzzbtdcq", "datawzdgirujbzbo", "unifiedSentinelBillingOnly", false, + "nbkfezzxscy", "datauyovw", "fmwncotmrfh", "datasnrbgyefrymsgao"))) + .withDefaultDataCollectionRuleResourceId("ctymoxoftp") + .withReplication(new WorkspaceReplicationProperties().withLocation("wycz").withEnabled(false)) + .withFailover(new WorkspaceFailoverProperties()); model = BinaryData.fromObject(model).toObject(WorkspaceInner.class); - Assertions.assertEquals("llqwjygvjayvblmh", model.location()); - Assertions.assertEquals("uhbxvvy", model.tags().get("gsopbyrqufegxu")); - Assertions.assertEquals(IdentityType.MANAGED_IDENTITY, model.identity().type()); - Assertions.assertEquals("k", model.etag()); - Assertions.assertEquals(WorkspaceSkuNameEnum.PER_NODE, model.sku().name()); - Assertions.assertEquals(CapacityReservationLevel.FIVE_ZERO_ZERO, model.sku().capacityReservationLevel()); - Assertions.assertEquals(728576378, model.retentionInDays()); - Assertions.assertEquals(44.315075801765715D, model.workspaceCapping().dailyQuotaGb()); + Assertions.assertEquals("cizjxvydfceacvl", model.location()); + Assertions.assertEquals("gdyftumrtwna", model.tags().get("jslb")); + Assertions.assertEquals(IdentityType.USER_ASSIGNED, model.identity().type()); + Assertions.assertEquals("vfoimwksli", model.etag()); + Assertions.assertEquals(WorkspaceSkuNameEnum.FREE, model.sku().name()); + Assertions.assertEquals(441101019, model.sku().capacityReservationLevel()); + Assertions.assertEquals(469495787, model.retentionInDays()); + Assertions.assertEquals(81.1170037569868D, model.workspaceCapping().dailyQuotaGb()); Assertions.assertEquals(PublicNetworkAccessType.DISABLED, model.publicNetworkAccessForIngestion()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, model.publicNetworkAccessForQuery()); - Assertions.assertEquals(true, model.forceCmkForQuery()); - Assertions.assertEquals(true, model.features().enableDataExport()); - Assertions.assertEquals(false, model.features().immediatePurgeDataOn30Days()); - Assertions.assertEquals(true, model.features().enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("nwcvtbvkayhmtnv", model.features().clusterResourceId()); - Assertions.assertEquals(true, model.features().disableLocalAuth()); - Assertions.assertEquals("xqv", model.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals(PublicNetworkAccessType.DISABLED, model.publicNetworkAccessForQuery()); + Assertions.assertTrue(model.forceCmkForQuery()); + Assertions.assertFalse(model.features().enableDataExport()); + Assertions.assertFalse(model.features().immediatePurgeDataOn30Days()); + Assertions.assertTrue(model.features().enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("f", model.features().clusterResourceId()); + Assertions.assertTrue(model.features().disableLocalAuth()); + Assertions.assertEquals("ctymoxoftp", model.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("wycz", model.replication().location()); + Assertions.assertFalse(model.replication().enabled()); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceListManagementGroupsResultTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceListManagementGroupsResultTests.java index 951ae07adcae..ebca78d665ab 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceListManagementGroupsResultTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceListManagementGroupsResultTests.java @@ -15,61 +15,45 @@ public final class WorkspaceListManagementGroupsResultTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { WorkspaceListManagementGroupsResult model = BinaryData.fromString( - "{\"value\":[{\"properties\":{\"serverCount\":319916389,\"isGateway\":false,\"name\":\"elmqk\",\"id\":\"ahvljuaha\",\"created\":\"2021-02-11T00:39:32Z\",\"dataReceived\":\"2021-02-06T01:31:14Z\",\"version\":\"mdua\",\"sku\":\"exq\"}},{\"properties\":{\"serverCount\":792525510,\"isGateway\":true,\"name\":\"sr\",\"id\":\"gvxp\",\"created\":\"2021-07-02T00:35:52Z\",\"dataReceived\":\"2021-02-22T15:36:44Z\",\"version\":\"fmisg\",\"sku\":\"nbbelda\"}},{\"properties\":{\"serverCount\":1782633502,\"isGateway\":true,\"name\":\"ourqhakau\",\"id\":\"shsfwxosowzxcu\",\"created\":\"2021-06-04T05:08:46Z\",\"dataReceived\":\"2020-12-22T21:46:37Z\",\"version\":\"xdje\",\"sku\":\"pucwwfvovbvme\"}},{\"properties\":{\"serverCount\":1911093580,\"isGateway\":false,\"name\":\"zceuojgjrw\",\"id\":\"eiotwmcdytdx\",\"created\":\"2021-01-14T13:52:52Z\",\"dataReceived\":\"2021-04-02T04:04:33Z\",\"version\":\"jawgqwg\",\"sku\":\"ni\"}}]}") + "{\"value\":[{\"properties\":{\"serverCount\":2119983807,\"isGateway\":true,\"name\":\"jjugwdkcglhslaz\",\"id\":\"yggdtjixh\",\"created\":\"2021-11-28T10:21:02Z\",\"dataReceived\":\"2021-03-09T09:26:42Z\",\"version\":\"wey\",\"sku\":\"menevfyexfwh\"}},{\"properties\":{\"serverCount\":148650220,\"isGateway\":false,\"name\":\"vdcsitynn\",\"id\":\"mdectehfiqscjey\",\"created\":\"2021-03-08T20:07:33Z\",\"dataReceived\":\"2021-01-16T02:36:56Z\",\"version\":\"kgqhcjrefovg\",\"sku\":\"qsl\"}}]}") .toObject(WorkspaceListManagementGroupsResult.class); - Assertions.assertEquals(319916389, model.value().get(0).serverCount()); - Assertions.assertEquals(false, model.value().get(0).isGateway()); - Assertions.assertEquals("elmqk", model.value().get(0).name()); - Assertions.assertEquals("ahvljuaha", model.value().get(0).id()); - Assertions.assertEquals(OffsetDateTime.parse("2021-02-11T00:39:32Z"), model.value().get(0).created()); - Assertions.assertEquals(OffsetDateTime.parse("2021-02-06T01:31:14Z"), model.value().get(0).dataReceived()); - Assertions.assertEquals("mdua", model.value().get(0).version()); - Assertions.assertEquals("exq", model.value().get(0).sku()); + Assertions.assertEquals(2119983807, model.value().get(0).serverCount()); + Assertions.assertTrue(model.value().get(0).isGateway()); + Assertions.assertEquals("jjugwdkcglhslaz", model.value().get(0).name()); + Assertions.assertEquals("yggdtjixh", model.value().get(0).id()); + Assertions.assertEquals(OffsetDateTime.parse("2021-11-28T10:21:02Z"), model.value().get(0).created()); + Assertions.assertEquals(OffsetDateTime.parse("2021-03-09T09:26:42Z"), model.value().get(0).dataReceived()); + Assertions.assertEquals("wey", model.value().get(0).version()); + Assertions.assertEquals("menevfyexfwh", model.value().get(0).sku()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { WorkspaceListManagementGroupsResult model = new WorkspaceListManagementGroupsResult().withValue(Arrays.asList( - new ManagementGroupInner().withServerCount(319916389) - .withIsGateway(false) - .withName("elmqk") - .withId("ahvljuaha") - .withCreated(OffsetDateTime.parse("2021-02-11T00:39:32Z")) - .withDataReceived(OffsetDateTime.parse("2021-02-06T01:31:14Z")) - .withVersion("mdua") - .withSku("exq"), - new ManagementGroupInner().withServerCount(792525510) - .withIsGateway(true) - .withName("sr") - .withId("gvxp") - .withCreated(OffsetDateTime.parse("2021-07-02T00:35:52Z")) - .withDataReceived(OffsetDateTime.parse("2021-02-22T15:36:44Z")) - .withVersion("fmisg") - .withSku("nbbelda"), - new ManagementGroupInner().withServerCount(1782633502) + new ManagementGroupInner().withServerCount(2119983807) .withIsGateway(true) - .withName("ourqhakau") - .withId("shsfwxosowzxcu") - .withCreated(OffsetDateTime.parse("2021-06-04T05:08:46Z")) - .withDataReceived(OffsetDateTime.parse("2020-12-22T21:46:37Z")) - .withVersion("xdje") - .withSku("pucwwfvovbvme"), - new ManagementGroupInner().withServerCount(1911093580) + .withName("jjugwdkcglhslaz") + .withId("yggdtjixh") + .withCreated(OffsetDateTime.parse("2021-11-28T10:21:02Z")) + .withDataReceived(OffsetDateTime.parse("2021-03-09T09:26:42Z")) + .withVersion("wey") + .withSku("menevfyexfwh"), + new ManagementGroupInner().withServerCount(148650220) .withIsGateway(false) - .withName("zceuojgjrw") - .withId("eiotwmcdytdx") - .withCreated(OffsetDateTime.parse("2021-01-14T13:52:52Z")) - .withDataReceived(OffsetDateTime.parse("2021-04-02T04:04:33Z")) - .withVersion("jawgqwg") - .withSku("ni"))); + .withName("vdcsitynn") + .withId("mdectehfiqscjey") + .withCreated(OffsetDateTime.parse("2021-03-08T20:07:33Z")) + .withDataReceived(OffsetDateTime.parse("2021-01-16T02:36:56Z")) + .withVersion("kgqhcjrefovg") + .withSku("qsl"))); model = BinaryData.fromObject(model).toObject(WorkspaceListManagementGroupsResult.class); - Assertions.assertEquals(319916389, model.value().get(0).serverCount()); - Assertions.assertEquals(false, model.value().get(0).isGateway()); - Assertions.assertEquals("elmqk", model.value().get(0).name()); - Assertions.assertEquals("ahvljuaha", model.value().get(0).id()); - Assertions.assertEquals(OffsetDateTime.parse("2021-02-11T00:39:32Z"), model.value().get(0).created()); - Assertions.assertEquals(OffsetDateTime.parse("2021-02-06T01:31:14Z"), model.value().get(0).dataReceived()); - Assertions.assertEquals("mdua", model.value().get(0).version()); - Assertions.assertEquals("exq", model.value().get(0).sku()); + Assertions.assertEquals(2119983807, model.value().get(0).serverCount()); + Assertions.assertTrue(model.value().get(0).isGateway()); + Assertions.assertEquals("jjugwdkcglhslaz", model.value().get(0).name()); + Assertions.assertEquals("yggdtjixh", model.value().get(0).id()); + Assertions.assertEquals(OffsetDateTime.parse("2021-11-28T10:21:02Z"), model.value().get(0).created()); + Assertions.assertEquals(OffsetDateTime.parse("2021-03-09T09:26:42Z"), model.value().get(0).dataReceived()); + Assertions.assertEquals("wey", model.value().get(0).version()); + Assertions.assertEquals("menevfyexfwh", model.value().get(0).sku()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceListResultTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceListResultTests.java index 5b7de28373ff..733c111eac29 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceListResultTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceListResultTests.java @@ -5,15 +5,18 @@ package com.azure.resourcemanager.loganalytics.generated; import com.azure.core.util.BinaryData; +import com.azure.core.util.serializer.JacksonAdapter; +import com.azure.core.util.serializer.SerializerEncoding; import com.azure.resourcemanager.loganalytics.fluent.models.WorkspaceInner; -import com.azure.resourcemanager.loganalytics.models.CapacityReservationLevel; import com.azure.resourcemanager.loganalytics.models.Identity; import com.azure.resourcemanager.loganalytics.models.IdentityType; import com.azure.resourcemanager.loganalytics.models.PublicNetworkAccessType; import com.azure.resourcemanager.loganalytics.models.UserIdentityProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceCapping; +import com.azure.resourcemanager.loganalytics.models.WorkspaceFailoverProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceFeatures; import com.azure.resourcemanager.loganalytics.models.WorkspaceListResult; +import com.azure.resourcemanager.loganalytics.models.WorkspaceReplicationProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceSku; import com.azure.resourcemanager.loganalytics.models.WorkspaceSkuNameEnum; import java.util.Arrays; @@ -25,98 +28,107 @@ public final class WorkspaceListResultTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { WorkspaceListResult model = BinaryData.fromString( - "{\"value\":[{\"properties\":{\"provisioningState\":\"Creating\",\"customerId\":\"rvtp\",\"sku\":{\"name\":\"CapacityReservation\",\"capacityReservationLevel\":300,\"lastSkuUpdate\":\"lgkfbt\"},\"retentionInDays\":2059272755,\"workspaceCapping\":{\"dailyQuotaGb\":3.405125193957159,\"quotaNextResetTime\":\"jcntuj\",\"dataIngestionStatus\":\"ApproachingQuota\"},\"createdDate\":\"ed\",\"modifiedDate\":\"wwa\",\"publicNetworkAccessForIngestion\":\"Enabled\",\"publicNetworkAccessForQuery\":\"Disabled\",\"forceCmkForQuery\":false,\"privateLinkScopedResources\":[{\"resourceId\":\"foqouicybx\",\"scopeId\":\"zg\"},{\"resourceId\":\"ufoxc\",\"scopeId\":\"opidoamciodh\"}],\"features\":{\"enableDataExport\":true,\"immediatePurgeDataOn30Days\":true,\"enableLogAccessUsingOnlyResourcePermissions\":false,\"clusterResourceId\":\"bon\",\"disableLocalAuth\":false,\"\":{\"exztvbtq\":\"dataegokdwbwhkszzcmr\",\"wtl\":\"datasfraoyzko\",\"uximerqfobw\":\"datanguxawqaldsy\"}},\"defaultDataCollectionRuleResourceId\":\"nkbykutwpfhp\"},\"identity\":{\"principalId\":\"hrskdsnfd\",\"tenantId\":\"oakgtdlmkkzev\",\"type\":\"application\",\"userAssignedIdentities\":{\"m\":{\"principalId\":\"pusdstt\",\"clientId\":\"ogvbbejdcngq\"},\"grtwae\":{\"principalId\":\"kufgmj\",\"clientId\":\"wr\"},\"efozbhdms\":{\"principalId\":\"uzkopbminrfd\",\"clientId\":\"yuhhziu\"},\"z\":{\"principalId\":\"mzqhoftrmaequi\",\"clientId\":\"xicslfao\"}}},\"systemData\":{\"createdBy\":\"ylhalnswhcc\",\"createdByType\":\"User\",\"createdAt\":\"2021-06-09T09:48:38Z\",\"lastModifiedBy\":\"vwitqscyw\",\"lastModifiedByType\":\"User\",\"lastModifiedAt\":\"2021-02-13T16:07:26Z\"},\"etag\":\"uhczbwemh\",\"location\":\"i\",\"tags\":{\"w\":\"rgzdwmsweyp\"},\"id\":\"xggicccnxqhuexmk\",\"name\":\"tlstvlzywem\",\"type\":\"zrncsdt\"},{\"properties\":{\"provisioningState\":\"Succeeded\",\"customerId\":\"ypbsfgytguslfead\",\"sku\":{\"name\":\"Free\",\"capacityReservationLevel\":500,\"lastSkuUpdate\":\"yhejhzisxgfp\"},\"retentionInDays\":1351567723,\"workspaceCapping\":{\"dailyQuotaGb\":12.05090295018133,\"quotaNextResetTime\":\"srp\",\"dataIngestionStatus\":\"OverQuota\"},\"createdDate\":\"zraehtwd\",\"modifiedDate\":\"ftswibyrcdlbhsh\",\"publicNetworkAccessForIngestion\":\"Enabled\",\"publicNetworkAccessForQuery\":\"Disabled\",\"forceCmkForQuery\":false,\"privateLinkScopedResources\":[{\"resourceId\":\"ty\",\"scopeId\":\"evxccedcp\"}],\"features\":{\"enableDataExport\":true,\"immediatePurgeDataOn30Days\":true,\"enableLogAccessUsingOnlyResourcePermissions\":false,\"clusterResourceId\":\"xltjcvnhltiu\",\"disableLocalAuth\":false,\"\":{\"y\":\"datavvwxqi\",\"djrkvfgbvfvpd\":\"dataunyowxwl\"}},\"defaultDataCollectionRuleResourceId\":\"daciz\"},\"identity\":{\"principalId\":\"lhkrribdeibqipqk\",\"tenantId\":\"vxndz\",\"type\":\"user\",\"userAssignedIdentities\":{\"sjabibs\":{\"principalId\":\"fajpjorwk\",\"clientId\":\"yhgbijtjivfx\"},\"budurgkakmo\":{\"principalId\":\"tawfsdjpvkvp\",\"clientId\":\"xbkzbzkdvncj\"},\"lgzrfzeeyeb\":{\"principalId\":\"hjjklff\",\"clientId\":\"ouw\"},\"t\":{\"principalId\":\"ikayuhqlbjbsybb\",\"clientId\":\"r\"}}},\"systemData\":{\"createdBy\":\"mfpgv\",\"createdByType\":\"Key\",\"createdAt\":\"2021-10-24T06:37:57Z\",\"lastModifiedBy\":\"ltha\",\"lastModifiedByType\":\"User\",\"lastModifiedAt\":\"2021-09-03T05:44:20Z\"},\"etag\":\"wutwbdsre\",\"location\":\"pdrhne\",\"tags\":{\"cgpik\":\"wqkdwytisibi\",\"av\":\"zimejzanlfzx\",\"jq\":\"mbzonokix\"},\"id\":\"irgzp\",\"name\":\"rlazszrnw\",\"type\":\"iin\"}]}") + "{\"value\":[{\"properties\":{\"provisioningState\":\"ProvisioningAccount\",\"customerId\":\"mtdh\",\"sku\":{\"name\":\"Standalone\",\"capacityReservationLevel\":1330472875,\"lastSkuUpdate\":\"2021-08-05T12:13:03Z\"},\"retentionInDays\":811019553,\"workspaceCapping\":{\"dailyQuotaGb\":64.53231022171681,\"quotaNextResetTime\":\"w\",\"dataIngestionStatus\":\"OverQuota\"},\"createdDate\":\"2021-12-09T01:29:35Z\",\"modifiedDate\":\"2021-03-20T05:32:50Z\",\"publicNetworkAccessForIngestion\":\"Disabled\",\"publicNetworkAccessForQuery\":\"SecuredByPerimeter\",\"forceCmkForQuery\":true,\"privateLinkScopedResources\":[{\"resourceId\":\"vqqaatjinrvgo\",\"scopeId\":\"mfiibfggj\"},{\"resourceId\":\"olvrw\",\"scopeId\":\"v\"}],\"features\":{\"enableDataExport\":false,\"immediatePurgeDataOn30Days\":true,\"enableLogAccessUsingOnlyResourcePermissions\":true,\"clusterResourceId\":\"ygvjayvblmh\",\"disableLocalAuth\":true,\"unifiedSentinelBillingOnly\":true,\"associations\":[\"vvyhg\"],\"uvwzfbnh\":\"databyrqufeg\",\"bmhrixkwmyijejv\":\"datamctlpdngitv\",\"ixexcc\":\"datagrhbpn\"},\"defaultDataCollectionRuleResourceId\":\"reaxhcexdr\",\"replication\":{\"location\":\"ahqkg\",\"enabled\":false,\"provisioningState\":\"DisableRequested\",\"createdDate\":\"2021-04-30T07:00:15Z\",\"lastModifiedDate\":\"2021-07-07T03:58:09Z\"},\"failover\":{\"state\":\"Failed\",\"lastModifiedDate\":\"2021-09-16T08:46:35Z\"}},\"identity\":{\"principalId\":\"z\",\"tenantId\":\"voowvr\",\"type\":\"SystemAssigned\",\"userAssignedIdentities\":{\"yhgfipnsx\":{\"principalId\":\"qp\",\"clientId\":\"ostronz\"},\"gumhjglikkxws\":{\"principalId\":\"cwaekrrjre\",\"clientId\":\"xt\"}}},\"etag\":\"bq\",\"location\":\"vuzlm\",\"tags\":{\"noigbrnjwmwk\":\"lfktgplcrpwjxe\"},\"id\":\"nbsazejjoqkag\",\"name\":\"hsxttaugzxnf\",\"type\":\"azpxdtnkdmkqjjl\"},{\"properties\":{\"provisioningState\":\"ProvisioningAccount\",\"customerId\":\"rkpyouaibrebqaay\",\"sku\":{\"name\":\"PerGB2018\",\"capacityReservationLevel\":1330578772,\"lastSkuUpdate\":\"2021-11-17T18:36:32Z\"},\"retentionInDays\":2018222858,\"workspaceCapping\":{\"dailyQuotaGb\":15.097379092743646,\"quotaNextResetTime\":\"wfff\",\"dataIngestionStatus\":\"SubscriptionSuspended\"},\"createdDate\":\"2021-01-19T04:30:49Z\",\"modifiedDate\":\"2021-03-20T06:33:49Z\",\"publicNetworkAccessForIngestion\":\"Enabled\",\"publicNetworkAccessForQuery\":\"Disabled\",\"forceCmkForQuery\":false,\"privateLinkScopedResources\":[{\"resourceId\":\"jihy\",\"scopeId\":\"zphv\"}],\"features\":{\"enableDataExport\":false,\"immediatePurgeDataOn30Days\":false,\"enableLogAccessUsingOnlyResourcePermissions\":false,\"clusterResourceId\":\"upkvipmdsc\",\"disableLocalAuth\":false,\"unifiedSentinelBillingOnly\":false,\"associations\":[\"zhfstot\",\"hojujbypelmcuv\",\"ixbjx\"],\"lrcoolsttpki\":\"datan\"},\"defaultDataCollectionRuleResourceId\":\"kbnujr\",\"replication\":{\"location\":\"tylbfpncurdoiw\",\"enabled\":false,\"provisioningState\":\"Succeeded\",\"createdDate\":\"2021-05-04T20:05:44Z\",\"lastModifiedDate\":\"2021-07-16T11:50:04Z\"},\"failover\":{\"state\":\"Deactivating\",\"lastModifiedDate\":\"2021-08-12T00:10:56Z\"}},\"identity\":{\"principalId\":\"knfd\",\"tenantId\":\"wjchrdg\",\"type\":\"None\",\"userAssignedIdentities\":{\"tsbwtovvtgse\":{\"principalId\":\"mwctondzjluudfd\",\"clientId\":\"gg\"}}},\"etag\":\"fiufx\",\"location\":\"knpirgnepttwq\",\"tags\":{\"rxfrddhc\":\"iffcdmqnrojlpijn\",\"ronasxift\":\"atiz\",\"zh\":\"zq\"},\"id\":\"tw\",\"name\":\"sgogczhonnxk\",\"type\":\"lgnyhmo\"}]}") .toObject(WorkspaceListResult.class); - Assertions.assertEquals("i", model.value().get(0).location()); - Assertions.assertEquals("rgzdwmsweyp", model.value().get(0).tags().get("w")); - Assertions.assertEquals(IdentityType.APPLICATION, model.value().get(0).identity().type()); - Assertions.assertEquals("uhczbwemh", model.value().get(0).etag()); - Assertions.assertEquals(WorkspaceSkuNameEnum.CAPACITY_RESERVATION, model.value().get(0).sku().name()); - Assertions.assertEquals(CapacityReservationLevel.THREE_ZERO_ZERO, - model.value().get(0).sku().capacityReservationLevel()); - Assertions.assertEquals(2059272755, model.value().get(0).retentionInDays()); - Assertions.assertEquals(3.405125193957159D, model.value().get(0).workspaceCapping().dailyQuotaGb()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, + Assertions.assertEquals("vuzlm", model.value().get(0).location()); + Assertions.assertEquals("lfktgplcrpwjxe", model.value().get(0).tags().get("noigbrnjwmwk")); + Assertions.assertEquals(IdentityType.SYSTEM_ASSIGNED, model.value().get(0).identity().type()); + Assertions.assertEquals("bq", model.value().get(0).etag()); + Assertions.assertEquals(WorkspaceSkuNameEnum.STANDALONE, model.value().get(0).sku().name()); + Assertions.assertEquals(1330472875, model.value().get(0).sku().capacityReservationLevel()); + Assertions.assertEquals(811019553, model.value().get(0).retentionInDays()); + Assertions.assertEquals(64.53231022171681D, model.value().get(0).workspaceCapping().dailyQuotaGb()); + Assertions.assertEquals(PublicNetworkAccessType.DISABLED, model.value().get(0).publicNetworkAccessForIngestion()); - Assertions.assertEquals(PublicNetworkAccessType.DISABLED, model.value().get(0).publicNetworkAccessForQuery()); - Assertions.assertEquals(false, model.value().get(0).forceCmkForQuery()); - Assertions.assertEquals(true, model.value().get(0).features().enableDataExport()); - Assertions.assertEquals(true, model.value().get(0).features().immediatePurgeDataOn30Days()); - Assertions.assertEquals(false, model.value().get(0).features().enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("bon", model.value().get(0).features().clusterResourceId()); - Assertions.assertEquals(false, model.value().get(0).features().disableLocalAuth()); - Assertions.assertEquals("nkbykutwpfhp", model.value().get(0).defaultDataCollectionRuleResourceId()); + Assertions.assertEquals(PublicNetworkAccessType.SECURED_BY_PERIMETER, + model.value().get(0).publicNetworkAccessForQuery()); + Assertions.assertTrue(model.value().get(0).forceCmkForQuery()); + Assertions.assertFalse(model.value().get(0).features().enableDataExport()); + Assertions.assertTrue(model.value().get(0).features().immediatePurgeDataOn30Days()); + Assertions.assertTrue(model.value().get(0).features().enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("ygvjayvblmh", model.value().get(0).features().clusterResourceId()); + Assertions.assertTrue(model.value().get(0).features().disableLocalAuth()); + Assertions.assertEquals("reaxhcexdr", model.value().get(0).defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("ahqkg", model.value().get(0).replication().location()); + Assertions.assertFalse(model.value().get(0).replication().enabled()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - WorkspaceListResult model - = new WorkspaceListResult() - .withValue( - Arrays - .asList( - new WorkspaceInner().withLocation("i") - .withTags(mapOf("w", "rgzdwmsweyp")) - .withIdentity(new Identity().withType(IdentityType.APPLICATION) - .withUserAssignedIdentities(mapOf("m", new UserIdentityProperties(), "grtwae", - new UserIdentityProperties(), "efozbhdms", new UserIdentityProperties(), "z", - new UserIdentityProperties()))) - .withEtag("uhczbwemh") - .withSku(new WorkspaceSku().withName(WorkspaceSkuNameEnum.CAPACITY_RESERVATION) - .withCapacityReservationLevel(CapacityReservationLevel.THREE_ZERO_ZERO)) - .withRetentionInDays(2059272755) - .withWorkspaceCapping(new WorkspaceCapping().withDailyQuotaGb(3.405125193957159D)) - .withPublicNetworkAccessForIngestion(PublicNetworkAccessType.ENABLED) - .withPublicNetworkAccessForQuery(PublicNetworkAccessType.DISABLED) - .withForceCmkForQuery(false) - .withFeatures(new WorkspaceFeatures().withEnableDataExport(true) - .withImmediatePurgeDataOn30Days(true) - .withEnableLogAccessUsingOnlyResourcePermissions(false) - .withClusterResourceId("bon") - .withDisableLocalAuth(false) - .withAdditionalProperties(mapOf())) - .withDefaultDataCollectionRuleResourceId("nkbykutwpfhp"), - new WorkspaceInner().withLocation("pdrhne") - .withTags(mapOf("cgpik", "wqkdwytisibi", "av", "zimejzanlfzx", "jq", "mbzonokix")) - .withIdentity(new Identity().withType(IdentityType.USER) - .withUserAssignedIdentities(mapOf("sjabibs", new UserIdentityProperties(), - "budurgkakmo", new UserIdentityProperties(), "lgzrfzeeyeb", - new UserIdentityProperties(), "t", new UserIdentityProperties()))) - .withEtag("wutwbdsre") - .withSku(new WorkspaceSku().withName(WorkspaceSkuNameEnum.FREE) - .withCapacityReservationLevel(CapacityReservationLevel.FIVE_ZERO_ZERO)) - .withRetentionInDays(1351567723) - .withWorkspaceCapping(new WorkspaceCapping().withDailyQuotaGb(12.05090295018133D)) - .withPublicNetworkAccessForIngestion(PublicNetworkAccessType.ENABLED) - .withPublicNetworkAccessForQuery(PublicNetworkAccessType.DISABLED) - .withForceCmkForQuery(false) - .withFeatures(new WorkspaceFeatures().withEnableDataExport(true) - .withImmediatePurgeDataOn30Days(true) - .withEnableLogAccessUsingOnlyResourcePermissions(false) - .withClusterResourceId("xltjcvnhltiu") - .withDisableLocalAuth(false) - .withAdditionalProperties(mapOf())) - .withDefaultDataCollectionRuleResourceId("daciz"))); + WorkspaceListResult model = new WorkspaceListResult().withValue(Arrays.asList( + new WorkspaceInner().withLocation("vuzlm") + .withTags(mapOf("noigbrnjwmwk", "lfktgplcrpwjxe")) + .withIdentity(new Identity().withType(IdentityType.SYSTEM_ASSIGNED) + .withUserAssignedIdentities(mapOf("yhgfipnsx", new UserIdentityProperties(), "gumhjglikkxws", + new UserIdentityProperties()))) + .withEtag("bq") + .withSku(new WorkspaceSku().withName(WorkspaceSkuNameEnum.STANDALONE) + .withCapacityReservationLevel(1330472875)) + .withRetentionInDays(811019553) + .withWorkspaceCapping(new WorkspaceCapping().withDailyQuotaGb(64.53231022171681D)) + .withPublicNetworkAccessForIngestion(PublicNetworkAccessType.DISABLED) + .withPublicNetworkAccessForQuery(PublicNetworkAccessType.SECURED_BY_PERIMETER) + .withForceCmkForQuery(true) + .withFeatures(new WorkspaceFeatures().withEnableDataExport(false) + .withImmediatePurgeDataOn30Days(true) + .withEnableLogAccessUsingOnlyResourcePermissions(true) + .withClusterResourceId("ygvjayvblmh") + .withDisableLocalAuth(true) + .withAdditionalProperties(mapOf("associations", + JacksonAdapter.createDefaultSerializerAdapter() + .deserialize("[\"vvyhg\"]", Object.class, SerializerEncoding.JSON), + "ixexcc", "datagrhbpn", "uvwzfbnh", "databyrqufeg", "bmhrixkwmyijejv", "datamctlpdngitv", + "unifiedSentinelBillingOnly", true))) + .withDefaultDataCollectionRuleResourceId("reaxhcexdr") + .withReplication(new WorkspaceReplicationProperties().withLocation("ahqkg").withEnabled(false)) + .withFailover(new WorkspaceFailoverProperties()), + new WorkspaceInner().withLocation("knpirgnepttwq") + .withTags(mapOf("rxfrddhc", "iffcdmqnrojlpijn", "ronasxift", "atiz", "zh", "zq")) + .withIdentity(new Identity().withType(IdentityType.NONE) + .withUserAssignedIdentities(mapOf("tsbwtovvtgse", new UserIdentityProperties()))) + .withEtag("fiufx") + .withSku(new WorkspaceSku().withName(WorkspaceSkuNameEnum.PER_GB2018) + .withCapacityReservationLevel(1330578772)) + .withRetentionInDays(2018222858) + .withWorkspaceCapping(new WorkspaceCapping().withDailyQuotaGb(15.097379092743646D)) + .withPublicNetworkAccessForIngestion(PublicNetworkAccessType.ENABLED) + .withPublicNetworkAccessForQuery(PublicNetworkAccessType.DISABLED) + .withForceCmkForQuery(false) + .withFeatures(new WorkspaceFeatures().withEnableDataExport(false) + .withImmediatePurgeDataOn30Days(false) + .withEnableLogAccessUsingOnlyResourcePermissions(false) + .withClusterResourceId("upkvipmdsc") + .withDisableLocalAuth(false) + .withAdditionalProperties(mapOf("associations", + JacksonAdapter.createDefaultSerializerAdapter() + .deserialize("[\"zhfstot\",\"hojujbypelmcuv\",\"ixbjx\"]", Object.class, + SerializerEncoding.JSON), + "lrcoolsttpki", "datan", "unifiedSentinelBillingOnly", false))) + .withDefaultDataCollectionRuleResourceId("kbnujr") + .withReplication(new WorkspaceReplicationProperties().withLocation("tylbfpncurdoiw").withEnabled(false)) + .withFailover(new WorkspaceFailoverProperties()))); model = BinaryData.fromObject(model).toObject(WorkspaceListResult.class); - Assertions.assertEquals("i", model.value().get(0).location()); - Assertions.assertEquals("rgzdwmsweyp", model.value().get(0).tags().get("w")); - Assertions.assertEquals(IdentityType.APPLICATION, model.value().get(0).identity().type()); - Assertions.assertEquals("uhczbwemh", model.value().get(0).etag()); - Assertions.assertEquals(WorkspaceSkuNameEnum.CAPACITY_RESERVATION, model.value().get(0).sku().name()); - Assertions.assertEquals(CapacityReservationLevel.THREE_ZERO_ZERO, - model.value().get(0).sku().capacityReservationLevel()); - Assertions.assertEquals(2059272755, model.value().get(0).retentionInDays()); - Assertions.assertEquals(3.405125193957159D, model.value().get(0).workspaceCapping().dailyQuotaGb()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, + Assertions.assertEquals("vuzlm", model.value().get(0).location()); + Assertions.assertEquals("lfktgplcrpwjxe", model.value().get(0).tags().get("noigbrnjwmwk")); + Assertions.assertEquals(IdentityType.SYSTEM_ASSIGNED, model.value().get(0).identity().type()); + Assertions.assertEquals("bq", model.value().get(0).etag()); + Assertions.assertEquals(WorkspaceSkuNameEnum.STANDALONE, model.value().get(0).sku().name()); + Assertions.assertEquals(1330472875, model.value().get(0).sku().capacityReservationLevel()); + Assertions.assertEquals(811019553, model.value().get(0).retentionInDays()); + Assertions.assertEquals(64.53231022171681D, model.value().get(0).workspaceCapping().dailyQuotaGb()); + Assertions.assertEquals(PublicNetworkAccessType.DISABLED, model.value().get(0).publicNetworkAccessForIngestion()); - Assertions.assertEquals(PublicNetworkAccessType.DISABLED, model.value().get(0).publicNetworkAccessForQuery()); - Assertions.assertEquals(false, model.value().get(0).forceCmkForQuery()); - Assertions.assertEquals(true, model.value().get(0).features().enableDataExport()); - Assertions.assertEquals(true, model.value().get(0).features().immediatePurgeDataOn30Days()); - Assertions.assertEquals(false, model.value().get(0).features().enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("bon", model.value().get(0).features().clusterResourceId()); - Assertions.assertEquals(false, model.value().get(0).features().disableLocalAuth()); - Assertions.assertEquals("nkbykutwpfhp", model.value().get(0).defaultDataCollectionRuleResourceId()); + Assertions.assertEquals(PublicNetworkAccessType.SECURED_BY_PERIMETER, + model.value().get(0).publicNetworkAccessForQuery()); + Assertions.assertTrue(model.value().get(0).forceCmkForQuery()); + Assertions.assertFalse(model.value().get(0).features().enableDataExport()); + Assertions.assertTrue(model.value().get(0).features().immediatePurgeDataOn30Days()); + Assertions.assertTrue(model.value().get(0).features().enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("ygvjayvblmh", model.value().get(0).features().clusterResourceId()); + Assertions.assertTrue(model.value().get(0).features().disableLocalAuth()); + Assertions.assertEquals("reaxhcexdr", model.value().get(0).defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("ahqkg", model.value().get(0).replication().location()); + Assertions.assertFalse(model.value().get(0).replication().enabled()); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceListUsagesResultTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceListUsagesResultTests.java index 606d57e1a4bc..c1a080838866 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceListUsagesResultTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceListUsagesResultTests.java @@ -16,45 +16,51 @@ public final class WorkspaceListUsagesResultTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { WorkspaceListUsagesResult model = BinaryData.fromString( - "{\"value\":[{\"name\":{\"value\":\"ibycno\",\"localizedValue\":\"knme\"},\"unit\":\"sgzvahapjyzhpv\",\"currentValue\":87.25675780401417,\"limit\":55.97471576867415,\"nextResetTime\":\"2021-04-03T19:52:37Z\",\"quotaPeriod\":\"zlmwlxkvugfhz\"},{\"name\":{\"value\":\"wjvzunluthnn\",\"localizedValue\":\"nxipeil\"},\"unit\":\"zuaejxd\",\"currentValue\":90.33601925524867,\"limit\":73.93279017728112,\"nextResetTime\":\"2021-04-25T18:40:13Z\",\"quotaPeriod\":\"zumveekgpwo\"},{\"name\":{\"value\":\"kfpbs\",\"localizedValue\":\"ofd\"},\"unit\":\"uusdttouwa\",\"currentValue\":45.35057543626068,\"limit\":0.5889681397022062,\"nextResetTime\":\"2021-03-07T10:01:38Z\",\"quotaPeriod\":\"smv\"}]}") + "{\"value\":[{\"name\":{\"value\":\"zrnw\",\"localizedValue\":\"indfpwpjyl\"},\"unit\":\"tlhflsjcdhszf\",\"currentValue\":93.507310013303,\"limit\":23.397589490400428,\"nextResetTime\":\"2021-12-07T09:36:22Z\",\"quotaPeriod\":\"a\"},{\"name\":{\"value\":\"mqhldvrii\",\"localizedValue\":\"jnalghf\"},\"unit\":\"tvsexsowuel\",\"currentValue\":95.82653467641371,\"limit\":72.21038300276933,\"nextResetTime\":\"2021-10-26T13:34:39Z\",\"quotaPeriod\":\"hmzk\"},{\"name\":{\"value\":\"g\",\"localizedValue\":\"spughftqsxhq\"},\"unit\":\"j\",\"currentValue\":65.12505098321063,\"limit\":37.6190498251855,\"nextResetTime\":\"2021-06-03T19:27:08Z\",\"quotaPeriod\":\"jguufzdm\"},{\"name\":{\"value\":\"tfih\",\"localizedValue\":\"botzingamvppho\"},\"unit\":\"qzudphq\",\"currentValue\":82.02103115304786,\"limit\":77.5366363877876,\"nextResetTime\":\"2021-09-19T17:28Z\",\"quotaPeriod\":\"cvtbv\"}]}") .toObject(WorkspaceListUsagesResult.class); - Assertions.assertEquals("ibycno", model.value().get(0).name().value()); - Assertions.assertEquals("knme", model.value().get(0).name().localizedValue()); - Assertions.assertEquals("sgzvahapjyzhpv", model.value().get(0).unit()); - Assertions.assertEquals(87.25675780401417D, model.value().get(0).currentValue()); - Assertions.assertEquals(55.97471576867415D, model.value().get(0).limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-04-03T19:52:37Z"), model.value().get(0).nextResetTime()); - Assertions.assertEquals("zlmwlxkvugfhz", model.value().get(0).quotaPeriod()); + Assertions.assertEquals("zrnw", model.value().get(0).name().value()); + Assertions.assertEquals("indfpwpjyl", model.value().get(0).name().localizedValue()); + Assertions.assertEquals("tlhflsjcdhszf", model.value().get(0).unit()); + Assertions.assertEquals(93.507310013303D, model.value().get(0).currentValue()); + Assertions.assertEquals(23.397589490400428D, model.value().get(0).limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-12-07T09:36:22Z"), model.value().get(0).nextResetTime()); + Assertions.assertEquals("a", model.value().get(0).quotaPeriod()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { WorkspaceListUsagesResult model = new WorkspaceListUsagesResult().withValue(Arrays.asList( - new UsageMetricInner().withName(new MetricName().withValue("ibycno").withLocalizedValue("knme")) - .withUnit("sgzvahapjyzhpv") - .withCurrentValue(87.25675780401417D) - .withLimit(55.97471576867415D) - .withNextResetTime(OffsetDateTime.parse("2021-04-03T19:52:37Z")) - .withQuotaPeriod("zlmwlxkvugfhz"), - new UsageMetricInner().withName(new MetricName().withValue("wjvzunluthnn").withLocalizedValue("nxipeil")) - .withUnit("zuaejxd") - .withCurrentValue(90.33601925524867D) - .withLimit(73.93279017728112D) - .withNextResetTime(OffsetDateTime.parse("2021-04-25T18:40:13Z")) - .withQuotaPeriod("zumveekgpwo"), - new UsageMetricInner().withName(new MetricName().withValue("kfpbs").withLocalizedValue("ofd")) - .withUnit("uusdttouwa") - .withCurrentValue(45.35057543626068D) - .withLimit(0.5889681397022062D) - .withNextResetTime(OffsetDateTime.parse("2021-03-07T10:01:38Z")) - .withQuotaPeriod("smv"))); + new UsageMetricInner().withName(new MetricName().withValue("zrnw").withLocalizedValue("indfpwpjyl")) + .withUnit("tlhflsjcdhszf") + .withCurrentValue(93.507310013303D) + .withLimit(23.397589490400428D) + .withNextResetTime(OffsetDateTime.parse("2021-12-07T09:36:22Z")) + .withQuotaPeriod("a"), + new UsageMetricInner().withName(new MetricName().withValue("mqhldvrii").withLocalizedValue("jnalghf")) + .withUnit("tvsexsowuel") + .withCurrentValue(95.82653467641371D) + .withLimit(72.21038300276933D) + .withNextResetTime(OffsetDateTime.parse("2021-10-26T13:34:39Z")) + .withQuotaPeriod("hmzk"), + new UsageMetricInner().withName(new MetricName().withValue("g").withLocalizedValue("spughftqsxhq")) + .withUnit("j") + .withCurrentValue(65.12505098321063D) + .withLimit(37.6190498251855D) + .withNextResetTime(OffsetDateTime.parse("2021-06-03T19:27:08Z")) + .withQuotaPeriod("jguufzdm"), + new UsageMetricInner().withName(new MetricName().withValue("tfih").withLocalizedValue("botzingamvppho")) + .withUnit("qzudphq") + .withCurrentValue(82.02103115304786D) + .withLimit(77.5366363877876D) + .withNextResetTime(OffsetDateTime.parse("2021-09-19T17:28Z")) + .withQuotaPeriod("cvtbv"))); model = BinaryData.fromObject(model).toObject(WorkspaceListUsagesResult.class); - Assertions.assertEquals("ibycno", model.value().get(0).name().value()); - Assertions.assertEquals("knme", model.value().get(0).name().localizedValue()); - Assertions.assertEquals("sgzvahapjyzhpv", model.value().get(0).unit()); - Assertions.assertEquals(87.25675780401417D, model.value().get(0).currentValue()); - Assertions.assertEquals(55.97471576867415D, model.value().get(0).limit()); - Assertions.assertEquals(OffsetDateTime.parse("2021-04-03T19:52:37Z"), model.value().get(0).nextResetTime()); - Assertions.assertEquals("zlmwlxkvugfhz", model.value().get(0).quotaPeriod()); + Assertions.assertEquals("zrnw", model.value().get(0).name().value()); + Assertions.assertEquals("indfpwpjyl", model.value().get(0).name().localizedValue()); + Assertions.assertEquals("tlhflsjcdhszf", model.value().get(0).unit()); + Assertions.assertEquals(93.507310013303D, model.value().get(0).currentValue()); + Assertions.assertEquals(23.397589490400428D, model.value().get(0).limit()); + Assertions.assertEquals(OffsetDateTime.parse("2021-12-07T09:36:22Z"), model.value().get(0).nextResetTime()); + Assertions.assertEquals("a", model.value().get(0).quotaPeriod()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePatchTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePatchTests.java index 8ceab0bfee2f..84df62623801 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePatchTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePatchTests.java @@ -5,14 +5,17 @@ package com.azure.resourcemanager.loganalytics.generated; import com.azure.core.util.BinaryData; -import com.azure.resourcemanager.loganalytics.models.CapacityReservationLevel; +import com.azure.core.util.serializer.JacksonAdapter; +import com.azure.core.util.serializer.SerializerEncoding; import com.azure.resourcemanager.loganalytics.models.Identity; import com.azure.resourcemanager.loganalytics.models.IdentityType; import com.azure.resourcemanager.loganalytics.models.PublicNetworkAccessType; import com.azure.resourcemanager.loganalytics.models.UserIdentityProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceCapping; +import com.azure.resourcemanager.loganalytics.models.WorkspaceFailoverProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceFeatures; import com.azure.resourcemanager.loganalytics.models.WorkspacePatch; +import com.azure.resourcemanager.loganalytics.models.WorkspaceReplicationProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceSku; import com.azure.resourcemanager.loganalytics.models.WorkspaceSkuNameEnum; import java.util.HashMap; @@ -23,62 +26,70 @@ public final class WorkspacePatchTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { WorkspacePatch model = BinaryData.fromString( - "{\"properties\":{\"provisioningState\":\"Updating\",\"customerId\":\"gg\",\"sku\":{\"name\":\"Free\",\"capacityReservationLevel\":1000,\"lastSkuUpdate\":\"ovvtgseinqfiu\"},\"retentionInDays\":846707727,\"workspaceCapping\":{\"dailyQuotaGb\":67.63985202806066,\"quotaNextResetTime\":\"gnepttwqmsni\",\"dataIngestionStatus\":\"OverQuota\"},\"createdDate\":\"mqnrojlpijnkr\",\"modifiedDate\":\"rddh\",\"publicNetworkAccessForIngestion\":\"Enabled\",\"publicNetworkAccessForQuery\":\"Disabled\",\"forceCmkForQuery\":true,\"privateLinkScopedResources\":[{\"resourceId\":\"asxifto\",\"scopeId\":\"yzhftwesgogczh\"},{\"resourceId\":\"nxkrlgnyhmossxkk\",\"scopeId\":\"h\"},{\"resourceId\":\"gh\",\"scopeId\":\"bdhqxvcxgf\"}],\"features\":{\"enableDataExport\":false,\"immediatePurgeDataOn30Days\":true,\"enableLogAccessUsingOnlyResourcePermissions\":true,\"clusterResourceId\":\"rnsvbuswd\",\"disableLocalAuth\":false,\"\":{\"awnopqgikyzirtxd\":\"dataycnunvjsrtk\",\"ioilqukrydxtq\":\"datauxzejntpsew\",\"ghhavgrvkffo\":\"dataieoxorggufhyaomt\",\"mv\":\"datajzhpjbibgjmfx\"}},\"defaultDataCollectionRuleResourceId\":\"luyovwxnbkfezzx\"},\"identity\":{\"principalId\":\"hwzdgirujbz\",\"tenantId\":\"mvzzbtdcqvp\",\"type\":\"SystemAssigned\",\"userAssignedIdentities\":{\"cotmr\":{\"principalId\":\"viylwdshfssnrbgy\",\"clientId\":\"rymsgaojfmw\"},\"cpqjlihhyu\":{\"principalId\":\"irctymoxoftpipiw\",\"clientId\":\"zuhx\"},\"rsre\":{\"principalId\":\"skasdvlmfwdgzxu\",\"clientId\":\"cvpa\"}}},\"tags\":{\"ifqjz\":\"xurisjnhnyt\",\"lw\":\"xmrhu\",\"woqhihe\":\"cesutrgjupauut\",\"zpnfqntcypsxj\":\"qg\"},\"etag\":\"oimwkslirc\",\"id\":\"zjxvydfcea\",\"name\":\"vlhv\",\"type\":\"gdyftumrtwna\"}") + "{\"properties\":{\"provisioningState\":\"Updating\",\"customerId\":\"zlrphwzs\",\"sku\":{\"name\":\"PerGB2018\",\"capacityReservationLevel\":1354895276,\"lastSkuUpdate\":\"2021-05-13T15:08:20Z\"},\"retentionInDays\":2112519300,\"workspaceCapping\":{\"dailyQuotaGb\":34.97869271736046,\"quotaNextResetTime\":\"nrwrbiork\",\"dataIngestionStatus\":\"RespectQuota\"},\"createdDate\":\"2021-03-04T00:16:10Z\",\"modifiedDate\":\"2021-04-15T08:16:25Z\",\"publicNetworkAccessForIngestion\":\"SecuredByPerimeter\",\"publicNetworkAccessForQuery\":\"Enabled\",\"forceCmkForQuery\":true,\"privateLinkScopedResources\":[{\"resourceId\":\"v\",\"scopeId\":\"miloxggdufiqndie\"},{\"resourceId\":\"ao\",\"scopeId\":\"chvcyyysfgdo\"},{\"resourceId\":\"ubiipuipwoqonma\",\"scopeId\":\"ekni\"}],\"features\":{\"enableDataExport\":false,\"immediatePurgeDataOn30Days\":false,\"enableLogAccessUsingOnlyResourcePermissions\":false,\"clusterResourceId\":\"ev\",\"disableLocalAuth\":true,\"unifiedSentinelBillingOnly\":false,\"associations\":[\"ilbywdxsm\",\"ccwr\"],\"n\":\"datacj\",\"voqyt\":\"datanszqujiz\"},\"defaultDataCollectionRuleResourceId\":\"yo\",\"replication\":{\"location\":\"lgy\",\"enabled\":false,\"provisioningState\":\"Failed\",\"createdDate\":\"2021-06-15T10:26:37Z\",\"lastModifiedDate\":\"2021-11-07T15:05:03Z\"},\"failover\":{\"state\":\"Failed\",\"lastModifiedDate\":\"2021-01-31T04:26:46Z\"}},\"identity\":{\"principalId\":\"sbpimlq\",\"tenantId\":\"jxkcgxxlxsff\",\"type\":\"None\",\"userAssignedIdentities\":{\"sgow\":{\"principalId\":\"qzdwlvwlyoup\",\"clientId\":\"fbkjubdyhgkfmi\"},\"tg\":{\"principalId\":\"ttsttktlahbqact\",\"clientId\":\"gzukxitmm\"},\"isavok\":{\"principalId\":\"q\",\"clientId\":\"rnxrxcpj\"},\"rqttbajlkatnw\":{\"principalId\":\"zfvazi\",\"clientId\":\"l\"}}},\"tags\":{\"cxkdmligovi\":\"opidkqqfkuv\",\"goorbteo\":\"rxkpmloazuruoc\"},\"etag\":\"fhjxakvvjgs\",\"id\":\"ordilmywwtkgkxny\",\"name\":\"dabg\",\"type\":\"vudtjuewbcihx\"}") .toObject(WorkspacePatch.class); - Assertions.assertEquals(IdentityType.SYSTEM_ASSIGNED, model.identity().type()); - Assertions.assertEquals("xurisjnhnyt", model.tags().get("ifqjz")); - Assertions.assertEquals(WorkspaceSkuNameEnum.FREE, model.sku().name()); - Assertions.assertEquals(CapacityReservationLevel.ONE_ZERO_ZERO_ZERO, model.sku().capacityReservationLevel()); - Assertions.assertEquals(846707727, model.retentionInDays()); - Assertions.assertEquals(67.63985202806066D, model.workspaceCapping().dailyQuotaGb()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, model.publicNetworkAccessForIngestion()); - Assertions.assertEquals(PublicNetworkAccessType.DISABLED, model.publicNetworkAccessForQuery()); - Assertions.assertEquals(true, model.forceCmkForQuery()); - Assertions.assertEquals(false, model.features().enableDataExport()); - Assertions.assertEquals(true, model.features().immediatePurgeDataOn30Days()); - Assertions.assertEquals(true, model.features().enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("rnsvbuswd", model.features().clusterResourceId()); - Assertions.assertEquals(false, model.features().disableLocalAuth()); - Assertions.assertEquals("luyovwxnbkfezzx", model.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals(IdentityType.NONE, model.identity().type()); + Assertions.assertEquals("opidkqqfkuv", model.tags().get("cxkdmligovi")); + Assertions.assertEquals(WorkspaceSkuNameEnum.PER_GB2018, model.sku().name()); + Assertions.assertEquals(1354895276, model.sku().capacityReservationLevel()); + Assertions.assertEquals(2112519300, model.retentionInDays()); + Assertions.assertEquals(34.97869271736046D, model.workspaceCapping().dailyQuotaGb()); + Assertions.assertEquals(PublicNetworkAccessType.SECURED_BY_PERIMETER, model.publicNetworkAccessForIngestion()); + Assertions.assertEquals(PublicNetworkAccessType.ENABLED, model.publicNetworkAccessForQuery()); + Assertions.assertTrue(model.forceCmkForQuery()); + Assertions.assertFalse(model.features().enableDataExport()); + Assertions.assertFalse(model.features().immediatePurgeDataOn30Days()); + Assertions.assertFalse(model.features().enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("ev", model.features().clusterResourceId()); + Assertions.assertTrue(model.features().disableLocalAuth()); + Assertions.assertEquals("yo", model.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("lgy", model.replication().location()); + Assertions.assertFalse(model.replication().enabled()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - WorkspacePatch model = new WorkspacePatch() - .withIdentity(new Identity().withType(IdentityType.SYSTEM_ASSIGNED) - .withUserAssignedIdentities(mapOf("cotmr", new UserIdentityProperties(), "cpqjlihhyu", - new UserIdentityProperties(), "rsre", new UserIdentityProperties()))) - .withTags(mapOf("ifqjz", "xurisjnhnyt", "lw", "xmrhu", "woqhihe", "cesutrgjupauut", "zpnfqntcypsxj", "qg")) - .withSku(new WorkspaceSku().withName(WorkspaceSkuNameEnum.FREE) - .withCapacityReservationLevel(CapacityReservationLevel.ONE_ZERO_ZERO_ZERO)) - .withRetentionInDays(846707727) - .withWorkspaceCapping(new WorkspaceCapping().withDailyQuotaGb(67.63985202806066D)) - .withPublicNetworkAccessForIngestion(PublicNetworkAccessType.ENABLED) - .withPublicNetworkAccessForQuery(PublicNetworkAccessType.DISABLED) + WorkspacePatch model = new WorkspacePatch().withIdentity(new Identity().withType(IdentityType.NONE) + .withUserAssignedIdentities(mapOf("sgow", new UserIdentityProperties(), "tg", new UserIdentityProperties(), + "isavok", new UserIdentityProperties(), "rqttbajlkatnw", new UserIdentityProperties()))) + .withTags(mapOf("cxkdmligovi", "opidkqqfkuv", "goorbteo", "rxkpmloazuruoc")) + .withSku( + new WorkspaceSku().withName(WorkspaceSkuNameEnum.PER_GB2018).withCapacityReservationLevel(1354895276)) + .withRetentionInDays(2112519300) + .withWorkspaceCapping(new WorkspaceCapping().withDailyQuotaGb(34.97869271736046D)) + .withPublicNetworkAccessForIngestion(PublicNetworkAccessType.SECURED_BY_PERIMETER) + .withPublicNetworkAccessForQuery(PublicNetworkAccessType.ENABLED) .withForceCmkForQuery(true) .withFeatures(new WorkspaceFeatures().withEnableDataExport(false) - .withImmediatePurgeDataOn30Days(true) - .withEnableLogAccessUsingOnlyResourcePermissions(true) - .withClusterResourceId("rnsvbuswd") - .withDisableLocalAuth(false) - .withAdditionalProperties(mapOf())) - .withDefaultDataCollectionRuleResourceId("luyovwxnbkfezzx"); + .withImmediatePurgeDataOn30Days(false) + .withEnableLogAccessUsingOnlyResourcePermissions(false) + .withClusterResourceId("ev") + .withDisableLocalAuth(true) + .withAdditionalProperties(mapOf("associations", + JacksonAdapter.createDefaultSerializerAdapter() + .deserialize("[\"ilbywdxsm\",\"ccwr\"]", Object.class, SerializerEncoding.JSON), + "voqyt", "datanszqujiz", "unifiedSentinelBillingOnly", false, "n", "datacj"))) + .withDefaultDataCollectionRuleResourceId("yo") + .withReplication(new WorkspaceReplicationProperties().withLocation("lgy").withEnabled(false)) + .withFailover(new WorkspaceFailoverProperties()); model = BinaryData.fromObject(model).toObject(WorkspacePatch.class); - Assertions.assertEquals(IdentityType.SYSTEM_ASSIGNED, model.identity().type()); - Assertions.assertEquals("xurisjnhnyt", model.tags().get("ifqjz")); - Assertions.assertEquals(WorkspaceSkuNameEnum.FREE, model.sku().name()); - Assertions.assertEquals(CapacityReservationLevel.ONE_ZERO_ZERO_ZERO, model.sku().capacityReservationLevel()); - Assertions.assertEquals(846707727, model.retentionInDays()); - Assertions.assertEquals(67.63985202806066D, model.workspaceCapping().dailyQuotaGb()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, model.publicNetworkAccessForIngestion()); - Assertions.assertEquals(PublicNetworkAccessType.DISABLED, model.publicNetworkAccessForQuery()); - Assertions.assertEquals(true, model.forceCmkForQuery()); - Assertions.assertEquals(false, model.features().enableDataExport()); - Assertions.assertEquals(true, model.features().immediatePurgeDataOn30Days()); - Assertions.assertEquals(true, model.features().enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("rnsvbuswd", model.features().clusterResourceId()); - Assertions.assertEquals(false, model.features().disableLocalAuth()); - Assertions.assertEquals("luyovwxnbkfezzx", model.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals(IdentityType.NONE, model.identity().type()); + Assertions.assertEquals("opidkqqfkuv", model.tags().get("cxkdmligovi")); + Assertions.assertEquals(WorkspaceSkuNameEnum.PER_GB2018, model.sku().name()); + Assertions.assertEquals(1354895276, model.sku().capacityReservationLevel()); + Assertions.assertEquals(2112519300, model.retentionInDays()); + Assertions.assertEquals(34.97869271736046D, model.workspaceCapping().dailyQuotaGb()); + Assertions.assertEquals(PublicNetworkAccessType.SECURED_BY_PERIMETER, model.publicNetworkAccessForIngestion()); + Assertions.assertEquals(PublicNetworkAccessType.ENABLED, model.publicNetworkAccessForQuery()); + Assertions.assertTrue(model.forceCmkForQuery()); + Assertions.assertFalse(model.features().enableDataExport()); + Assertions.assertFalse(model.features().immediatePurgeDataOn30Days()); + Assertions.assertFalse(model.features().enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("ev", model.features().clusterResourceId()); + Assertions.assertTrue(model.features().disableLocalAuth()); + Assertions.assertEquals("yo", model.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("lgy", model.replication().location()); + Assertions.assertFalse(model.replication().enabled()); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePropertiesTests.java index 760774d464ae..74c47ce168c6 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePropertiesTests.java @@ -5,11 +5,14 @@ package com.azure.resourcemanager.loganalytics.generated; import com.azure.core.util.BinaryData; +import com.azure.core.util.serializer.JacksonAdapter; +import com.azure.core.util.serializer.SerializerEncoding; import com.azure.resourcemanager.loganalytics.fluent.models.WorkspaceProperties; -import com.azure.resourcemanager.loganalytics.models.CapacityReservationLevel; import com.azure.resourcemanager.loganalytics.models.PublicNetworkAccessType; import com.azure.resourcemanager.loganalytics.models.WorkspaceCapping; +import com.azure.resourcemanager.loganalytics.models.WorkspaceFailoverProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceFeatures; +import com.azure.resourcemanager.loganalytics.models.WorkspaceReplicationProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceSku; import com.azure.resourcemanager.loganalytics.models.WorkspaceSkuNameEnum; import java.util.HashMap; @@ -20,54 +23,63 @@ public final class WorkspacePropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { WorkspaceProperties model = BinaryData.fromString( - "{\"provisioningState\":\"ProvisioningAccount\",\"customerId\":\"ijnhyjsvfycxzbf\",\"sku\":{\"name\":\"LACluster\",\"capacityReservationLevel\":2000,\"lastSkuUpdate\":\"vmtgjqppy\"},\"retentionInDays\":768184156,\"workspaceCapping\":{\"dailyQuotaGb\":15.525265144439715,\"quotaNextResetTime\":\"yhgfipnsx\",\"dataIngestionStatus\":\"ForceOff\"},\"createdDate\":\"a\",\"modifiedDate\":\"rrjreafxtsgu\",\"publicNetworkAccessForIngestion\":\"Disabled\",\"publicNetworkAccessForQuery\":\"Enabled\",\"forceCmkForQuery\":false,\"privateLinkScopedResources\":[{\"resourceId\":\"slol\",\"scopeId\":\"pvuzlmv\"},{\"resourceId\":\"lfktgplcrpwjxe\",\"scopeId\":\"oi\"},{\"resourceId\":\"rnjwmw\",\"scopeId\":\"nbsazejjoqkag\"}],\"features\":{\"enableDataExport\":true,\"immediatePurgeDataOn30Days\":true,\"enableLogAccessUsingOnlyResourcePermissions\":false,\"clusterResourceId\":\"zxnfaaz\",\"disableLocalAuth\":false,\"\":{\"ou\":\"datakdmkqjjlwuenvrkp\"}},\"defaultDataCollectionRuleResourceId\":\"bre\"}") + "{\"provisioningState\":\"Deleting\",\"customerId\":\"v\",\"sku\":{\"name\":\"PerNode\",\"capacityReservationLevel\":1036527354,\"lastSkuUpdate\":\"2021-03-30T03:00:35Z\"},\"retentionInDays\":1960555856,\"workspaceCapping\":{\"dailyQuotaGb\":74.87413920302748,\"quotaNextResetTime\":\"uljltduceamtmcz\",\"dataIngestionStatus\":\"RespectQuota\"},\"createdDate\":\"2021-10-02T15:37:14Z\",\"modifiedDate\":\"2021-01-27T20:06:14Z\",\"publicNetworkAccessForIngestion\":\"SecuredByPerimeter\",\"publicNetworkAccessForQuery\":\"Disabled\",\"forceCmkForQuery\":true,\"privateLinkScopedResources\":[{\"resourceId\":\"xmojmsvpkjp\",\"scopeId\":\"kwcf\"},{\"resourceId\":\"ljyxgtczhe\",\"scopeId\":\"bsdshmkxmaehvbbx\"}],\"features\":{\"enableDataExport\":true,\"immediatePurgeDataOn30Days\":true,\"enableLogAccessUsingOnlyResourcePermissions\":false,\"clusterResourceId\":\"tbaxk\",\"disableLocalAuth\":false,\"unifiedSentinelBillingOnly\":false,\"associations\":[\"pyklyhpluodpvru\",\"dlgzibthostgkt\"],\"lhpl\":\"datadxeclzedqbcvh\",\"lkxt\":\"datadqkdlwwqfbu\"},\"defaultDataCollectionRuleResourceId\":\"jfsmlmbtxhwgfwsr\",\"replication\":{\"location\":\"coezbrhubskh\",\"enabled\":false,\"provisioningState\":\"Succeeded\",\"createdDate\":\"2021-02-04T04:44:46Z\",\"lastModifiedDate\":\"2021-10-06T17:04:50Z\"},\"failover\":{\"state\":\"Failed\",\"lastModifiedDate\":\"2021-07-12T13:05:01Z\"}}") .toObject(WorkspaceProperties.class); - Assertions.assertEquals(WorkspaceSkuNameEnum.LACLUSTER, model.sku().name()); - Assertions.assertEquals(CapacityReservationLevel.TWO_ZERO_ZERO_ZERO, model.sku().capacityReservationLevel()); - Assertions.assertEquals(768184156, model.retentionInDays()); - Assertions.assertEquals(15.525265144439715D, model.workspaceCapping().dailyQuotaGb()); - Assertions.assertEquals(PublicNetworkAccessType.DISABLED, model.publicNetworkAccessForIngestion()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, model.publicNetworkAccessForQuery()); - Assertions.assertEquals(false, model.forceCmkForQuery()); - Assertions.assertEquals(true, model.features().enableDataExport()); - Assertions.assertEquals(true, model.features().immediatePurgeDataOn30Days()); - Assertions.assertEquals(false, model.features().enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("zxnfaaz", model.features().clusterResourceId()); - Assertions.assertEquals(false, model.features().disableLocalAuth()); - Assertions.assertEquals("bre", model.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals(WorkspaceSkuNameEnum.PER_NODE, model.sku().name()); + Assertions.assertEquals(1036527354, model.sku().capacityReservationLevel()); + Assertions.assertEquals(1960555856, model.retentionInDays()); + Assertions.assertEquals(74.87413920302748D, model.workspaceCapping().dailyQuotaGb()); + Assertions.assertEquals(PublicNetworkAccessType.SECURED_BY_PERIMETER, model.publicNetworkAccessForIngestion()); + Assertions.assertEquals(PublicNetworkAccessType.DISABLED, model.publicNetworkAccessForQuery()); + Assertions.assertTrue(model.forceCmkForQuery()); + Assertions.assertTrue(model.features().enableDataExport()); + Assertions.assertTrue(model.features().immediatePurgeDataOn30Days()); + Assertions.assertFalse(model.features().enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("tbaxk", model.features().clusterResourceId()); + Assertions.assertFalse(model.features().disableLocalAuth()); + Assertions.assertEquals("jfsmlmbtxhwgfwsr", model.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("coezbrhubskh", model.replication().location()); + Assertions.assertFalse(model.replication().enabled()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - WorkspaceProperties model = new WorkspaceProperties() - .withSku(new WorkspaceSku().withName(WorkspaceSkuNameEnum.LACLUSTER) - .withCapacityReservationLevel(CapacityReservationLevel.TWO_ZERO_ZERO_ZERO)) - .withRetentionInDays(768184156) - .withWorkspaceCapping(new WorkspaceCapping().withDailyQuotaGb(15.525265144439715D)) - .withPublicNetworkAccessForIngestion(PublicNetworkAccessType.DISABLED) - .withPublicNetworkAccessForQuery(PublicNetworkAccessType.ENABLED) - .withForceCmkForQuery(false) - .withFeatures(new WorkspaceFeatures().withEnableDataExport(true) - .withImmediatePurgeDataOn30Days(true) - .withEnableLogAccessUsingOnlyResourcePermissions(false) - .withClusterResourceId("zxnfaaz") - .withDisableLocalAuth(false) - .withAdditionalProperties(mapOf())) - .withDefaultDataCollectionRuleResourceId("bre"); + WorkspaceProperties model + = new WorkspaceProperties() + .withSku( + new WorkspaceSku().withName(WorkspaceSkuNameEnum.PER_NODE).withCapacityReservationLevel(1036527354)) + .withRetentionInDays(1960555856) + .withWorkspaceCapping(new WorkspaceCapping().withDailyQuotaGb(74.87413920302748D)) + .withPublicNetworkAccessForIngestion(PublicNetworkAccessType.SECURED_BY_PERIMETER) + .withPublicNetworkAccessForQuery(PublicNetworkAccessType.DISABLED) + .withForceCmkForQuery(true) + .withFeatures(new WorkspaceFeatures().withEnableDataExport(true) + .withImmediatePurgeDataOn30Days(true) + .withEnableLogAccessUsingOnlyResourcePermissions(false) + .withClusterResourceId("tbaxk") + .withDisableLocalAuth(false) + .withAdditionalProperties(mapOf("associations", JacksonAdapter.createDefaultSerializerAdapter() + .deserialize("[\"pyklyhpluodpvru\",\"dlgzibthostgkt\"]", Object.class, SerializerEncoding.JSON), + "lkxt", "datadqkdlwwqfbu", "lhpl", "datadxeclzedqbcvh", "unifiedSentinelBillingOnly", false))) + .withDefaultDataCollectionRuleResourceId("jfsmlmbtxhwgfwsr") + .withReplication(new WorkspaceReplicationProperties().withLocation("coezbrhubskh").withEnabled(false)) + .withFailover(new WorkspaceFailoverProperties()); model = BinaryData.fromObject(model).toObject(WorkspaceProperties.class); - Assertions.assertEquals(WorkspaceSkuNameEnum.LACLUSTER, model.sku().name()); - Assertions.assertEquals(CapacityReservationLevel.TWO_ZERO_ZERO_ZERO, model.sku().capacityReservationLevel()); - Assertions.assertEquals(768184156, model.retentionInDays()); - Assertions.assertEquals(15.525265144439715D, model.workspaceCapping().dailyQuotaGb()); - Assertions.assertEquals(PublicNetworkAccessType.DISABLED, model.publicNetworkAccessForIngestion()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, model.publicNetworkAccessForQuery()); - Assertions.assertEquals(false, model.forceCmkForQuery()); - Assertions.assertEquals(true, model.features().enableDataExport()); - Assertions.assertEquals(true, model.features().immediatePurgeDataOn30Days()); - Assertions.assertEquals(false, model.features().enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("zxnfaaz", model.features().clusterResourceId()); - Assertions.assertEquals(false, model.features().disableLocalAuth()); - Assertions.assertEquals("bre", model.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals(WorkspaceSkuNameEnum.PER_NODE, model.sku().name()); + Assertions.assertEquals(1036527354, model.sku().capacityReservationLevel()); + Assertions.assertEquals(1960555856, model.retentionInDays()); + Assertions.assertEquals(74.87413920302748D, model.workspaceCapping().dailyQuotaGb()); + Assertions.assertEquals(PublicNetworkAccessType.SECURED_BY_PERIMETER, model.publicNetworkAccessForIngestion()); + Assertions.assertEquals(PublicNetworkAccessType.DISABLED, model.publicNetworkAccessForQuery()); + Assertions.assertTrue(model.forceCmkForQuery()); + Assertions.assertTrue(model.features().enableDataExport()); + Assertions.assertTrue(model.features().immediatePurgeDataOn30Days()); + Assertions.assertFalse(model.features().enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("tbaxk", model.features().clusterResourceId()); + Assertions.assertFalse(model.features().disableLocalAuth()); + Assertions.assertEquals("jfsmlmbtxhwgfwsr", model.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("coezbrhubskh", model.replication().location()); + Assertions.assertFalse(model.replication().enabled()); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgeResponseInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgeResponseInnerTests.java index 723b5faea071..008eb5ecd653 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgeResponseInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgeResponseInnerTests.java @@ -12,14 +12,14 @@ public final class WorkspacePurgeResponseInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { WorkspacePurgeResponseInner model - = BinaryData.fromString("{\"operationId\":\"hky\"}").toObject(WorkspacePurgeResponseInner.class); - Assertions.assertEquals("hky", model.operationId()); + = BinaryData.fromString("{\"operationId\":\"y\"}").toObject(WorkspacePurgeResponseInner.class); + Assertions.assertEquals("y", model.operationId()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - WorkspacePurgeResponseInner model = new WorkspacePurgeResponseInner().withOperationId("hky"); + WorkspacePurgeResponseInner model = new WorkspacePurgeResponseInner().withOperationId("y"); model = BinaryData.fromObject(model).toObject(WorkspacePurgeResponseInner.class); - Assertions.assertEquals("hky", model.operationId()); + Assertions.assertEquals("y", model.operationId()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgesGetPurgeStatusWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgesGetPurgeStatusWithResponseMockTests.java index 3eddddd1f728..288fa7fc2f5e 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgesGetPurgeStatusWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacePurgesGetPurgeStatusWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import com.azure.resourcemanager.loganalytics.models.PurgeState; @@ -28,10 +28,10 @@ public void testGetPurgeStatusWithResponse() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); WorkspacePurgeStatusResponse response = manager.workspacePurges() - .getPurgeStatusWithResponse("yrrleaesinuqt", "jqo", "bpihehcecybmrqbr", com.azure.core.util.Context.NONE) + .getPurgeStatusWithResponse("osewxi", "pxvkqma", "pxvpifdfaif", com.azure.core.util.Context.NONE) .getValue(); Assertions.assertEquals(PurgeState.COMPLETED, response.status()); diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceReplicationPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceReplicationPropertiesTests.java new file mode 100644 index 000000000000..8c4ef48a1d39 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceReplicationPropertiesTests.java @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.loganalytics.models.WorkspaceReplicationProperties; +import org.junit.jupiter.api.Assertions; + +public final class WorkspaceReplicationPropertiesTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + WorkspaceReplicationProperties model = BinaryData.fromString( + "{\"location\":\"uaadraufactkahzo\",\"enabled\":true,\"provisioningState\":\"Canceled\",\"createdDate\":\"2021-03-14T01:25:46Z\",\"lastModifiedDate\":\"2021-02-20T11:59:59Z\"}") + .toObject(WorkspaceReplicationProperties.class); + Assertions.assertEquals("uaadraufactkahzo", model.location()); + Assertions.assertTrue(model.enabled()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + WorkspaceReplicationProperties model + = new WorkspaceReplicationProperties().withLocation("uaadraufactkahzo").withEnabled(true); + model = BinaryData.fromObject(model).toObject(WorkspaceReplicationProperties.class); + Assertions.assertEquals("uaadraufactkahzo", model.location()); + Assertions.assertTrue(model.enabled()); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceSkuTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceSkuTests.java index 0702c7e26406..6fc300fc797b 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceSkuTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspaceSkuTests.java @@ -5,7 +5,6 @@ package com.azure.resourcemanager.loganalytics.generated; import com.azure.core.util.BinaryData; -import com.azure.resourcemanager.loganalytics.models.CapacityReservationLevel; import com.azure.resourcemanager.loganalytics.models.WorkspaceSku; import com.azure.resourcemanager.loganalytics.models.WorkspaceSkuNameEnum; import org.junit.jupiter.api.Assertions; @@ -13,19 +12,19 @@ public final class WorkspaceSkuTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - WorkspaceSku model = BinaryData - .fromString("{\"name\":\"Standalone\",\"capacityReservationLevel\":5000,\"lastSkuUpdate\":\"sj\"}") + WorkspaceSku model = BinaryData.fromString( + "{\"name\":\"CapacityReservation\",\"capacityReservationLevel\":173772181,\"lastSkuUpdate\":\"2020-12-31T22:39:11Z\"}") .toObject(WorkspaceSku.class); - Assertions.assertEquals(WorkspaceSkuNameEnum.STANDALONE, model.name()); - Assertions.assertEquals(CapacityReservationLevel.FIVE_ZERO_ZERO_ZERO, model.capacityReservationLevel()); + Assertions.assertEquals(WorkspaceSkuNameEnum.CAPACITY_RESERVATION, model.name()); + Assertions.assertEquals(173772181, model.capacityReservationLevel()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - WorkspaceSku model = new WorkspaceSku().withName(WorkspaceSkuNameEnum.STANDALONE) - .withCapacityReservationLevel(CapacityReservationLevel.FIVE_ZERO_ZERO_ZERO); + WorkspaceSku model = new WorkspaceSku().withName(WorkspaceSkuNameEnum.CAPACITY_RESERVATION) + .withCapacityReservationLevel(173772181); model = BinaryData.fromObject(model).toObject(WorkspaceSku.class); - Assertions.assertEquals(WorkspaceSkuNameEnum.STANDALONE, model.name()); - Assertions.assertEquals(CapacityReservationLevel.FIVE_ZERO_ZERO_ZERO, model.capacityReservationLevel()); + Assertions.assertEquals(WorkspaceSkuNameEnum.CAPACITY_RESERVATION, model.name()); + Assertions.assertEquals(173772181, model.capacityReservationLevel()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesCreateOrUpdateMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesCreateOrUpdateMockTests.java index be12e3190dd4..b94e3856b518 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesCreateOrUpdateMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesCreateOrUpdateMockTests.java @@ -6,18 +6,21 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.management.serializer.SerializerFactory; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; +import com.azure.core.util.serializer.SerializerEncoding; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; -import com.azure.resourcemanager.loganalytics.models.CapacityReservationLevel; import com.azure.resourcemanager.loganalytics.models.Identity; import com.azure.resourcemanager.loganalytics.models.IdentityType; import com.azure.resourcemanager.loganalytics.models.PublicNetworkAccessType; import com.azure.resourcemanager.loganalytics.models.UserIdentityProperties; import com.azure.resourcemanager.loganalytics.models.Workspace; import com.azure.resourcemanager.loganalytics.models.WorkspaceCapping; +import com.azure.resourcemanager.loganalytics.models.WorkspaceFailoverProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceFeatures; +import com.azure.resourcemanager.loganalytics.models.WorkspaceReplicationProperties; import com.azure.resourcemanager.loganalytics.models.WorkspaceSku; import com.azure.resourcemanager.loganalytics.models.WorkspaceSkuNameEnum; import java.nio.charset.StandardCharsets; @@ -32,56 +35,65 @@ public final class WorkspacesCreateOrUpdateMockTests { @Test public void testCreateOrUpdate() throws Exception { String responseStr - = "{\"properties\":{\"provisioningState\":\"Succeeded\",\"customerId\":\"ldtve\",\"sku\":{\"name\":\"Premium\",\"capacityReservationLevel\":100,\"lastSkuUpdate\":\"hzjkn\"},\"retentionInDays\":1633027384,\"workspaceCapping\":{\"dailyQuotaGb\":61.251523393969165,\"quotaNextResetTime\":\"pnrupzaamrdi\",\"dataIngestionStatus\":\"OverQuota\"},\"createdDate\":\"kidswys\",\"modifiedDate\":\"ruffgllukk\",\"publicNetworkAccessForIngestion\":\"Disabled\",\"publicNetworkAccessForQuery\":\"Enabled\",\"forceCmkForQuery\":false,\"privateLinkScopedResources\":[{\"resourceId\":\"vmblcouqe\",\"scopeId\":\"hbcdsziry\"},{\"resourceId\":\"ndo\",\"scopeId\":\"mbltoo\"},{\"resourceId\":\"kfqlwx\",\"scopeId\":\"ykalsyga\"}],\"features\":{\"enableDataExport\":true,\"immediatePurgeDataOn30Days\":true,\"enableLogAccessUsingOnlyResourcePermissions\":false,\"clusterResourceId\":\"jksibjg\",\"disableLocalAuth\":true,\"\":{\"pinbmhwbjijkgqxn\":\"dataahmrnadzyqegxyi\",\"znj\":\"datambk\",\"cwkdtaaw\":\"dataujvaannggi\",\"mqkra\":\"datawfekaumrrqmb\"}},\"defaultDataCollectionRuleResourceId\":\"nxwbjsidbirkfp\"},\"identity\":{\"principalId\":\"kd\",\"tenantId\":\"gewi\",\"type\":\"None\",\"userAssignedIdentities\":{\"o\":{\"principalId\":\"bguzozky\",\"clientId\":\"nfnzhhh\"},\"pyc\":{\"principalId\":\"ffjkutycyarnroo\",\"clientId\":\"uabzoghkt\"},\"zptwrlohap\":{\"principalId\":\"coe\",\"clientId\":\"nhzqrottjzcfy\"},\"xpjb\":{\"principalId\":\"nfszpyglqdhmrjz\",\"clientId\":\"l\"}}},\"systemData\":{\"createdBy\":\"sjoqcjenkyhfqzvs\",\"createdByType\":\"Application\",\"createdAt\":\"2021-08-22T03:48:47Z\",\"lastModifiedBy\":\"l\",\"lastModifiedByType\":\"ManagedIdentity\",\"lastModifiedAt\":\"2021-04-25T15:23:25Z\"},\"etag\":\"jhhhqxu\",\"location\":\"yvca\",\"tags\":{\"vbsizusjszlbscm\":\"v\"},\"id\":\"lzijiufehgmvflnw\",\"name\":\"v\",\"type\":\"kxrerlniylylyfwx\"}"; + = "{\"properties\":{\"provisioningState\":\"Succeeded\",\"customerId\":\"edenrexkxbhxv\",\"sku\":{\"name\":\"Standard\",\"capacityReservationLevel\":1049789640,\"lastSkuUpdate\":\"2021-02-13T23:06:36Z\"},\"retentionInDays\":1169492818,\"workspaceCapping\":{\"dailyQuotaGb\":33.579421975520674,\"quotaNextResetTime\":\"znfaj\",\"dataIngestionStatus\":\"ForceOn\"},\"createdDate\":\"2021-06-14T13:50:50Z\",\"modifiedDate\":\"2021-06-29T16:28:10Z\",\"publicNetworkAccessForIngestion\":\"SecuredByPerimeter\",\"publicNetworkAccessForQuery\":\"SecuredByPerimeter\",\"forceCmkForQuery\":false,\"privateLinkScopedResources\":[{\"resourceId\":\"rl\",\"scopeId\":\"zji\"},{\"resourceId\":\"qfhefkwabsol\",\"scopeId\":\"nqqlmgnl\"},{\"resourceId\":\"sjxtel\",\"scopeId\":\"hvuqbo\"},{\"resourceId\":\"o\",\"scopeId\":\"qocarkuzlbc\"}],\"features\":{\"enableDataExport\":false,\"immediatePurgeDataOn30Days\":false,\"enableLogAccessUsingOnlyResourcePermissions\":true,\"clusterResourceId\":\"qytl\",\"disableLocalAuth\":false,\"unifiedSentinelBillingOnly\":false,\"associations\":[\"ckze\",\"nxakckyw\"],\"hfaogzv\":\"datagaabjkdtf\"},\"defaultDataCollectionRuleResourceId\":\"wrsiwdyjqurykc\",\"replication\":{\"location\":\"ueekcsue\",\"enabled\":false,\"provisioningState\":\"Canceled\",\"createdDate\":\"2021-03-11T17:26:18Z\",\"lastModifiedDate\":\"2021-07-31T15:46:45Z\"},\"failover\":{\"state\":\"Deactivating\",\"lastModifiedDate\":\"2021-04-29T13:14:35Z\"}},\"identity\":{\"principalId\":\"d\",\"tenantId\":\"mhmpty\",\"type\":\"UserAssigned\",\"userAssignedIdentities\":{\"fnqt\":{\"principalId\":\"bnrqq\",\"clientId\":\"ztpb\"}}},\"etag\":\"omals\",\"location\":\"bnfddep\",\"tags\":{\"f\":\"qjn\",\"vmywhsbrcarycsjj\":\"ygleexa\",\"dmkrrb\":\"yvoaqajuvehzp\",\"ubefgybpmfbfunu\":\"mpfu\"},\"id\":\"mpzkrvfyifkd\",\"name\":\"chlzvfi\",\"type\":\"tnkjjwgcwnphb\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); Workspace response = manager.workspaces() - .define("jxl") - .withRegion("wsdrnpxqwodif") - .withExistingResourceGroup("ecmslclbl") - .withTags(mapOf("wibvjogj", "cjrmmua")) - .withIdentity(new Identity().withType(IdentityType.NONE) - .withUserAssignedIdentities(mapOf("efgwbmqjc", new UserIdentityProperties()))) - .withEtag("jcmmzrrscub") - .withSku(new WorkspaceSku().withName(WorkspaceSkuNameEnum.STANDARD) - .withCapacityReservationLevel(CapacityReservationLevel.TWO_ZERO_ZERO_ZERO)) - .withRetentionInDays(1106041304) - .withWorkspaceCapping(new WorkspaceCapping().withDailyQuotaGb(17.1701428900364D)) + .define("gv") + .withRegion("oyfpuq") + .withExistingResourceGroup("yznclkfkee") + .withTags(mapOf("wvpsoz", "ezxlhdjzqdca", "pnx", "iihjriybmrzo")) + .withIdentity(new Identity().withType(IdentityType.USER_ASSIGNED) + .withUserAssignedIdentities(mapOf("xomeikjclwzacn", new UserIdentityProperties()))) + .withEtag("fsuqtaazyqbxy") + .withSku(new WorkspaceSku().withName(WorkspaceSkuNameEnum.FREE).withCapacityReservationLevel(965244387)) + .withRetentionInDays(1510649527) + .withWorkspaceCapping(new WorkspaceCapping().withDailyQuotaGb(15.022557422512794D)) .withPublicNetworkAccessForIngestion(PublicNetworkAccessType.ENABLED) - .withPublicNetworkAccessForQuery(PublicNetworkAccessType.ENABLED) - .withForceCmkForQuery(false) + .withPublicNetworkAccessForQuery(PublicNetworkAccessType.SECURED_BY_PERIMETER) + .withForceCmkForQuery(true) .withFeatures(new WorkspaceFeatures().withEnableDataExport(true) - .withImmediatePurgeDataOn30Days(true) - .withEnableLogAccessUsingOnlyResourcePermissions(false) - .withClusterResourceId("d") - .withDisableLocalAuth(true) - .withAdditionalProperties(mapOf())) - .withDefaultDataCollectionRuleResourceId("ulrtywikdmh") + .withImmediatePurgeDataOn30Days(false) + .withEnableLogAccessUsingOnlyResourcePermissions(true) + .withClusterResourceId("llqxbdmvrscm") + .withDisableLocalAuth(false) + .withAdditionalProperties(mapOf("associations", + SerializerFactory.createDefaultManagementSerializerAdapter() + .deserialize("[\"nyeofltfnnxrk\",\"dj\",\"ynnfmuiii\",\"ipfohykfkx\"]", Object.class, + SerializerEncoding.JSON), + "ewoi", "databrwjiutgnjizb", "uifr", "datad", "pezkis", "datavka", "unifiedSentinelBillingOnly", + true, "juyrsrziuctixg", "datamrvz"))) + .withDefaultDataCollectionRuleResourceId("jm") + .withReplication(new WorkspaceReplicationProperties().withLocation("syparybjufp").withEnabled(true)) + .withFailover(new WorkspaceFailoverProperties()) .create(); - Assertions.assertEquals("yvca", response.location()); - Assertions.assertEquals("v", response.tags().get("vbsizusjszlbscm")); - Assertions.assertEquals(IdentityType.NONE, response.identity().type()); - Assertions.assertEquals("jhhhqxu", response.etag()); - Assertions.assertEquals(WorkspaceSkuNameEnum.PREMIUM, response.sku().name()); - Assertions.assertEquals(CapacityReservationLevel.ONE_ZERO_ZERO, response.sku().capacityReservationLevel()); - Assertions.assertEquals(1633027384, response.retentionInDays()); - Assertions.assertEquals(61.251523393969165D, response.workspaceCapping().dailyQuotaGb()); - Assertions.assertEquals(PublicNetworkAccessType.DISABLED, response.publicNetworkAccessForIngestion()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, response.publicNetworkAccessForQuery()); - Assertions.assertEquals(false, response.forceCmkForQuery()); - Assertions.assertEquals(true, response.features().enableDataExport()); - Assertions.assertEquals(true, response.features().immediatePurgeDataOn30Days()); - Assertions.assertEquals(false, response.features().enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("jksibjg", response.features().clusterResourceId()); - Assertions.assertEquals(true, response.features().disableLocalAuth()); - Assertions.assertEquals("nxwbjsidbirkfp", response.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("bnfddep", response.location()); + Assertions.assertEquals("qjn", response.tags().get("f")); + Assertions.assertEquals(IdentityType.USER_ASSIGNED, response.identity().type()); + Assertions.assertEquals("omals", response.etag()); + Assertions.assertEquals(WorkspaceSkuNameEnum.STANDARD, response.sku().name()); + Assertions.assertEquals(1049789640, response.sku().capacityReservationLevel()); + Assertions.assertEquals(1169492818, response.retentionInDays()); + Assertions.assertEquals(33.579421975520674D, response.workspaceCapping().dailyQuotaGb()); + Assertions.assertEquals(PublicNetworkAccessType.SECURED_BY_PERIMETER, + response.publicNetworkAccessForIngestion()); + Assertions.assertEquals(PublicNetworkAccessType.SECURED_BY_PERIMETER, response.publicNetworkAccessForQuery()); + Assertions.assertFalse(response.forceCmkForQuery()); + Assertions.assertFalse(response.features().enableDataExport()); + Assertions.assertFalse(response.features().immediatePurgeDataOn30Days()); + Assertions.assertTrue(response.features().enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("qytl", response.features().clusterResourceId()); + Assertions.assertFalse(response.features().disableLocalAuth()); + Assertions.assertEquals("wrsiwdyjqurykc", response.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("ueekcsue", response.replication().location()); + Assertions.assertFalse(response.replication().enabled()); } // Use "Map.of" if available diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesDeleteMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesDeleteMockTests.java index 4025d2a3e4b9..3fd769770841 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesDeleteMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesDeleteMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; import java.nio.charset.StandardCharsets; @@ -25,9 +25,9 @@ public void testDelete() throws Exception { LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - manager.workspaces().delete("odlfpyapucygvo", "vyuns", true, com.azure.core.util.Context.NONE); + manager.workspaces().delete("xmbjroum", "znv", false, com.azure.core.util.Context.NONE); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetByResourceGroupWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetByResourceGroupWithResponseMockTests.java index 708ef7ba7672..043403b84e0a 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetByResourceGroupWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetByResourceGroupWithResponseMockTests.java @@ -6,11 +6,10 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; -import com.azure.resourcemanager.loganalytics.models.CapacityReservationLevel; import com.azure.resourcemanager.loganalytics.models.IdentityType; import com.azure.resourcemanager.loganalytics.models.PublicNetworkAccessType; import com.azure.resourcemanager.loganalytics.models.Workspace; @@ -25,35 +24,38 @@ public final class WorkspacesGetByResourceGroupWithResponseMockTests { @Test public void testGetByResourceGroupWithResponse() throws Exception { String responseStr - = "{\"properties\":{\"provisioningState\":\"Updating\",\"customerId\":\"uygdhgaqipirp\",\"sku\":{\"name\":\"LACluster\",\"capacityReservationLevel\":1000,\"lastSkuUpdate\":\"ulopmjnlexwhcb\"},\"retentionInDays\":1491693299,\"workspaceCapping\":{\"dailyQuotaGb\":3.5229410575627673,\"quotaNextResetTime\":\"uuuercta\",\"dataIngestionStatus\":\"RespectQuota\"},\"createdDate\":\"ntqpbr\",\"modifiedDate\":\"yrduczkgofxyfsr\",\"publicNetworkAccessForIngestion\":\"Enabled\",\"publicNetworkAccessForQuery\":\"Enabled\",\"forceCmkForQuery\":true,\"privateLinkScopedResources\":[{\"resourceId\":\"tbstvjeaqnrmv\",\"scopeId\":\"koxmlghk\"},{\"resourceId\":\"idvrmaz\",\"scopeId\":\"dwwexymz\"}],\"features\":{\"enableDataExport\":false,\"immediatePurgeDataOn30Days\":false,\"enableLogAccessUsingOnlyResourcePermissions\":true,\"clusterResourceId\":\"wvqsgny\",\"disableLocalAuth\":true,\"\":{\"yyvpkpatlb\":\"datavensrpm\",\"gsksrfhf\":\"datajp\",\"bnxwc\":\"dataolmk\",\"fgbrtt\":\"dataommpvfqaw\"}},\"defaultDataCollectionRuleResourceId\":\"aclkiexhajlfnt\"},\"identity\":{\"principalId\":\"fyut\",\"tenantId\":\"iygbpvn\",\"type\":\"None\",\"userAssignedIdentities\":{\"fg\":{\"principalId\":\"xkyctwwgzwx\",\"clientId\":\"mecvogygzyvneeza\"}}},\"systemData\":{\"createdBy\":\"oqqtl\",\"createdByType\":\"Application\",\"createdAt\":\"2020-12-26T15:29:31Z\",\"lastModifiedBy\":\"rkjjjavfqnvhnq\",\"lastModifiedByType\":\"ManagedIdentity\",\"lastModifiedAt\":\"2021-01-06T07:59:03Z\"},\"etag\":\"iyet\",\"location\":\"sypvidbztjhqtfb\",\"tags\":{\"p\":\"ynkbwetnju\",\"piaccxnafb\":\"prkzya\"},\"id\":\"qroohtu\",\"name\":\"vmaonurjt\",\"type\":\"mghihp\"}"; + = "{\"properties\":{\"provisioningState\":\"Updating\",\"customerId\":\"bpdbollgr\",\"sku\":{\"name\":\"Standalone\",\"capacityReservationLevel\":1441651500,\"lastSkuUpdate\":\"2021-01-18T17:52:58Z\"},\"retentionInDays\":693005184,\"workspaceCapping\":{\"dailyQuotaGb\":85.75670564450144,\"quotaNextResetTime\":\"nequy\",\"dataIngestionStatus\":\"OverQuota\"},\"createdDate\":\"2021-03-14T09:15:47Z\",\"modifiedDate\":\"2021-08-01T19:22:02Z\",\"publicNetworkAccessForIngestion\":\"SecuredByPerimeter\",\"publicNetworkAccessForQuery\":\"Disabled\",\"forceCmkForQuery\":true,\"privateLinkScopedResources\":[{\"resourceId\":\"adrmmwiuawvcmjzk\",\"scopeId\":\"idisczskosw\"},{\"resourceId\":\"iqazugamxzkr\",\"scopeId\":\"oiisbamnppcce\"},{\"resourceId\":\"ztdsbeza\",\"scopeId\":\"f\"}],\"features\":{\"enableDataExport\":true,\"immediatePurgeDataOn30Days\":false,\"enableLogAccessUsingOnlyResourcePermissions\":false,\"clusterResourceId\":\"hnepkpeti\",\"disableLocalAuth\":true,\"unifiedSentinelBillingOnly\":true,\"associations\":[\"xdukecpxd\",\"zvdhctmmkosz\",\"dblnsntrp\",\"aqkiofkb\"],\"ezyquw\":\"datahklbnldpvcbh\",\"brruyuuatv\":\"datasqxutr\"},\"defaultDataCollectionRuleResourceId\":\"bjwcolbmx\",\"replication\":{\"location\":\"w\",\"enabled\":true,\"provisioningState\":\"EnableRequested\",\"createdDate\":\"2020-12-20T15:37:07Z\",\"lastModifiedDate\":\"2021-02-13T22:53:47Z\"},\"failover\":{\"state\":\"Activating\",\"lastModifiedDate\":\"2021-01-25T19:22:53Z\"}},\"identity\":{\"principalId\":\"hocn\",\"tenantId\":\"cmj\",\"type\":\"None\",\"userAssignedIdentities\":{\"tjfdoesxxhmw\":{\"principalId\":\"oqrxtdisnjevhdlm\",\"clientId\":\"idwhepfw\"},\"t\":{\"principalId\":\"bckyoikxk\",\"clientId\":\"negknjzrb\"},\"hjhgem\":{\"principalId\":\"plvukaobrlbpg\",\"clientId\":\"bagn\"}}},\"etag\":\"akywalhjymxcgqta\",\"location\":\"drclssoljome\",\"tags\":{\"gjiiytssiki\":\"ycnlbvgjcodk\",\"gmqsorhcekxg\":\"bcufqbvntn\"},\"id\":\"lykmxcpwzvmdo\",\"name\":\"sqdtiwlwxlbon\",\"type\":\"qba\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); Workspace response = manager.workspaces() - .getByResourceGroupWithResponse("lghieegjlgvvpase", "sgb", com.azure.core.util.Context.NONE) + .getByResourceGroupWithResponse("qjrhuzgfxonj", "pusllywpv", com.azure.core.util.Context.NONE) .getValue(); - Assertions.assertEquals("sypvidbztjhqtfb", response.location()); - Assertions.assertEquals("ynkbwetnju", response.tags().get("p")); + Assertions.assertEquals("drclssoljome", response.location()); + Assertions.assertEquals("ycnlbvgjcodk", response.tags().get("gjiiytssiki")); Assertions.assertEquals(IdentityType.NONE, response.identity().type()); - Assertions.assertEquals("iyet", response.etag()); - Assertions.assertEquals(WorkspaceSkuNameEnum.LACLUSTER, response.sku().name()); - Assertions.assertEquals(CapacityReservationLevel.ONE_ZERO_ZERO_ZERO, response.sku().capacityReservationLevel()); - Assertions.assertEquals(1491693299, response.retentionInDays()); - Assertions.assertEquals(3.5229410575627673D, response.workspaceCapping().dailyQuotaGb()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, response.publicNetworkAccessForIngestion()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, response.publicNetworkAccessForQuery()); - Assertions.assertEquals(true, response.forceCmkForQuery()); - Assertions.assertEquals(false, response.features().enableDataExport()); - Assertions.assertEquals(false, response.features().immediatePurgeDataOn30Days()); - Assertions.assertEquals(true, response.features().enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("wvqsgny", response.features().clusterResourceId()); - Assertions.assertEquals(true, response.features().disableLocalAuth()); - Assertions.assertEquals("aclkiexhajlfnt", response.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("akywalhjymxcgqta", response.etag()); + Assertions.assertEquals(WorkspaceSkuNameEnum.STANDALONE, response.sku().name()); + Assertions.assertEquals(1441651500, response.sku().capacityReservationLevel()); + Assertions.assertEquals(693005184, response.retentionInDays()); + Assertions.assertEquals(85.75670564450144D, response.workspaceCapping().dailyQuotaGb()); + Assertions.assertEquals(PublicNetworkAccessType.SECURED_BY_PERIMETER, + response.publicNetworkAccessForIngestion()); + Assertions.assertEquals(PublicNetworkAccessType.DISABLED, response.publicNetworkAccessForQuery()); + Assertions.assertTrue(response.forceCmkForQuery()); + Assertions.assertTrue(response.features().enableDataExport()); + Assertions.assertFalse(response.features().immediatePurgeDataOn30Days()); + Assertions.assertFalse(response.features().enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("hnepkpeti", response.features().clusterResourceId()); + Assertions.assertTrue(response.features().disableLocalAuth()); + Assertions.assertEquals("bjwcolbmx", response.defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("w", response.replication().location()); + Assertions.assertTrue(response.replication().enabled()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetNspWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetNspWithResponseMockTests.java new file mode 100644 index 000000000000..23aeb3cf2189 --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetNspWithResponseMockTests.java @@ -0,0 +1,52 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.credential.AccessToken; +import com.azure.core.http.HttpClient; +import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; +import com.azure.core.test.http.MockHttpResponse; +import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeterConfiguration; +import com.azure.resourcemanager.loganalytics.models.ResourceAssociationAccessMode; +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; + +public final class WorkspacesGetNspWithResponseMockTests { + @Test + public void testGetNspWithResponse() throws Exception { + String responseStr + = "{\"properties\":{\"provisioningState\":\"Canceled\",\"provisioningIssues\":[{\"name\":\"qkaye\",\"properties\":{\"issueType\":\"MissingPerimeterConfiguration\",\"severity\":\"Error\",\"description\":\"lwfgziiu\",\"suggestedResourceIds\":[\"jceatlijjjrtva\",\"caszk\",\"xk\"],\"suggestedAccessRules\":[{},{},{},{}]}},{\"name\":\"etyvkunmignohi\",\"properties\":{\"issueType\":\"Unknown\",\"severity\":\"Warning\",\"description\":\"wpin\",\"suggestedResourceIds\":[\"vabbx\",\"hmedeilbjywfcfxz\",\"rzzihvwypus\",\"vjslczwcii\"],\"suggestedAccessRules\":[{},{},{},{}]}}],\"networkSecurityPerimeter\":{\"id\":\"fryvdmvxadqac\",\"perimeterGuid\":\"b2ab9a7a-0b15-4a2c-a582-6bbd6ffa49bb\",\"location\":\"naw\"},\"resourceAssociation\":{\"name\":\"gfbktyjmf\",\"accessMode\":\"Learning\"},\"profile\":{\"name\":\"yq\",\"accessRulesVersion\":988633110,\"accessRules\":[{\"name\":\"owoxqmj\",\"properties\":{}},{\"name\":\"cxn\",\"properties\":{}}],\"diagnosticSettingsVersion\":473965533,\"enabledLogCategories\":[\"usrvx\",\"simjceagbjqvlsu\"]}},\"id\":\"wzas\",\"name\":\"xgo\",\"type\":\"oyjfqipu\"}"; + + HttpClient httpClient + = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); + LogAnalyticsManager manager = LogAnalyticsManager.configure() + .withHttpClient(httpClient) + .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); + + NetworkSecurityPerimeterConfiguration response = manager.workspaces() + .getNspWithResponse("grpxncakiqaondjr", "clamgglvlmfejdoq", "ykglt", com.azure.core.util.Context.NONE) + .getValue(); + + Assertions.assertEquals("fryvdmvxadqac", response.properties().networkSecurityPerimeter().id()); + Assertions.assertEquals(UUID.fromString("b2ab9a7a-0b15-4a2c-a582-6bbd6ffa49bb"), + response.properties().networkSecurityPerimeter().perimeterGuid()); + Assertions.assertEquals("naw", response.properties().networkSecurityPerimeter().location()); + Assertions.assertEquals("gfbktyjmf", response.properties().resourceAssociation().name()); + Assertions.assertEquals(ResourceAssociationAccessMode.LEARNING, + response.properties().resourceAssociation().accessMode()); + Assertions.assertEquals("yq", response.properties().profile().name()); + Assertions.assertEquals(988633110, response.properties().profile().accessRulesVersion()); + Assertions.assertEquals("owoxqmj", response.properties().profile().accessRules().get(0).name()); + Assertions.assertEquals(473965533, response.properties().profile().diagnosticSettingsVersion()); + Assertions.assertEquals("usrvx", response.properties().profile().enabledLogCategories().get(0)); + } +} diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListByResourceGroupMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListByResourceGroupMockTests.java index a770ad13174e..e3375af4e2b8 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListByResourceGroupMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListByResourceGroupMockTests.java @@ -7,11 +7,10 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; -import com.azure.resourcemanager.loganalytics.models.CapacityReservationLevel; import com.azure.resourcemanager.loganalytics.models.IdentityType; import com.azure.resourcemanager.loganalytics.models.PublicNetworkAccessType; import com.azure.resourcemanager.loganalytics.models.Workspace; @@ -26,38 +25,38 @@ public final class WorkspacesListByResourceGroupMockTests { @Test public void testListByResourceGroup() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"provisioningState\":\"Failed\",\"customerId\":\"rxvbfihwuh\",\"sku\":{\"name\":\"LACluster\",\"capacityReservationLevel\":200,\"lastSkuUpdate\":\"rbxrblmliowxihsp\"},\"retentionInDays\":510914114,\"workspaceCapping\":{\"dailyQuotaGb\":25.078160367574576,\"quotaNextResetTime\":\"pzwaklsbsbqqq\",\"dataIngestionStatus\":\"SubscriptionSuspended\"},\"createdDate\":\"rxaomzisglrrcze\",\"modifiedDate\":\"hhltnjadhqo\",\"publicNetworkAccessForIngestion\":\"Disabled\",\"publicNetworkAccessForQuery\":\"Disabled\",\"forceCmkForQuery\":true,\"privateLinkScopedResources\":[{\"resourceId\":\"fbpcmsplb\",\"scopeId\":\"rueqthwm\"},{\"resourceId\":\"mbscbbx\",\"scopeId\":\"dhxiidlopedbwd\"}],\"features\":{\"enableDataExport\":true,\"immediatePurgeDataOn30Days\":false,\"enableLogAccessUsingOnlyResourcePermissions\":true,\"clusterResourceId\":\"md\",\"disableLocalAuth\":true,\"\":{\"qacigeleo\":\"dataqwremjel\",\"vqvwzkjopwbe\":\"datad\",\"x\":\"datanrlkwzdqy\"}},\"defaultDataCollectionRuleResourceId\":\"akxcptsoqfyiaseq\"},\"identity\":{\"principalId\":\"rttzrazisgykiu\",\"tenantId\":\"vanbwzohmnrxxbs\",\"type\":\"user\",\"userAssignedIdentities\":{\"g\":{\"principalId\":\"nhmdptysprqs\",\"clientId\":\"zxojpslsv\"},\"q\":{\"principalId\":\"iufiqwo\",\"clientId\":\"qvapcohhoucq\"},\"ddtjwfljhznam\":{\"principalId\":\"xcxzrzdcgdzben\",\"clientId\":\"bcawetz\"},\"vgbgatzuuvbxng\":{\"principalId\":\"atmzw\",\"clientId\":\"jncqtjzmi\"}}},\"systemData\":{\"createdBy\":\"wggahttzlswvaj\",\"createdByType\":\"Key\",\"createdAt\":\"2021-09-26T07:25:25Z\",\"lastModifiedBy\":\"joqza\",\"lastModifiedByType\":\"ManagedIdentity\",\"lastModifiedAt\":\"2021-02-03T05:21:58Z\"},\"etag\":\"j\",\"location\":\"frgqhaohcm\",\"tags\":{\"l\":\"cnjrohmbpyryxame\"},\"id\":\"dyvkfkmr\",\"name\":\"cxneh\",\"type\":\"sm\"}]}"; + = "{\"value\":[{\"properties\":{\"provisioningState\":\"Succeeded\",\"customerId\":\"vezcrcssbzhdd\",\"sku\":{\"name\":\"PerNode\",\"capacityReservationLevel\":1056555607,\"lastSkuUpdate\":\"2021-11-16T04:37:45Z\"},\"retentionInDays\":106775575,\"workspaceCapping\":{\"dailyQuotaGb\":55.74174962524516,\"quotaNextResetTime\":\"pavawugiqjtio\",\"dataIngestionStatus\":\"ForceOff\"},\"createdDate\":\"2021-09-30T21:30:49Z\",\"modifiedDate\":\"2021-08-09T13:44:28Z\",\"publicNetworkAccessForIngestion\":\"Disabled\",\"publicNetworkAccessForQuery\":\"Disabled\",\"forceCmkForQuery\":false,\"privateLinkScopedResources\":[{\"resourceId\":\"iygspnbonhpczyk\",\"scopeId\":\"tp\"},{\"resourceId\":\"xqcsehch\",\"scopeId\":\"ufmpqumqyjgy\"}],\"features\":{\"enableDataExport\":false,\"immediatePurgeDataOn30Days\":true,\"enableLogAccessUsingOnlyResourcePermissions\":false,\"clusterResourceId\":\"uzanhsfnhsenwphp\",\"disableLocalAuth\":true,\"unifiedSentinelBillingOnly\":false,\"associations\":[\"lidftujwjj\"],\"ssruqnmdvhazcvj\":\"databeqrkuorh\",\"wbqerzwxiytxtd\":\"datatiq\",\"ktg\":\"dataukvlb\"},\"defaultDataCollectionRuleResourceId\":\"tyouambewreswmow\",\"replication\":{\"location\":\"mut\",\"enabled\":false,\"provisioningState\":\"DisableRequested\",\"createdDate\":\"2021-05-23T20:36:12Z\",\"lastModifiedDate\":\"2021-05-17T10:49:14Z\"},\"failover\":{\"state\":\"Activating\",\"lastModifiedDate\":\"2021-06-23T04:35:50Z\"}},\"identity\":{\"principalId\":\"spxlzde\",\"tenantId\":\"grijwaiufanrayb\",\"type\":\"UserAssigned\",\"userAssignedIdentities\":{\"ygzmxieqvdsmak\":{\"principalId\":\"rojsydg\",\"clientId\":\"ydkygywezskieca\"},\"ybxawoijpodtblx\":{\"principalId\":\"xq\",\"clientId\":\"hyhxa\"},\"emehllizh\":{\"principalId\":\"kwjdjodqhy\",\"clientId\":\"ncn\"},\"dtluvvadswzsn\":{\"principalId\":\"umoqodkad\",\"clientId\":\"yibngqladywrxwh\"}}},\"etag\":\"mlowuowhl\",\"location\":\"lnwy\",\"tags\":{\"okzkltr\":\"uvblg\",\"rqcrjidhftukvh\":\"owtdvrfmvlihcvj\"},\"id\":\"xlwyoj\",\"name\":\"fqz\",\"type\":\"kfnjyixhafrat\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response - = manager.workspaces().listByResourceGroup("qltgrd", com.azure.core.util.Context.NONE); + = manager.workspaces().listByResourceGroup("dbpb", com.azure.core.util.Context.NONE); - Assertions.assertEquals("frgqhaohcm", response.iterator().next().location()); - Assertions.assertEquals("cnjrohmbpyryxame", response.iterator().next().tags().get("l")); - Assertions.assertEquals(IdentityType.USER, response.iterator().next().identity().type()); - Assertions.assertEquals("j", response.iterator().next().etag()); - Assertions.assertEquals(WorkspaceSkuNameEnum.LACLUSTER, response.iterator().next().sku().name()); - Assertions.assertEquals(CapacityReservationLevel.TWO_ZERO_ZERO, - response.iterator().next().sku().capacityReservationLevel()); - Assertions.assertEquals(510914114, response.iterator().next().retentionInDays()); - Assertions.assertEquals(25.078160367574576D, response.iterator().next().workspaceCapping().dailyQuotaGb()); + Assertions.assertEquals("lnwy", response.iterator().next().location()); + Assertions.assertEquals("uvblg", response.iterator().next().tags().get("okzkltr")); + Assertions.assertEquals(IdentityType.USER_ASSIGNED, response.iterator().next().identity().type()); + Assertions.assertEquals("mlowuowhl", response.iterator().next().etag()); + Assertions.assertEquals(WorkspaceSkuNameEnum.PER_NODE, response.iterator().next().sku().name()); + Assertions.assertEquals(1056555607, response.iterator().next().sku().capacityReservationLevel()); + Assertions.assertEquals(106775575, response.iterator().next().retentionInDays()); + Assertions.assertEquals(55.74174962524516D, response.iterator().next().workspaceCapping().dailyQuotaGb()); Assertions.assertEquals(PublicNetworkAccessType.DISABLED, response.iterator().next().publicNetworkAccessForIngestion()); Assertions.assertEquals(PublicNetworkAccessType.DISABLED, response.iterator().next().publicNetworkAccessForQuery()); - Assertions.assertEquals(true, response.iterator().next().forceCmkForQuery()); - Assertions.assertEquals(true, response.iterator().next().features().enableDataExport()); - Assertions.assertEquals(false, response.iterator().next().features().immediatePurgeDataOn30Days()); - Assertions.assertEquals(true, - response.iterator().next().features().enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("md", response.iterator().next().features().clusterResourceId()); - Assertions.assertEquals(true, response.iterator().next().features().disableLocalAuth()); - Assertions.assertEquals("akxcptsoqfyiaseq", response.iterator().next().defaultDataCollectionRuleResourceId()); + Assertions.assertFalse(response.iterator().next().forceCmkForQuery()); + Assertions.assertFalse(response.iterator().next().features().enableDataExport()); + Assertions.assertTrue(response.iterator().next().features().immediatePurgeDataOn30Days()); + Assertions.assertFalse(response.iterator().next().features().enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("uzanhsfnhsenwphp", response.iterator().next().features().clusterResourceId()); + Assertions.assertTrue(response.iterator().next().features().disableLocalAuth()); + Assertions.assertEquals("tyouambewreswmow", response.iterator().next().defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("mut", response.iterator().next().replication().location()); + Assertions.assertFalse(response.iterator().next().replication().enabled()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListMockTests.java index f829a0836d61..dd45f0116751 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListMockTests.java @@ -7,11 +7,10 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; -import com.azure.resourcemanager.loganalytics.models.CapacityReservationLevel; import com.azure.resourcemanager.loganalytics.models.IdentityType; import com.azure.resourcemanager.loganalytics.models.PublicNetworkAccessType; import com.azure.resourcemanager.loganalytics.models.Workspace; @@ -26,37 +25,37 @@ public final class WorkspacesListMockTests { @Test public void testList() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"provisioningState\":\"Deleting\",\"customerId\":\"wdtgukranblw\",\"sku\":{\"name\":\"LACluster\",\"capacityReservationLevel\":400,\"lastSkuUpdate\":\"c\"},\"retentionInDays\":1802278503,\"workspaceCapping\":{\"dailyQuotaGb\":33.5739290982965,\"quotaNextResetTime\":\"hoi\",\"dataIngestionStatus\":\"ApproachingQuota\"},\"createdDate\":\"niiprglvaw\",\"modifiedDate\":\"z\",\"publicNetworkAccessForIngestion\":\"Enabled\",\"publicNetworkAccessForQuery\":\"Disabled\",\"forceCmkForQuery\":true,\"privateLinkScopedResources\":[{\"resourceId\":\"bjpmcubk\",\"scopeId\":\"foxx\"},{\"resourceId\":\"bvphavpm\",\"scopeId\":\"rbqgvgov\"}],\"features\":{\"enableDataExport\":true,\"immediatePurgeDataOn30Days\":false,\"enableLogAccessUsingOnlyResourcePermissions\":true,\"clusterResourceId\":\"knssqyzqed\",\"disableLocalAuth\":false,\"\":{\"qmrjg\":\"datadb\",\"mjpb\":\"dataihfqlggwfiwzc\",\"pgxh\":\"dataephmgtvljvrcmyfq\"}},\"defaultDataCollectionRuleResourceId\":\"omyqwcabvnuileey\"},\"identity\":{\"principalId\":\"lpaugmrm\",\"tenantId\":\"lrxw\",\"type\":\"UserAssigned\",\"userAssignedIdentities\":{\"psmgo\":{\"principalId\":\"hfkvcisizmoaedsx\",\"clientId\":\"uivedwcgyeewxeiq\"},\"gaufcs\":{\"principalId\":\"u\",\"clientId\":\"ljdlrgmspl\"}}},\"systemData\":{\"createdBy\":\"new\",\"createdByType\":\"User\",\"createdAt\":\"2021-05-21T08:44:22Z\",\"lastModifiedBy\":\"pqanxrjkix\",\"lastModifiedByType\":\"User\",\"lastModifiedAt\":\"2021-11-28T23:05:19Z\"},\"etag\":\"ypnyghshxc\",\"location\":\"lhkgmnsghp\",\"tags\":{\"jkhvyomacluzvxnq\":\"phdrw\",\"df\":\"hrpq\",\"xuifmcsypobkdqz\":\"mkoisqcssf\",\"dmxzjijpv\":\"dzsylollgtrczz\"},\"id\":\"aurkihcirlde\",\"name\":\"xrdcoxnbkkja\",\"type\":\"urnnqbnqbpiz\"}]}"; + = "{\"value\":[{\"properties\":{\"provisioningState\":\"Updating\",\"customerId\":\"uubeid\",\"sku\":{\"name\":\"Free\",\"capacityReservationLevel\":932346466,\"lastSkuUpdate\":\"2021-08-27T04:01:07Z\"},\"retentionInDays\":1084613444,\"workspaceCapping\":{\"dailyQuotaGb\":83.86160418016159,\"quotaNextResetTime\":\"fltgvdiho\",\"dataIngestionStatus\":\"ApproachingQuota\"},\"createdDate\":\"2021-07-12T20:14:31Z\",\"modifiedDate\":\"2021-07-25T19:58:40Z\",\"publicNetworkAccessForIngestion\":\"Disabled\",\"publicNetworkAccessForQuery\":\"SecuredByPerimeter\",\"forceCmkForQuery\":false,\"privateLinkScopedResources\":[{\"resourceId\":\"cpcunnuzdqum\",\"scopeId\":\"nod\"},{\"resourceId\":\"ienhqhskndnelq\",\"scopeId\":\"adlknwfoanni\"},{\"resourceId\":\"petxivcnrlyxnu\",\"scopeId\":\"ephblkwqpatvbqs\"}],\"features\":{\"enableDataExport\":false,\"immediatePurgeDataOn30Days\":true,\"enableLogAccessUsingOnlyResourcePermissions\":true,\"clusterResourceId\":\"vuzqymt\",\"disableLocalAuth\":true,\"unifiedSentinelBillingOnly\":true,\"associations\":[\"it\",\"qhzvb\"],\"cxmxeatkdb\":\"datadbanfznd\"},\"defaultDataCollectionRuleResourceId\":\"nrd\",\"replication\":{\"location\":\"bqbnaomhjrmkuh\",\"enabled\":true,\"provisioningState\":\"DisableRequested\",\"createdDate\":\"2021-08-22T07:08:52Z\",\"lastModifiedDate\":\"2021-07-09T10:57:05Z\"},\"failover\":{\"state\":\"Deactivating\",\"lastModifiedDate\":\"2021-03-26T01:09:54Z\"}},\"identity\":{\"principalId\":\"anc\",\"tenantId\":\"xxqcwgaxf\",\"type\":\"UserAssigned\",\"userAssignedIdentities\":{\"zyyfy\":{\"principalId\":\"okzwjjzrlt\",\"clientId\":\"l\"},\"ujivyqlkjuvsm\":{\"principalId\":\"qsix\",\"clientId\":\"m\"}}},\"etag\":\"lzoy\",\"location\":\"vwzdbpqvyb\",\"tags\":{\"okcvtlubses\":\"vmx\",\"pirykycndzfqiv\":\"vcuartrhun\"},\"id\":\"reuykbbmnwagl\",\"name\":\"bxoeeonql\",\"type\":\"fwmyymv\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); LogAnalyticsManager manager = LogAnalyticsManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); PagedIterable response = manager.workspaces().list(com.azure.core.util.Context.NONE); - Assertions.assertEquals("lhkgmnsghp", response.iterator().next().location()); - Assertions.assertEquals("phdrw", response.iterator().next().tags().get("jkhvyomacluzvxnq")); + Assertions.assertEquals("vwzdbpqvyb", response.iterator().next().location()); + Assertions.assertEquals("vmx", response.iterator().next().tags().get("okcvtlubses")); Assertions.assertEquals(IdentityType.USER_ASSIGNED, response.iterator().next().identity().type()); - Assertions.assertEquals("ypnyghshxc", response.iterator().next().etag()); - Assertions.assertEquals(WorkspaceSkuNameEnum.LACLUSTER, response.iterator().next().sku().name()); - Assertions.assertEquals(CapacityReservationLevel.FOUR_ZERO_ZERO, - response.iterator().next().sku().capacityReservationLevel()); - Assertions.assertEquals(1802278503, response.iterator().next().retentionInDays()); - Assertions.assertEquals(33.5739290982965D, response.iterator().next().workspaceCapping().dailyQuotaGb()); - Assertions.assertEquals(PublicNetworkAccessType.ENABLED, - response.iterator().next().publicNetworkAccessForIngestion()); + Assertions.assertEquals("lzoy", response.iterator().next().etag()); + Assertions.assertEquals(WorkspaceSkuNameEnum.FREE, response.iterator().next().sku().name()); + Assertions.assertEquals(932346466, response.iterator().next().sku().capacityReservationLevel()); + Assertions.assertEquals(1084613444, response.iterator().next().retentionInDays()); + Assertions.assertEquals(83.86160418016159D, response.iterator().next().workspaceCapping().dailyQuotaGb()); Assertions.assertEquals(PublicNetworkAccessType.DISABLED, + response.iterator().next().publicNetworkAccessForIngestion()); + Assertions.assertEquals(PublicNetworkAccessType.SECURED_BY_PERIMETER, response.iterator().next().publicNetworkAccessForQuery()); - Assertions.assertEquals(true, response.iterator().next().forceCmkForQuery()); - Assertions.assertEquals(true, response.iterator().next().features().enableDataExport()); - Assertions.assertEquals(false, response.iterator().next().features().immediatePurgeDataOn30Days()); - Assertions.assertEquals(true, - response.iterator().next().features().enableLogAccessUsingOnlyResourcePermissions()); - Assertions.assertEquals("knssqyzqed", response.iterator().next().features().clusterResourceId()); - Assertions.assertEquals(false, response.iterator().next().features().disableLocalAuth()); - Assertions.assertEquals("omyqwcabvnuileey", response.iterator().next().defaultDataCollectionRuleResourceId()); + Assertions.assertFalse(response.iterator().next().forceCmkForQuery()); + Assertions.assertFalse(response.iterator().next().features().enableDataExport()); + Assertions.assertTrue(response.iterator().next().features().immediatePurgeDataOn30Days()); + Assertions.assertTrue(response.iterator().next().features().enableLogAccessUsingOnlyResourcePermissions()); + Assertions.assertEquals("vuzqymt", response.iterator().next().features().clusterResourceId()); + Assertions.assertTrue(response.iterator().next().features().disableLocalAuth()); + Assertions.assertEquals("nrd", response.iterator().next().defaultDataCollectionRuleResourceId()); + Assertions.assertEquals("bqbnaomhjrmkuh", response.iterator().next().replication().location()); + Assertions.assertTrue(response.iterator().next().replication().enabled()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListNspMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListNspMockTests.java new file mode 100644 index 000000000000..093c9ed124cb --- /dev/null +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListNspMockTests.java @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.loganalytics.generated; + +import com.azure.core.credential.AccessToken; +import com.azure.core.http.HttpClient; +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; +import com.azure.core.test.http.MockHttpResponse; +import com.azure.resourcemanager.loganalytics.LogAnalyticsManager; +import com.azure.resourcemanager.loganalytics.models.NetworkSecurityPerimeterConfiguration; +import com.azure.resourcemanager.loganalytics.models.ResourceAssociationAccessMode; +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; + +public final class WorkspacesListNspMockTests { + @Test + public void testListNsp() throws Exception { + String responseStr + = "{\"value\":[{\"properties\":{\"provisioningState\":\"Updating\",\"provisioningIssues\":[{\"name\":\"kxyqvgxiaodetv\",\"properties\":{\"issueType\":\"MissingPerimeterConfiguration\",\"severity\":\"Warning\",\"description\":\"wsaifmcwno\",\"suggestedResourceIds\":[\"lehgcvkbc\",\"njolgjyyxpv\",\"lszerqzevx\",\"qe\"],\"suggestedAccessRules\":[{},{},{}]}},{\"name\":\"waljglzoblqwaaf\",\"properties\":{\"issueType\":\"Unknown\",\"severity\":\"Warning\",\"description\":\"yqbhd\",\"suggestedResourceIds\":[\"jrqpjiyrqjcrga\",\"wmzwdfkbnrzorpdl\",\"bqc\"],\"suggestedAccessRules\":[{},{},{}]}}],\"networkSecurityPerimeter\":{\"id\":\"xxsaetgz\",\"perimeterGuid\":\"7c25190c-b735-4965-9eab-ac58783e1b6a\",\"location\":\"pyigdaqqilzdc\"},\"resourceAssociation\":{\"name\":\"joedx\",\"accessMode\":\"Enforced\"},\"profile\":{\"name\":\"i\",\"accessRulesVersion\":652197370,\"accessRules\":[{\"name\":\"wgilfjqqac\",\"properties\":{}},{\"name\":\"xwxdcvjwc\",\"properties\":{}}],\"diagnosticSettingsVersion\":148579488,\"enabledLogCategories\":[\"ciqchxrtuicd\",\"iw\"]}},\"id\":\"m\",\"name\":\"p\",\"type\":\"hzzwvywrgyngy\"}]}"; + + HttpClient httpClient + = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); + LogAnalyticsManager manager = LogAnalyticsManager.configure() + .withHttpClient(httpClient) + .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); + + PagedIterable response + = manager.workspaces().listNsp("qicqchygt", "xbyja", com.azure.core.util.Context.NONE); + + Assertions.assertEquals("xxsaetgz", response.iterator().next().properties().networkSecurityPerimeter().id()); + Assertions.assertEquals(UUID.fromString("7c25190c-b735-4965-9eab-ac58783e1b6a"), + response.iterator().next().properties().networkSecurityPerimeter().perimeterGuid()); + Assertions.assertEquals("pyigdaqqilzdc", + response.iterator().next().properties().networkSecurityPerimeter().location()); + Assertions.assertEquals("joedx", response.iterator().next().properties().resourceAssociation().name()); + Assertions.assertEquals(ResourceAssociationAccessMode.ENFORCED, + response.iterator().next().properties().resourceAssociation().accessMode()); + Assertions.assertEquals("i", response.iterator().next().properties().profile().name()); + Assertions.assertEquals(652197370, response.iterator().next().properties().profile().accessRulesVersion()); + Assertions.assertEquals("wgilfjqqac", + response.iterator().next().properties().profile().accessRules().get(0).name()); + Assertions.assertEquals(148579488, + response.iterator().next().properties().profile().diagnosticSettingsVersion()); + Assertions.assertEquals("ciqchxrtuicd", + response.iterator().next().properties().profile().enabledLogCategories().get(0)); + } +} From eb7384072f6b26e56ceb1bbf851f5fab0572cc08 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Sun, 21 Dec 2025 23:22:13 -0800 Subject: [PATCH 05/41] Increment package versions for resourcemanager releases (#47591) --- eng/versioning/version_client.txt | 2 +- sdk/batch/azure-compute-batch/pom.xml | 2 +- sdk/boms/spring-cloud-azure-dependencies/pom.xml | 2 +- sdk/eventgrid/azure-resourcemanager-eventgrid/pom.xml | 2 +- sdk/resourcemanager/azure-resourcemanager-perf/pom.xml | 2 +- .../azure-resourcemanager-samples/pom.xml | 2 +- sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md | 10 ++++++++++ sdk/resourcemanager/azure-resourcemanager/pom.xml | 2 +- .../azure-resourcemanager-servicelinker/pom.xml | 2 +- sdk/spring/spring-cloud-azure-resourcemanager/pom.xml | 2 +- 10 files changed, 19 insertions(+), 9 deletions(-) diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index 3b398611a471..2e3ee42e13ca 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -271,7 +271,7 @@ com.azure.spring:spring-cloud-azure-stream-binder-servicebus-core;6.1.0;6.2.0-be com.azure.spring:spring-cloud-azure-stream-binder-servicebus;6.1.0;6.2.0-beta.1 com.azure.spring:spring-cloud-azure-testcontainers;6.1.0;6.2.0-beta.1 com.azure:azure-spring-data-cosmos;6.1.0;6.2.0-beta.1 -com.azure.resourcemanager:azure-resourcemanager;2.57.0;2.58.0 +com.azure.resourcemanager:azure-resourcemanager;2.58.0;2.59.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-appplatform;2.51.0;2.52.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-appservice;2.54.1;2.55.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-authorization;2.53.6;2.54.0-beta.1 diff --git a/sdk/batch/azure-compute-batch/pom.xml b/sdk/batch/azure-compute-batch/pom.xml index 12d70cd6181a..045c932c4615 100644 --- a/sdk/batch/azure-compute-batch/pom.xml +++ b/sdk/batch/azure-compute-batch/pom.xml @@ -85,7 +85,7 @@ com.azure.resourcemanager azure-resourcemanager - 2.57.0 + 2.58.0 test diff --git a/sdk/boms/spring-cloud-azure-dependencies/pom.xml b/sdk/boms/spring-cloud-azure-dependencies/pom.xml index 0c9af5132d49..cd69d2263ed4 100644 --- a/sdk/boms/spring-cloud-azure-dependencies/pom.xml +++ b/sdk/boms/spring-cloud-azure-dependencies/pom.xml @@ -60,7 +60,7 @@ com.azure.resourcemanager azure-resourcemanager - 2.57.0 + 2.58.0 diff --git a/sdk/eventgrid/azure-resourcemanager-eventgrid/pom.xml b/sdk/eventgrid/azure-resourcemanager-eventgrid/pom.xml index 349e0fb60fb8..803536f46a93 100644 --- a/sdk/eventgrid/azure-resourcemanager-eventgrid/pom.xml +++ b/sdk/eventgrid/azure-resourcemanager-eventgrid/pom.xml @@ -73,7 +73,7 @@ com.azure.resourcemanager azure-resourcemanager - 2.57.0 + 2.58.0 test diff --git a/sdk/resourcemanager/azure-resourcemanager-perf/pom.xml b/sdk/resourcemanager/azure-resourcemanager-perf/pom.xml index 5cc21a519f80..8186a7deb349 100644 --- a/sdk/resourcemanager/azure-resourcemanager-perf/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-perf/pom.xml @@ -25,7 +25,7 @@ com.azure.resourcemanager azure-resourcemanager - 2.58.0 + 2.59.0-beta.1 com.azure.resourcemanager diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml b/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml index 639161111a62..c1631b0c40da 100644 --- a/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml @@ -54,7 +54,7 @@ com.azure.resourcemanager azure-resourcemanager - 2.58.0 + 2.59.0-beta.1 com.azure.resourcemanager diff --git a/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md b/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md index 210a10c20536..7693a73529b6 100644 --- a/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md +++ b/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md @@ -1,5 +1,15 @@ # Release History +## 2.59.0-beta.1 (Unreleased) + +### Features Added + +### Breaking Changes + +### Bugs Fixed + +### Other Changes + ## 2.58.0 (2025-12-22) ### azure-resourcemanager-containerservice diff --git a/sdk/resourcemanager/azure-resourcemanager/pom.xml b/sdk/resourcemanager/azure-resourcemanager/pom.xml index b5f52243bb54..3978e068999e 100644 --- a/sdk/resourcemanager/azure-resourcemanager/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager/pom.xml @@ -15,7 +15,7 @@ com.azure.resourcemanager azure-resourcemanager - 2.58.0 + 2.59.0-beta.1 jar Microsoft Azure SDK for Management diff --git a/sdk/servicelinker/azure-resourcemanager-servicelinker/pom.xml b/sdk/servicelinker/azure-resourcemanager-servicelinker/pom.xml index 5c911bac3db3..240ff5d680b9 100644 --- a/sdk/servicelinker/azure-resourcemanager-servicelinker/pom.xml +++ b/sdk/servicelinker/azure-resourcemanager-servicelinker/pom.xml @@ -73,7 +73,7 @@ com.azure.resourcemanager azure-resourcemanager - 2.57.0 + 2.58.0 test diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/pom.xml b/sdk/spring/spring-cloud-azure-resourcemanager/pom.xml index b48de2f0b228..ce2c3621456a 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/pom.xml +++ b/sdk/spring/spring-cloud-azure-resourcemanager/pom.xml @@ -47,7 +47,7 @@ com.azure.resourcemanager azure-resourcemanager - 2.57.0 + 2.58.0 From d9d1063f17c953b6757770284d9537d88c4b4f6b Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Mon, 22 Dec 2025 00:39:20 -0800 Subject: [PATCH 06/41] Increment package versions for loganalytics releases (#47592) --- eng/versioning/version_client.txt | 2 +- .../azure-resourcemanager-applicationinsights/pom.xml | 2 +- .../azure-resourcemanager-loganalytics/CHANGELOG.md | 10 ++++++++++ .../azure-resourcemanager-loganalytics/pom.xml | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index 2e3ee42e13ca..b1f10f1c7ac9 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -307,7 +307,7 @@ com.azure.resourcemanager:azure-resourcemanager-relay;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-costmanagement;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-recoveryservices;1.5.0;1.6.0 com.azure.resourcemanager:azure-resourcemanager-kusto;1.2.0;1.3.0-beta.1 -com.azure.resourcemanager:azure-resourcemanager-loganalytics;1.1.0;2.0.0 +com.azure.resourcemanager:azure-resourcemanager-loganalytics;2.0.0;2.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-eventgrid;1.2.0;1.3.0-beta.2 com.azure.resourcemanager:azure-resourcemanager-healthbot;1.1.0;1.2.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-confluent;1.2.0;1.3.0-beta.1 diff --git a/sdk/applicationinsights/azure-resourcemanager-applicationinsights/pom.xml b/sdk/applicationinsights/azure-resourcemanager-applicationinsights/pom.xml index 747f78fa0fa5..d3a63cf0b0cf 100644 --- a/sdk/applicationinsights/azure-resourcemanager-applicationinsights/pom.xml +++ b/sdk/applicationinsights/azure-resourcemanager-applicationinsights/pom.xml @@ -98,7 +98,7 @@ com.azure.resourcemanager azure-resourcemanager-loganalytics - 1.1.0 + 2.0.0 test diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md b/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md index a2d2c16e79bf..a9d24659a7fb 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md @@ -1,5 +1,15 @@ # Release History +## 2.1.0-beta.1 (Unreleased) + +### Features Added + +### Breaking Changes + +### Bugs Fixed + +### Other Changes + ## 2.0.0 (2025-12-22) - Azure Resource Manager LogAnalytics client library for Java. This package contains Microsoft Azure SDK for LogAnalytics Management SDK. Operational Insights Client. Package tag package-2025-07-01. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml b/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml index 8e25000311ab..ea4331971cab 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml @@ -14,7 +14,7 @@ com.azure.resourcemanager azure-resourcemanager-loganalytics - 2.0.0 + 2.1.0-beta.1 jar Microsoft Azure SDK for LogAnalytics Management From 89cefdc0a5afc9401bbfecc96929231625b841af Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Mon, 22 Dec 2025 11:56:12 -0800 Subject: [PATCH 07/41] Migrate stress cluster resource groups (#47491) Co-authored-by: Ben Broderick Phillips --- .../stress-testing/deploy-stress-tests.ps1 | 25 +++++++++++++++++++ .../stress-test-deployment-lib.ps1 | 6 ++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/eng/common/scripts/stress-testing/deploy-stress-tests.ps1 b/eng/common/scripts/stress-testing/deploy-stress-tests.ps1 index cf763b5bb1cd..3f8c0f63bb43 100755 --- a/eng/common/scripts/stress-testing/deploy-stress-tests.ps1 +++ b/eng/common/scripts/stress-testing/deploy-stress-tests.ps1 @@ -42,5 +42,30 @@ param( . $PSScriptRoot/stress-test-deployment-lib.ps1 +# If there are local changes to values.yaml it's almost certain that the user +# is an admin and has provisioned a new stress cluster but not published a +# new addons chart with the new infra config values. In these cases we should +# just fail, as deploying without the local addons override causes misleading +# errors in the cluster with pods not able to mount storage accounts using the +# old values.yaml reference from the published stress-test-addons helm chart. +if (!$LocalAddonsPath) { + try { + $repoRoot = git -C $PSScriptRoot rev-parse --show-toplevel 2>$null + } catch { + $repoRoot = $null + } + + if ($repoRoot -and (Split-Path $repoRoot -Leaf) -eq "azure-sdk-tools") { + $valuesFile = Join-Path $repoRoot "tools/stress-cluster/cluster/kubernetes/stress-test-addons/values.yaml" + if (Test-Path $valuesFile) { + $valuesStatus = git -C $repoRoot status --porcelain -- $valuesFile + if ($valuesStatus) { + $localAddonsDir = Split-Path $valuesFile -Parent + throw "Detected changes to '$valuesFile' without -LocalAddonsPath. Re-run with '-LocalAddonsPath $localAddonsDir' to apply local addon values." + } + } + } +} + CheckDependencies DeployStressTests @PSBoundParameters diff --git a/eng/common/scripts/stress-testing/stress-test-deployment-lib.ps1 b/eng/common/scripts/stress-testing/stress-test-deployment-lib.ps1 index a9f45a0a9a00..64d850bf896f 100644 --- a/eng/common/scripts/stress-testing/stress-test-deployment-lib.ps1 +++ b/eng/common/scripts/stress-testing/stress-test-deployment-lib.ps1 @@ -122,21 +122,21 @@ function DeployStressTests( if ($clusterGroup -or $subscription) { Write-Warning "Overriding cluster group and subscription with defaults for 'pg' environment." } - $clusterGroup = 'rg-stress-cluster-pg' + $clusterGroup = 'SSS3PT_rg-stress-cluster-pg' $subscription = 'Azure SDK Test Resources - TME' $tenant = '70a036f6-8e4d-4615-bad6-149c02e7720d' } elseif ($environment -eq 'prod') { if ($clusterGroup -or $subscription) { Write-Warning "Overriding cluster group and subscription with defaults for 'prod' environment." } - $clusterGroup = 'rg-stress-cluster-prod' + $clusterGroup = 'SSS3PT_rg-stress-cluster-prod' $subscription = 'Azure SDK Test Resources - TME' $tenant = '70a036f6-8e4d-4615-bad6-149c02e7720d' } elseif ($environment -eq 'storage') { if ($clusterGroup -or $subscription) { Write-Warning "Overriding cluster group and subscription with defaults for 'storage' environment." } - $clusterGroup = 'rg-stress-cluster-storage' + $clusterGroup = 'SSS3PT_rg-stress-cluster-storage' $subscription = 'Azure SDK Test Resources - TME' $tenant = '72f988bf-86f1-41af-91ab-2d7cd011db47' } elseif (!$clusterGroup -or !$subscription -or $tenant) { From b4d7e6b20e3a56d635bb790edc2656a1085860ea Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Mon, 22 Dec 2025 13:53:51 -0800 Subject: [PATCH 08/41] Increment package versions for containerservicefleet releases (#47585) --- eng/versioning/version_client.txt | 2 +- .../CHANGELOG.md | 10 ++++++++++ .../pom.xml | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index b1f10f1c7ac9..62711bd793fc 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -433,7 +433,7 @@ com.azure.resourcemanager:azure-resourcemanager-recoveryservicessiterecovery;1.3 com.azure.resourcemanager:azure-resourcemanager-billingbenefits;1.0.0-beta.2;1.0.0-beta.3 com.azure.resourcemanager:azure-resourcemanager-providerhub;2.0.0;2.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-reservations;1.0.0;1.1.0-beta.1 -com.azure.resourcemanager:azure-resourcemanager-containerservicefleet;1.2.0;1.3.0-beta.2 +com.azure.resourcemanager:azure-resourcemanager-containerservicefleet;1.2.0;1.3.0-beta.3 com.azure.resourcemanager:azure-resourcemanager-storagemover;1.4.0;1.5.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-graphservices;1.1.0;1.2.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-voiceservices;1.1.0;1.2.0-beta.1 diff --git a/sdk/containerservicefleet/azure-resourcemanager-containerservicefleet/CHANGELOG.md b/sdk/containerservicefleet/azure-resourcemanager-containerservicefleet/CHANGELOG.md index 1dfa13352fd2..3ed4dee14559 100644 --- a/sdk/containerservicefleet/azure-resourcemanager-containerservicefleet/CHANGELOG.md +++ b/sdk/containerservicefleet/azure-resourcemanager-containerservicefleet/CHANGELOG.md @@ -1,5 +1,15 @@ # Release History +## 1.3.0-beta.3 (Unreleased) + +### Features Added + +### Breaking Changes + +### Bugs Fixed + +### Other Changes + ## 1.3.0-beta.2 (2025-12-03) - Azure Resource Manager Container Service Fleet client library for Java. This package contains Microsoft Azure SDK for Container Service Fleet Management SDK. Azure Kubernetes Fleet Manager api client. Package api-version 2025-08-01-preview. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). diff --git a/sdk/containerservicefleet/azure-resourcemanager-containerservicefleet/pom.xml b/sdk/containerservicefleet/azure-resourcemanager-containerservicefleet/pom.xml index 3a7fca1b426d..044dafead1f7 100644 --- a/sdk/containerservicefleet/azure-resourcemanager-containerservicefleet/pom.xml +++ b/sdk/containerservicefleet/azure-resourcemanager-containerservicefleet/pom.xml @@ -14,7 +14,7 @@ com.azure.resourcemanager azure-resourcemanager-containerservicefleet - 1.3.0-beta.2 + 1.3.0-beta.3 jar Microsoft Azure SDK for Container Service Fleet Management From 14f5b5eebef43c44b35ad9db6ff3d852642718d7 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 25 Dec 2025 16:40:56 +0800 Subject: [PATCH 09/41] Fix ClassNotFoundException for StringUtils in AAD starter (#47601) --- sdk/spring/CHANGELOG.md | 9 +++ .../AadAuthorizationServerEndpoints.java | 4 +- .../AadAuthorizationServerEndpointsTests.java | 74 +++++++++++++++++++ 3 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/properties/AadAuthorizationServerEndpointsTests.java diff --git a/sdk/spring/CHANGELOG.md b/sdk/spring/CHANGELOG.md index 3a65e0f34f4d..a8286ac7814c 100644 --- a/sdk/spring/CHANGELOG.md +++ b/sdk/spring/CHANGELOG.md @@ -1,5 +1,14 @@ # Release History +## 6.2.0-beta.1 (Unreleased) + +### Spring Cloud Azure Autoconfigure +This section includes changes in `spring-cloud-azure-autoconfigure` module. + +#### Bugs Fixed + +- Fix `ClassNotFoundException: com.nimbusds.oauth2.sdk.util.StringUtils` in Active Directory starter. ([#47600](https://github.com/Azure/azure-sdk-for-java/issues/47600)) + ## 6.1.0 (2025-12-16) - This release is compatible with Spring Boot 3.5.0-3.5.8. (Note: 3.5.x (x>8) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2025.0.0. (Note: 2025.0.x (x>0) should be supported, but they aren't tested with this release.) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/properties/AadAuthorizationServerEndpoints.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/properties/AadAuthorizationServerEndpoints.java index ca5c53af3e44..d69733ee3c1f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/properties/AadAuthorizationServerEndpoints.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/properties/AadAuthorizationServerEndpoints.java @@ -3,7 +3,7 @@ package com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties; -import com.nimbusds.oauth2.sdk.util.StringUtils; +import org.springframework.util.StringUtils; /** * Used to get endpoints for Microsoft Identity authorization server. @@ -27,7 +27,7 @@ public class AadAuthorizationServerEndpoints { * @param tenantId the tenant ID */ public AadAuthorizationServerEndpoints(String baseUri, String tenantId) { - if (StringUtils.isBlank(baseUri)) { + if (!StringUtils.hasText(baseUri)) { baseUri = DEFAULT_BASE_URI; } this.baseUri = addSlash(baseUri); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/properties/AadAuthorizationServerEndpointsTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/properties/AadAuthorizationServerEndpointsTests.java new file mode 100644 index 000000000000..08ea74dc0c98 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/properties/AadAuthorizationServerEndpointsTests.java @@ -0,0 +1,74 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class AadAuthorizationServerEndpointsTests { + + private static final String DEFAULT_BASE_URI = "https://login.microsoftonline.com/"; + private static final String CUSTOM_BASE_URI = "https://custom.endpoint.com/"; + private static final String TENANT_ID = "test-tenant-id"; + + @Test + void constructorWithNullBaseUri() { + AadAuthorizationServerEndpoints endpoints = new AadAuthorizationServerEndpoints(null, TENANT_ID); + assertEquals(DEFAULT_BASE_URI, endpoints.getBaseUri()); + } + + @Test + void constructorWithEmptyBaseUri() { + AadAuthorizationServerEndpoints endpoints = new AadAuthorizationServerEndpoints("", TENANT_ID); + assertEquals(DEFAULT_BASE_URI, endpoints.getBaseUri()); + } + + @Test + void constructorWithWhitespaceBaseUri() { + AadAuthorizationServerEndpoints endpoints = new AadAuthorizationServerEndpoints(" ", TENANT_ID); + assertEquals(DEFAULT_BASE_URI, endpoints.getBaseUri()); + } + + @Test + void constructorWithValidBaseUri() { + AadAuthorizationServerEndpoints endpoints = new AadAuthorizationServerEndpoints(CUSTOM_BASE_URI, TENANT_ID); + assertEquals(CUSTOM_BASE_URI, endpoints.getBaseUri()); + } + + @Test + void constructorWithBaseUriWithoutTrailingSlash() { + String baseUriWithoutSlash = "https://custom.endpoint.com"; + AadAuthorizationServerEndpoints endpoints = new AadAuthorizationServerEndpoints(baseUriWithoutSlash, TENANT_ID); + assertEquals(baseUriWithoutSlash + "/", endpoints.getBaseUri()); + } + + @Test + void getAuthorizationEndpoint() { + AadAuthorizationServerEndpoints endpoints = new AadAuthorizationServerEndpoints(DEFAULT_BASE_URI, TENANT_ID); + String authEndpoint = endpoints.getAuthorizationEndpoint(); + assertEquals(DEFAULT_BASE_URI + TENANT_ID + "/oauth2/v2.0/authorize", authEndpoint); + } + + @Test + void getTokenEndpoint() { + AadAuthorizationServerEndpoints endpoints = new AadAuthorizationServerEndpoints(DEFAULT_BASE_URI, TENANT_ID); + String tokenEndpoint = endpoints.getTokenEndpoint(); + assertEquals(DEFAULT_BASE_URI + TENANT_ID + "/oauth2/v2.0/token", tokenEndpoint); + } + + @Test + void getJwkSetEndpoint() { + AadAuthorizationServerEndpoints endpoints = new AadAuthorizationServerEndpoints(DEFAULT_BASE_URI, TENANT_ID); + String jwkSetEndpoint = endpoints.getJwkSetEndpoint(); + assertEquals(DEFAULT_BASE_URI + TENANT_ID + "/discovery/v2.0/keys", jwkSetEndpoint); + } + + @Test + void getEndSessionEndpoint() { + AadAuthorizationServerEndpoints endpoints = new AadAuthorizationServerEndpoints(DEFAULT_BASE_URI, TENANT_ID); + String endSessionEndpoint = endpoints.getEndSessionEndpoint(); + assertEquals(DEFAULT_BASE_URI + TENANT_ID + "/oauth2/v2.0/logout", endSessionEndpoint); + } +} From cb363c719c1747c2247131ff056d6ebd892468be Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Fri, 26 Dec 2025 00:59:55 +0000 Subject: [PATCH 10/41] Fix error reported by 'Link verification check' (#47603) --- sdk/spring/azure-spring-data-cosmos/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/spring/azure-spring-data-cosmos/README.md b/sdk/spring/azure-spring-data-cosmos/README.md index bffdf144499d..93b76bb4075d 100644 --- a/sdk/spring/azure-spring-data-cosmos/README.md +++ b/sdk/spring/azure-spring-data-cosmos/README.md @@ -280,8 +280,8 @@ java -javaagent:"" -jar #### Using database provisioned throughput -Cosmos supports both [container](https://learn.microsoft.com/azure/cosmos-db/sql/how-to-provision-container-throughput) -and [database](https://learn.microsoft.com/azure/cosmos-db/sql/how-to-provision-database-throughput) provisioned +Cosmos supports both [container](https://learn.microsoft.com/azure/cosmos-db/how-to-provision-container-throughput) +and [database](https://learn.microsoft.com/azure/cosmos-db/how-to-provision-database-throughput) provisioned throughput. By default, spring-data-cosmos will provision throughput for each container created. If you prefer to share throughput between containers, you can enable database provisioned throughput via CosmosConfig. @@ -608,7 +608,7 @@ public class MyItem { String _etag; } ``` -- Read more about Optimistic Locking [here](https://learn.microsoft.com/azure/cosmos-db/sql/database-transactions-optimistic-concurrency#optimistic-concurrency-control) +- Read more about Optimistic Locking [here](https://learn.microsoft.com/azure/cosmos-db/database-transactions-optimistic-concurrency#optimistic-concurrency-control) ### Spring Data custom query, pageable and sorting - Azure-spring-data-cosmos supports [spring data custom queries][spring_data_custom_query] From 0ee2409e6e1eb91b3ddaa3a2be45d1b68c69ce26 Mon Sep 17 00:00:00 2001 From: Muyao Feng <92105726+Netyyyy@users.noreply.github.com> Date: Tue, 30 Dec 2025 09:33:33 +0800 Subject: [PATCH 11/41] External dependencies upgrade - Spring Boot 3.5.9 and Spring Cloud 2025.0.1 (#47608) * Upgrade external dependencies to align with Spring Boot 3.5.9 * Add a new word in .vscode/cspell.json: xmlparserv * fix IT --------- Co-authored-by: github-actions Co-authored-by: Rujun Chen --- .vscode/cspell.json | 3 +- eng/versioning/external_dependencies.txt | 148 +- sdk/spring/CHANGELOG.md | 1 + sdk/spring/azure-spring-data-cosmos/pom.xml | 58 +- ...t_3.5.9_managed_external_dependencies.txt} | 2128 ++++++++--------- .../pom.xml | 18 +- .../spring-cloud-azure-actuator/pom.xml | 12 +- .../pom.xml | 20 +- .../pom.xml | 28 +- .../spring-cloud-azure-autoconfigure/pom.xml | 104 +- sdk/spring/spring-cloud-azure-core/pom.xml | 12 +- .../spring-cloud-azure-docker-compose/pom.xml | 12 +- .../pom.xml | 16 +- .../pom.xml | 34 +- .../pom.xml | 6 +- .../pom.xml | 6 +- .../jms/ServiceBusJmsConnectionStringIT.java | 4 +- ...on-servicebus-jms-passwordless-caching.yml | 3 + ...ation-servicebus-jms-passwordless-pool.yml | 2 + .../cosmos-spring/test-resources.json | 2 +- .../pom.xml | 8 +- sdk/spring/spring-cloud-azure-service/pom.xml | 10 +- .../pom.xml | 8 +- .../pom.xml | 4 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 2 +- .../pom.xml | 8 +- .../pom.xml | 8 +- .../pom.xml | 18 +- sdk/spring/spring-cloud-azure-starter/pom.xml | 2 +- .../pom.xml | 20 +- .../pom.xml | 14 +- .../pom.xml | 20 +- .../pom.xml | 14 +- .../spring-cloud-azure-testcontainers/pom.xml | 16 +- .../spring-integration-azure-core/pom.xml | 14 +- .../pom.xml | 10 +- .../pom.xml | 10 +- .../pom.xml | 6 +- .../spring-messaging-azure-eventhubs/pom.xml | 22 +- .../spring-messaging-azure-servicebus/pom.xml | 18 +- .../pom.xml | 8 +- sdk/spring/spring-messaging-azure/pom.xml | 24 +- 48 files changed, 1450 insertions(+), 1443 deletions(-) rename sdk/spring/scripts/{spring_boot_3.5.5_managed_external_dependencies.txt => spring_boot_3.5.9_managed_external_dependencies.txt} (51%) diff --git a/.vscode/cspell.json b/.vscode/cspell.json index b692e840c4cc..9a864abbac2a 100644 --- a/.vscode/cspell.json +++ b/.vscode/cspell.json @@ -437,7 +437,8 @@ "windowtitle", "wordomatic", "xlint", - "XLint" + "XLint", + "xmlparserv" ], "overrides": [ { diff --git a/eng/versioning/external_dependencies.txt b/eng/versioning/external_dependencies.txt index ee3006837816..35ba63950967 100644 --- a/eng/versioning/external_dependencies.txt +++ b/eng/versioning/external_dependencies.txt @@ -299,103 +299,103 @@ storage_com.microsoft.azure:azure-storage;8.6.6 # sdk\spring\pom.xml modules springboot3_com.diffplug.spotless:spotless-maven-plugin;2.30.0 -springboot3_com.fasterxml.jackson.core:jackson-annotations;2.19.2 -springboot3_com.fasterxml.jackson.core:jackson-core;2.19.2 -springboot3_com.fasterxml.jackson.core:jackson-databind;2.19.2 -springboot3_com.fasterxml.jackson.dataformat:jackson-dataformat-xml;2.19.2 -springboot3_com.fasterxml.jackson.datatype:jackson-datatype-jdk8;2.19.2 -springboot3_com.fasterxml.jackson.datatype:jackson-datatype-jsr310;2.19.2 -springboot3_com.fasterxml.jackson.module:jackson-module-afterburner;2.19.2 -springboot3_com.fasterxml.jackson.module:jackson-module-parameter-names;2.19.2 +springboot3_com.fasterxml.jackson.core:jackson-annotations;2.19.4 +springboot3_com.fasterxml.jackson.core:jackson-core;2.19.4 +springboot3_com.fasterxml.jackson.core:jackson-databind;2.19.4 +springboot3_com.fasterxml.jackson.dataformat:jackson-dataformat-xml;2.19.4 +springboot3_com.fasterxml.jackson.datatype:jackson-datatype-jdk8;2.19.4 +springboot3_com.fasterxml.jackson.datatype:jackson-datatype-jsr310;2.19.4 +springboot3_com.fasterxml.jackson.module:jackson-module-afterburner;2.19.4 +springboot3_com.fasterxml.jackson.module:jackson-module-parameter-names;2.19.4 springboot3_com.github.spotbugs:spotbugs-maven-plugin;4.8.2.0 springboot3_com.google.code.findbugs:jsr305;3.0.2 -springboot3_com.mysql:mysql-connector-j;9.4.0 +springboot3_com.mysql:mysql-connector-j;9.5.0 springboot3_com.nimbusds:nimbus-jose-jwt;9.37.3 springboot3_io.lettuce:lettuce-core;6.6.0.RELEASE -springboot3_io.micrometer:micrometer-core;1.15.3 -springboot3_io.netty:netty-buffer;4.1.124.Final -springboot3_io.netty:netty-codec-http;4.1.124.Final -springboot3_io.netty:netty-common;4.1.124.Final -springboot3_io.netty:netty-handler;4.1.124.Final -springboot3_io.netty:netty-transport-native-epoll;4.1.124.Final -springboot3_io.netty:netty-transport-native-kqueue;4.1.124.Final -springboot3_io.netty:netty-transport;4.1.124.Final -springboot3_io.projectreactor.netty:reactor-netty;1.2.9 -springboot3_io.projectreactor:reactor-test;3.7.9 +springboot3_io.micrometer:micrometer-core;1.15.7 +springboot3_io.netty:netty-buffer;4.1.130.Final +springboot3_io.netty:netty-codec-http;4.1.130.Final +springboot3_io.netty:netty-common;4.1.130.Final +springboot3_io.netty:netty-handler;4.1.130.Final +springboot3_io.netty:netty-transport-native-epoll;4.1.130.Final +springboot3_io.netty:netty-transport-native-kqueue;4.1.130.Final +springboot3_io.netty:netty-transport;4.1.130.Final +springboot3_io.projectreactor.netty:reactor-netty;1.2.13 +springboot3_io.projectreactor:reactor-test;3.7.14 springboot3_jakarta.servlet:jakarta.servlet-api;6.0.0 springboot3_jakarta.validation:jakarta.validation-api;3.0.2 springboot3_javax.annotation:javax.annotation-api;1.3.2 -springboot3_net.bytebuddy:byte-buddy-agent;1.17.7 -springboot3_net.bytebuddy:byte-buddy;1.17.7 +springboot3_net.bytebuddy:byte-buddy-agent;1.17.8 +springboot3_net.bytebuddy:byte-buddy;1.17.8 springboot3_org.apache.commons:commons-lang3;3.17.0 springboot3_org.apache.kafka:kafka-clients;3.9.1 springboot3_org.apache.maven.plugins:maven-antrun-plugin;3.1.0 -springboot3_org.apache.maven.plugins:maven-compiler-plugin;3.14.0 +springboot3_org.apache.maven.plugins:maven-compiler-plugin;3.14.1 springboot3_org.apache.maven.plugins:maven-enforcer-plugin;3.5.0 -springboot3_org.apache.maven.plugins:maven-failsafe-plugin;3.5.3 +springboot3_org.apache.maven.plugins:maven-failsafe-plugin;3.5.4 springboot3_org.apache.maven.plugins:maven-jar-plugin;3.4.2 springboot3_org.apache.maven.plugins:maven-javadoc-plugin;3.11.3 -springboot3_org.apache.maven.plugins:maven-surefire-plugin;3.5.3 -springboot3_org.assertj:assertj-core;3.27.4 +springboot3_org.apache.maven.plugins:maven-surefire-plugin;3.5.4 +springboot3_org.assertj:assertj-core;3.27.6 springboot3_org.hibernate.validator:hibernate-validator;8.0.3.Final springboot3_org.javatuples:javatuples;1.2 springboot3_org.junit.jupiter:junit-jupiter;5.12.2 -springboot3_org.messaginghub:pooled-jms;3.1.7 +springboot3_org.messaginghub:pooled-jms;3.1.8 springboot3_org.mockito:mockito-core;5.17.0 -springboot3_org.postgresql:postgresql;42.7.7 +springboot3_org.postgresql:postgresql;42.7.8 springboot3_org.revapi:revapi-maven-plugin;0.14.6 springboot3_org.slf4j:slf4j-api;2.0.17 springboot3_org.slf4j:slf4j-simple;2.0.17 -springboot3_org.springframework.boot:spring-boot-actuator-autoconfigure;3.5.5 -springboot3_org.springframework.boot:spring-boot-actuator;3.5.5 -springboot3_org.springframework.boot:spring-boot-autoconfigure;3.5.5 -springboot3_org.springframework.boot:spring-boot-configuration-metadata;3.5.5 -springboot3_org.springframework.boot:spring-boot-configuration-processor;3.5.5 -springboot3_org.springframework.boot:spring-boot-docker-compose;3.5.5 -springboot3_org.springframework.boot:spring-boot-starter-actuator;3.5.5 -springboot3_org.springframework.boot:spring-boot-starter-data-jdbc;3.5.5 -springboot3_org.springframework.boot:spring-boot-starter-integration;3.5.5 -springboot3_org.springframework.boot:spring-boot-starter-parent;3.5.5 -springboot3_org.springframework.boot:spring-boot-starter-test;3.5.5 -springboot3_org.springframework.boot:spring-boot-starter-web;3.5.5 -springboot3_org.springframework.boot:spring-boot-starter;3.5.5 -springboot3_org.springframework.boot:spring-boot-test;3.5.5 -springboot3_org.springframework.boot:spring-boot-testcontainers;3.5.5 -springboot3_org.springframework.cloud:spring-cloud-bus;4.3.0 -springboot3_org.springframework.cloud:spring-cloud-context;4.3.0 -springboot3_org.springframework.cloud:spring-cloud-starter-stream-kafka;4.3.0 -springboot3_org.springframework.cloud:spring-cloud-stream-test-binder;4.3.0 -springboot3_org.springframework.cloud:spring-cloud-stream;4.3.0 -springboot3_org.springframework.data:spring-data-commons;3.5.3 -springboot3_org.springframework.data:spring-data-redis;3.5.3 -springboot3_org.springframework.integration:spring-integration-core;6.5.1 -springboot3_org.springframework.kafka:spring-kafka;3.3.9 +springboot3_org.springframework.boot:spring-boot-actuator-autoconfigure;3.5.9 +springboot3_org.springframework.boot:spring-boot-actuator;3.5.9 +springboot3_org.springframework.boot:spring-boot-autoconfigure;3.5.9 +springboot3_org.springframework.boot:spring-boot-configuration-metadata;3.5.9 +springboot3_org.springframework.boot:spring-boot-configuration-processor;3.5.9 +springboot3_org.springframework.boot:spring-boot-docker-compose;3.5.9 +springboot3_org.springframework.boot:spring-boot-starter-actuator;3.5.9 +springboot3_org.springframework.boot:spring-boot-starter-data-jdbc;3.5.9 +springboot3_org.springframework.boot:spring-boot-starter-integration;3.5.9 +springboot3_org.springframework.boot:spring-boot-starter-parent;3.5.9 +springboot3_org.springframework.boot:spring-boot-starter-test;3.5.9 +springboot3_org.springframework.boot:spring-boot-starter-web;3.5.9 +springboot3_org.springframework.boot:spring-boot-starter;3.5.9 +springboot3_org.springframework.boot:spring-boot-test;3.5.9 +springboot3_org.springframework.boot:spring-boot-testcontainers;3.5.9 +springboot3_org.springframework.cloud:spring-cloud-bus;4.3.1 +springboot3_org.springframework.cloud:spring-cloud-context;4.3.1 +springboot3_org.springframework.cloud:spring-cloud-starter-stream-kafka;4.3.1 +springboot3_org.springframework.cloud:spring-cloud-stream-test-binder;4.3.1 +springboot3_org.springframework.cloud:spring-cloud-stream;4.3.1 +springboot3_org.springframework.data:spring-data-commons;3.5.7 +springboot3_org.springframework.data:spring-data-redis;3.5.7 +springboot3_org.springframework.integration:spring-integration-core;6.5.5 +springboot3_org.springframework.kafka:spring-kafka;3.3.11 springboot3_org.springframework.retry:spring-retry;2.0.12 -springboot3_org.springframework.security:spring-security-config;6.5.3 -springboot3_org.springframework.security:spring-security-oauth2-client;6.5.3 -springboot3_org.springframework.security:spring-security-oauth2-jose;6.5.3 -springboot3_org.springframework.security:spring-security-oauth2-resource-server;6.5.3 -springboot3_org.springframework.security:spring-security-web;6.5.3 -springboot3_org.springframework:spring-beans;6.2.10 -springboot3_org.springframework:spring-context-support;6.2.10 -springboot3_org.springframework:spring-context;6.2.10 -springboot3_org.springframework:spring-core-test;6.2.10 -springboot3_org.springframework:spring-core;6.2.10 -springboot3_org.springframework:spring-expression;6.2.10 -springboot3_org.springframework:spring-jdbc;6.2.10 -springboot3_org.springframework:spring-jms;6.2.10 -springboot3_org.springframework:spring-messaging;6.2.10 -springboot3_org.springframework:spring-test;6.2.10 -springboot3_org.springframework:spring-tx;6.2.10 -springboot3_org.springframework:spring-web;6.2.10 -springboot3_org.springframework:spring-webmvc;6.2.10 -springboot3_org.testcontainers:junit-jupiter;1.21.3 -springboot3_org.testcontainers:azure;1.21.3 +springboot3_org.springframework.security:spring-security-config;6.5.7 +springboot3_org.springframework.security:spring-security-oauth2-client;6.5.7 +springboot3_org.springframework.security:spring-security-oauth2-jose;6.5.7 +springboot3_org.springframework.security:spring-security-oauth2-resource-server;6.5.7 +springboot3_org.springframework.security:spring-security-web;6.5.7 +springboot3_org.springframework:spring-beans;6.2.15 +springboot3_org.springframework:spring-context-support;6.2.15 +springboot3_org.springframework:spring-context;6.2.15 +springboot3_org.springframework:spring-core-test;6.2.15 +springboot3_org.springframework:spring-core;6.2.15 +springboot3_org.springframework:spring-expression;6.2.15 +springboot3_org.springframework:spring-jdbc;6.2.15 +springboot3_org.springframework:spring-jms;6.2.15 +springboot3_org.springframework:spring-messaging;6.2.15 +springboot3_org.springframework:spring-test;6.2.15 +springboot3_org.springframework:spring-tx;6.2.15 +springboot3_org.springframework:spring-web;6.2.15 +springboot3_org.springframework:spring-webmvc;6.2.15 +springboot3_org.testcontainers:junit-jupiter;1.21.4 +springboot3_org.testcontainers:azure;1.21.4 springboot3_jakarta.annotation:jakarta.annotation-api;3.0.0 -springboot3_ch.qos.logback:logback-classic;1.5.18 +springboot3_ch.qos.logback:logback-classic;1.5.22 # Used for Spring version updates -springboot3_org.springframework.boot:spring-boot-dependencies;3.5.5 -springboot3_org.springframework.cloud:spring-cloud-dependencies;2025.0.0 +springboot3_org.springframework.boot:spring-boot-dependencies;3.5.9 +springboot3_org.springframework.cloud:spring-cloud-dependencies;2025.0.1 # Java 7 support diff --git a/sdk/spring/CHANGELOG.md b/sdk/spring/CHANGELOG.md index a8286ac7814c..9df3c3f53d7e 100644 --- a/sdk/spring/CHANGELOG.md +++ b/sdk/spring/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 6.2.0-beta.1 (Unreleased) +Upgrade Spring Boot dependencies version to 3.5.9 and Spring Cloud dependencies version to 2025.0.1 ### Spring Cloud Azure Autoconfigure This section includes changes in `spring-cloud-azure-autoconfigure` module. diff --git a/sdk/spring/azure-spring-data-cosmos/pom.xml b/sdk/spring/azure-spring-data-cosmos/pom.xml index 0b061eff639a..6ebb1bb437b2 100644 --- a/sdk/spring/azure-spring-data-cosmos/pom.xml +++ b/sdk/spring/azure-spring-data-cosmos/pom.xml @@ -53,7 +53,7 @@ org.springframework spring-core - 6.2.10 + 6.2.15 commons-logging @@ -64,27 +64,27 @@ org.springframework spring-web - 6.2.10 + 6.2.15 org.springframework spring-beans - 6.2.10 + 6.2.15 org.springframework spring-context - 6.2.10 + 6.2.15 org.springframework spring-tx - 6.2.10 + 6.2.15 org.springframework.data spring-data-commons - 3.5.3 + 3.5.7 org.slf4j @@ -95,7 +95,7 @@ org.springframework spring-expression - 6.2.10 + 6.2.15 com.azure @@ -105,17 +105,17 @@ com.fasterxml.jackson.module jackson-module-parameter-names - 2.19.2 + 2.19.4 com.fasterxml.jackson.datatype jackson-datatype-jdk8 - 2.19.2 + 2.19.4 com.fasterxml.jackson.core jackson-annotations - 2.19.2 + 2.19.4 org.javatuples @@ -145,19 +145,19 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test org.springframework.boot spring-boot-starter-test - 3.5.5 + 3.5.9 test @@ -169,7 +169,7 @@ io.projectreactor reactor-test - 3.7.9 + 3.7.14 test @@ -203,7 +203,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -255,17 +255,17 @@ - org.springframework:spring-beans:[6.2.10] - org.springframework:spring-web:[6.2.10] - org.springframework:spring-tx:[6.2.10] - org.springframework:spring-expression:[6.2.10] - org.springframework:spring-core:[6.2.10] - org.springframework:spring-context:[6.2.10] - org.springframework.data:spring-data-commons:[3.5.3] + org.springframework:spring-beans:[6.2.15] + org.springframework:spring-web:[6.2.15] + org.springframework:spring-tx:[6.2.15] + org.springframework:spring-expression:[6.2.15] + org.springframework:spring-core:[6.2.15] + org.springframework:spring-context:[6.2.15] + org.springframework.data:spring-data-commons:[3.5.7] org.javatuples:javatuples:[1.2] - com.fasterxml.jackson.core:jackson-annotations:[2.19.2] - com.fasterxml.jackson.datatype:jackson-datatype-jdk8:[2.19.2] - com.fasterxml.jackson.module:jackson-module-parameter-names:[2.19.2] + com.fasterxml.jackson.core:jackson-annotations:[2.19.4] + com.fasterxml.jackson.datatype:jackson-datatype-jdk8:[2.19.4] + com.fasterxml.jackson.module:jackson-module-parameter-names:[2.19.4] javax.annotation:javax.annotation-api:[1.3.2] org.apache.commons:commons-lang3:[3.17.0] org.slf4j:slf4j-api:[2.0.17] @@ -296,7 +296,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.3 + 3.5.4 src/test/resources/application.properties ${skip.integration.tests} @@ -330,7 +330,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.5.3 + 3.5.4 @@ -351,7 +351,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.5.3 + 3.5.4 @@ -371,7 +371,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.3 + 3.5.4 diff --git a/sdk/spring/scripts/spring_boot_3.5.5_managed_external_dependencies.txt b/sdk/spring/scripts/spring_boot_3.5.9_managed_external_dependencies.txt similarity index 51% rename from sdk/spring/scripts/spring_boot_3.5.5_managed_external_dependencies.txt rename to sdk/spring/scripts/spring_boot_3.5.9_managed_external_dependencies.txt index 4ba839f64a4a..e44aef3fd2e1 100644 --- a/sdk/spring/scripts/spring_boot_3.5.5_managed_external_dependencies.txt +++ b/sdk/spring/scripts/spring_boot_3.5.9_managed_external_dependencies.txt @@ -1,99 +1,99 @@ -ch.qos.logback:logback-classic;1.5.18 -ch.qos.logback:logback-core;1.5.18 -co.elastic.clients:elasticsearch-java;8.18.5 +ch.qos.logback:logback-classic;1.5.22 +ch.qos.logback:logback-core;1.5.22 +co.elastic.clients:elasticsearch-java;8.18.8 com.couchbase.client:java-client;3.8.3 -com.datastax.oss:native-protocol;1.5.1 +com.datastax.oss:native-protocol;1.5.2 com.ecwid.consul:consul-api;1.4.5 -com.fasterxml.jackson.core:jackson-annotations;2.19.2 -com.fasterxml.jackson.core:jackson-core;2.19.2 -com.fasterxml.jackson.core:jackson-databind;2.19.2 -com.fasterxml.jackson.dataformat:jackson-dataformat-avro;2.19.2 -com.fasterxml.jackson.dataformat:jackson-dataformat-cbor;2.19.2 -com.fasterxml.jackson.dataformat:jackson-dataformat-csv;2.19.2 -com.fasterxml.jackson.dataformat:jackson-dataformat-ion;2.19.2 -com.fasterxml.jackson.dataformat:jackson-dataformat-properties;2.19.2 -com.fasterxml.jackson.dataformat:jackson-dataformat-protobuf;2.19.2 -com.fasterxml.jackson.dataformat:jackson-dataformat-smile;2.19.2 -com.fasterxml.jackson.dataformat:jackson-dataformat-toml;2.19.2 -com.fasterxml.jackson.dataformat:jackson-dataformat-xml;2.19.2 -com.fasterxml.jackson.dataformat:jackson-dataformat-yaml;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-eclipse-collections;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-guava;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-hibernate4;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-hibernate5;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-hibernate5-jakarta;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-hibernate6;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-hppc;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-jakarta-jsonp;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-javax-money;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-jaxrs;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-jdk8;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-joda;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-joda-money;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-json-org;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-jsr310;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-jsr353;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-moneta;2.19.2 -com.fasterxml.jackson.datatype:jackson-datatype-pcollections;2.19.2 -com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-base;2.19.2 -com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-cbor-provider;2.19.2 -com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-json-provider;2.19.2 -com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-smile-provider;2.19.2 -com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-xml-provider;2.19.2 -com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-yaml-provider;2.19.2 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-base;2.19.2 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-cbor-provider;2.19.2 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider;2.19.2 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-smile-provider;2.19.2 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-xml-provider;2.19.2 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-yaml-provider;2.19.2 -com.fasterxml.jackson.jr:jackson-jr-all;2.19.2 -com.fasterxml.jackson.jr:jackson-jr-annotation-support;2.19.2 -com.fasterxml.jackson.jr:jackson-jr-extension-javatime;2.19.2 -com.fasterxml.jackson.jr:jackson-jr-objects;2.19.2 -com.fasterxml.jackson.jr:jackson-jr-retrofit2;2.19.2 -com.fasterxml.jackson.jr:jackson-jr-stree;2.19.2 -com.fasterxml.jackson.module:jackson-module-afterburner;2.19.2 -com.fasterxml.jackson.module:jackson-module-android-record;2.19.2 -com.fasterxml.jackson.module:jackson-module-blackbird;2.19.2 -com.fasterxml.jackson.module:jackson-module-guice;2.19.2 -com.fasterxml.jackson.module:jackson-module-guice7;2.19.2 -com.fasterxml.jackson.module:jackson-module-jakarta-xmlbind-annotations;2.19.2 -com.fasterxml.jackson.module:jackson-module-jaxb-annotations;2.19.2 -com.fasterxml.jackson.module:jackson-module-jsonSchema;2.19.2 -com.fasterxml.jackson.module:jackson-module-jsonSchema-jakarta;2.19.2 -com.fasterxml.jackson.module:jackson-module-kotlin;2.19.2 -com.fasterxml.jackson.module:jackson-module-mrbean;2.19.2 -com.fasterxml.jackson.module:jackson-module-no-ctor-deser;2.19.2 -com.fasterxml.jackson.module:jackson-module-osgi;2.19.2 -com.fasterxml.jackson.module:jackson-module-parameter-names;2.19.2 -com.fasterxml.jackson.module:jackson-module-paranamer;2.19.2 -com.fasterxml.jackson.module:jackson-module-scala_2.11;2.19.2 -com.fasterxml.jackson.module:jackson-module-scala_2.12;2.19.2 -com.fasterxml.jackson.module:jackson-module-scala_2.13;2.19.2 -com.fasterxml.jackson.module:jackson-module-scala_3;2.19.2 -com.fasterxml.jackson:jackson-bom;2.19.2 -com.fasterxml:classmate;1.7.0 -com.github.ben-manes.caffeine:caffeine;3.2.2 -com.github.ben-manes.caffeine:guava;3.2.2 -com.github.ben-manes.caffeine:jcache;3.2.2 -com.github.ben-manes.caffeine:simulator;3.2.2 +com.fasterxml.jackson.core:jackson-annotations;2.19.4 +com.fasterxml.jackson.core:jackson-core;2.19.4 +com.fasterxml.jackson.core:jackson-databind;2.19.4 +com.fasterxml.jackson.dataformat:jackson-dataformat-avro;2.19.4 +com.fasterxml.jackson.dataformat:jackson-dataformat-cbor;2.19.4 +com.fasterxml.jackson.dataformat:jackson-dataformat-csv;2.19.4 +com.fasterxml.jackson.dataformat:jackson-dataformat-ion;2.19.4 +com.fasterxml.jackson.dataformat:jackson-dataformat-properties;2.19.4 +com.fasterxml.jackson.dataformat:jackson-dataformat-protobuf;2.19.4 +com.fasterxml.jackson.dataformat:jackson-dataformat-smile;2.19.4 +com.fasterxml.jackson.dataformat:jackson-dataformat-toml;2.19.4 +com.fasterxml.jackson.dataformat:jackson-dataformat-xml;2.19.4 +com.fasterxml.jackson.dataformat:jackson-dataformat-yaml;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-eclipse-collections;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-guava;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-hibernate4;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-hibernate5;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-hibernate5-jakarta;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-hibernate6;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-hppc;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-jakarta-jsonp;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-javax-money;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-jaxrs;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-jdk8;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-joda;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-joda-money;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-json-org;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-jsr310;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-jsr353;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-moneta;2.19.4 +com.fasterxml.jackson.datatype:jackson-datatype-pcollections;2.19.4 +com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-base;2.19.4 +com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-cbor-provider;2.19.4 +com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-json-provider;2.19.4 +com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-smile-provider;2.19.4 +com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-xml-provider;2.19.4 +com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-yaml-provider;2.19.4 +com.fasterxml.jackson.jaxrs:jackson-jaxrs-base;2.19.4 +com.fasterxml.jackson.jaxrs:jackson-jaxrs-cbor-provider;2.19.4 +com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider;2.19.4 +com.fasterxml.jackson.jaxrs:jackson-jaxrs-smile-provider;2.19.4 +com.fasterxml.jackson.jaxrs:jackson-jaxrs-xml-provider;2.19.4 +com.fasterxml.jackson.jaxrs:jackson-jaxrs-yaml-provider;2.19.4 +com.fasterxml.jackson.jr:jackson-jr-all;2.19.4 +com.fasterxml.jackson.jr:jackson-jr-annotation-support;2.19.4 +com.fasterxml.jackson.jr:jackson-jr-extension-javatime;2.19.4 +com.fasterxml.jackson.jr:jackson-jr-objects;2.19.4 +com.fasterxml.jackson.jr:jackson-jr-retrofit2;2.19.4 +com.fasterxml.jackson.jr:jackson-jr-stree;2.19.4 +com.fasterxml.jackson.module:jackson-module-afterburner;2.19.4 +com.fasterxml.jackson.module:jackson-module-android-record;2.19.4 +com.fasterxml.jackson.module:jackson-module-blackbird;2.19.4 +com.fasterxml.jackson.module:jackson-module-guice;2.19.4 +com.fasterxml.jackson.module:jackson-module-guice7;2.19.4 +com.fasterxml.jackson.module:jackson-module-jakarta-xmlbind-annotations;2.19.4 +com.fasterxml.jackson.module:jackson-module-jaxb-annotations;2.19.4 +com.fasterxml.jackson.module:jackson-module-jsonSchema;2.19.4 +com.fasterxml.jackson.module:jackson-module-jsonSchema-jakarta;2.19.4 +com.fasterxml.jackson.module:jackson-module-kotlin;2.19.4 +com.fasterxml.jackson.module:jackson-module-mrbean;2.19.4 +com.fasterxml.jackson.module:jackson-module-no-ctor-deser;2.19.4 +com.fasterxml.jackson.module:jackson-module-osgi;2.19.4 +com.fasterxml.jackson.module:jackson-module-parameter-names;2.19.4 +com.fasterxml.jackson.module:jackson-module-paranamer;2.19.4 +com.fasterxml.jackson.module:jackson-module-scala_2.11;2.19.4 +com.fasterxml.jackson.module:jackson-module-scala_2.12;2.19.4 +com.fasterxml.jackson.module:jackson-module-scala_2.13;2.19.4 +com.fasterxml.jackson.module:jackson-module-scala_3;2.19.4 +com.fasterxml.jackson:jackson-bom;2.19.4 +com.fasterxml:classmate;1.7.1 +com.github.ben-manes.caffeine:caffeine;3.2.3 +com.github.ben-manes.caffeine:guava;3.2.3 +com.github.ben-manes.caffeine:jcache;3.2.3 +com.github.ben-manes.caffeine:simulator;3.2.3 com.github.mxab.thymeleaf.extras:thymeleaf-extras-data-attribute;2.0.1 -com.github.tomakehurst:wiremock-jre8-standalone;2.35.1 -com.google.code.gson:gson;2.13.1 -com.graphql-java:graphql-java;24.1 +com.github.tomakehurst:wiremock-jre8-standalone;2.35.2 +com.google.code.gson:gson;2.13.2 +com.graphql-java:graphql-java;24.3 com.h2database:h2;2.3.232 com.hazelcast:hazelcast;5.5.0 com.hazelcast:hazelcast-spring;5.5.0 -com.ibm.db2:jcc;12.1.2.0 +com.ibm.db2:jcc;12.1.3.0 com.jayway.jsonpath:json-path;2.9.0 com.jayway.jsonpath:json-path-assert;2.9.0 -com.microsoft.sqlserver:mssql-jdbc;12.10.1.jre11 -com.mysql:mysql-connector-j;9.4.0 -com.netflix.eureka:eureka-client;2.0.4 -com.netflix.eureka:eureka-client-jersey3;2.0.4 -com.netflix.eureka:eureka-core;2.0.4 -com.netflix.eureka:eureka-core-jersey3;2.0.4 +com.microsoft.sqlserver:mssql-jdbc;12.10.2.jre11 +com.mysql:mysql-connector-j;9.5.0 +com.netflix.eureka:eureka-client;2.0.5 +com.netflix.eureka:eureka-client-jersey3;2.0.5 +com.netflix.eureka:eureka-core;2.0.5 +com.netflix.eureka:eureka-core-jersey3;2.0.5 com.oracle.database.ha:ons;23.7.0.25.01 com.oracle.database.ha:simplefan;23.7.0.25.01 com.oracle.database.jdbc:ojdbc11;23.7.0.25.01 @@ -150,17 +150,17 @@ com.squareup.okhttp3:okhttp-sse;4.12.0 com.squareup.okhttp3:okhttp-tls;4.12.0 com.squareup.okhttp3:okhttp-urlconnection;4.12.0 com.sun.istack:istack-commons-runtime;4.1.2 -com.sun.xml.bind:jaxb-core;4.0.5 -com.sun.xml.bind:jaxb-impl;4.0.5 -com.sun.xml.bind:jaxb-jxc;4.0.5 -com.sun.xml.bind:jaxb-osgi;4.0.5 -com.sun.xml.bind:jaxb-xjc;4.0.5 +com.sun.xml.bind:jaxb-core;4.0.6 +com.sun.xml.bind:jaxb-impl;4.0.6 +com.sun.xml.bind:jaxb-jxc;4.0.6 +com.sun.xml.bind:jaxb-osgi;4.0.6 +com.sun.xml.bind:jaxb-xjc;4.0.6 com.sun.xml.fastinfoset:FastInfoset;2.1.1 com.sun.xml.messaging.saaj:saaj-impl;3.0.4 com.toomuchcoding.jsonassert:jsonassert;0.8.0 com.toomuchcoding.jsonassert:jsonassert-shade;0.8.0 -com.unboundid:unboundid-ldapsdk;7.0.3 -com.zaxxer:HikariCP;6.3.2 +com.unboundid:unboundid-ldapsdk;7.0.4 +com.zaxxer:HikariCP;6.3.3 commons-codec:commons-codec;1.18.0 commons-pool:commons-pool;1.6 io.asyncer:r2dbc-mysql;1.4.1 @@ -322,89 +322,89 @@ io.github.resilience4j:resilience4j-spring-cloud2;2.2.0 io.github.resilience4j:resilience4j-spring6;2.2.0 io.github.resilience4j:resilience4j-timelimiter;2.2.0 io.github.resilience4j:resilience4j-vavr;2.2.0 -io.kubernetes:client-java;19.0.2 -io.kubernetes:client-java-extended;19.0.2 -io.kubernetes:client-java-spring-integration;19.0.2 +io.kubernetes:client-java;19.0.3 +io.kubernetes:client-java-extended;19.0.3 +io.kubernetes:client-java-spring-integration;19.0.3 io.lettuce:lettuce-core;6.6.0.RELEASE io.micrometer:context-propagation;1.1.3 -io.micrometer:docs;1.5.3 -io.micrometer:micrometer-bom;1.15.3 -io.micrometer:micrometer-commons;1.15.3 -io.micrometer:micrometer-core;1.15.3 -io.micrometer:micrometer-jakarta9;1.15.3 -io.micrometer:micrometer-java11;1.15.3 -io.micrometer:micrometer-java21;1.15.3 -io.micrometer:micrometer-jetty11;1.15.3 -io.micrometer:micrometer-jetty12;1.15.3 -io.micrometer:micrometer-observation;1.15.3 -io.micrometer:micrometer-observation-test;1.15.3 -io.micrometer:micrometer-registry-appoptics;1.15.3 -io.micrometer:micrometer-registry-atlas;1.15.3 -io.micrometer:micrometer-registry-azure-monitor;1.15.3 -io.micrometer:micrometer-registry-cloudwatch2;1.15.3 -io.micrometer:micrometer-registry-datadog;1.15.3 -io.micrometer:micrometer-registry-dynatrace;1.15.3 -io.micrometer:micrometer-registry-elastic;1.15.3 -io.micrometer:micrometer-registry-ganglia;1.15.3 -io.micrometer:micrometer-registry-graphite;1.15.3 -io.micrometer:micrometer-registry-health;1.15.3 -io.micrometer:micrometer-registry-humio;1.15.3 -io.micrometer:micrometer-registry-influx;1.15.3 -io.micrometer:micrometer-registry-jmx;1.15.3 -io.micrometer:micrometer-registry-kairos;1.15.3 -io.micrometer:micrometer-registry-new-relic;1.15.3 -io.micrometer:micrometer-registry-opentsdb;1.15.3 -io.micrometer:micrometer-registry-otlp;1.15.3 -io.micrometer:micrometer-registry-prometheus;1.15.3 -io.micrometer:micrometer-registry-prometheus-simpleclient;1.15.3 -io.micrometer:micrometer-registry-signalfx;1.15.3 -io.micrometer:micrometer-registry-stackdriver;1.15.3 -io.micrometer:micrometer-registry-statsd;1.15.3 -io.micrometer:micrometer-registry-wavefront;1.15.3 -io.micrometer:micrometer-test;1.15.3 -io.micrometer:micrometer-tracing;1.5.3 -io.micrometer:micrometer-tracing-bom;1.5.3 -io.micrometer:micrometer-tracing-bridge-brave;1.5.3 -io.micrometer:micrometer-tracing-bridge-otel;1.5.3 -io.micrometer:micrometer-tracing-integration-test;1.5.3 -io.micrometer:micrometer-tracing-reporter-wavefront;1.5.3 -io.micrometer:micrometer-tracing-test;1.5.3 -io.netty:netty-all;4.1.124.Final -io.netty:netty-bom;4.1.124.Final -io.netty:netty-buffer;4.1.124.Final -io.netty:netty-codec;4.1.124.Final -io.netty:netty-codec-dns;4.1.124.Final -io.netty:netty-codec-haproxy;4.1.124.Final -io.netty:netty-codec-http;4.1.124.Final -io.netty:netty-codec-http2;4.1.124.Final -io.netty:netty-codec-memcache;4.1.124.Final -io.netty:netty-codec-mqtt;4.1.124.Final -io.netty:netty-codec-redis;4.1.124.Final -io.netty:netty-codec-smtp;4.1.124.Final -io.netty:netty-codec-socks;4.1.124.Final -io.netty:netty-codec-stomp;4.1.124.Final -io.netty:netty-codec-xml;4.1.124.Final -io.netty:netty-common;4.1.124.Final -io.netty:netty-dev-tools;4.1.124.Final -io.netty:netty-handler;4.1.124.Final -io.netty:netty-handler-proxy;4.1.124.Final -io.netty:netty-handler-ssl-ocsp;4.1.124.Final -io.netty:netty-resolver;4.1.124.Final -io.netty:netty-resolver-dns;4.1.124.Final -io.netty:netty-resolver-dns-classes-macos;4.1.124.Final -io.netty:netty-resolver-dns-native-macos;4.1.124.Final -io.netty:netty-tcnative;2.0.72.Final -io.netty:netty-tcnative-boringssl-static;2.0.72.Final -io.netty:netty-tcnative-classes;2.0.72.Final -io.netty:netty-transport;4.1.124.Final -io.netty:netty-transport-classes-epoll;4.1.124.Final -io.netty:netty-transport-classes-kqueue;4.1.124.Final -io.netty:netty-transport-native-epoll;4.1.124.Final -io.netty:netty-transport-native-kqueue;4.1.124.Final -io.netty:netty-transport-native-unix-common;4.1.124.Final -io.netty:netty-transport-rxtx;4.1.124.Final -io.netty:netty-transport-sctp;4.1.124.Final -io.netty:netty-transport-udt;4.1.124.Final +io.micrometer:docs;1.5.7 +io.micrometer:micrometer-bom;1.15.7 +io.micrometer:micrometer-commons;1.15.7 +io.micrometer:micrometer-core;1.15.7 +io.micrometer:micrometer-jakarta9;1.15.7 +io.micrometer:micrometer-java11;1.15.7 +io.micrometer:micrometer-java21;1.15.7 +io.micrometer:micrometer-jetty11;1.15.7 +io.micrometer:micrometer-jetty12;1.15.7 +io.micrometer:micrometer-observation;1.15.7 +io.micrometer:micrometer-observation-test;1.15.7 +io.micrometer:micrometer-registry-appoptics;1.15.7 +io.micrometer:micrometer-registry-atlas;1.15.7 +io.micrometer:micrometer-registry-azure-monitor;1.15.7 +io.micrometer:micrometer-registry-cloudwatch2;1.15.7 +io.micrometer:micrometer-registry-datadog;1.15.7 +io.micrometer:micrometer-registry-dynatrace;1.15.7 +io.micrometer:micrometer-registry-elastic;1.15.7 +io.micrometer:micrometer-registry-ganglia;1.15.7 +io.micrometer:micrometer-registry-graphite;1.15.7 +io.micrometer:micrometer-registry-health;1.15.7 +io.micrometer:micrometer-registry-humio;1.15.7 +io.micrometer:micrometer-registry-influx;1.15.7 +io.micrometer:micrometer-registry-jmx;1.15.7 +io.micrometer:micrometer-registry-kairos;1.15.7 +io.micrometer:micrometer-registry-new-relic;1.15.7 +io.micrometer:micrometer-registry-opentsdb;1.15.7 +io.micrometer:micrometer-registry-otlp;1.15.7 +io.micrometer:micrometer-registry-prometheus;1.15.7 +io.micrometer:micrometer-registry-prometheus-simpleclient;1.15.7 +io.micrometer:micrometer-registry-signalfx;1.15.7 +io.micrometer:micrometer-registry-stackdriver;1.15.7 +io.micrometer:micrometer-registry-statsd;1.15.7 +io.micrometer:micrometer-registry-wavefront;1.15.7 +io.micrometer:micrometer-test;1.15.7 +io.micrometer:micrometer-tracing;1.5.7 +io.micrometer:micrometer-tracing-bom;1.5.7 +io.micrometer:micrometer-tracing-bridge-brave;1.5.7 +io.micrometer:micrometer-tracing-bridge-otel;1.5.7 +io.micrometer:micrometer-tracing-integration-test;1.5.7 +io.micrometer:micrometer-tracing-reporter-wavefront;1.5.7 +io.micrometer:micrometer-tracing-test;1.5.7 +io.netty:netty-all;4.1.130.Final +io.netty:netty-bom;4.1.130.Final +io.netty:netty-buffer;4.1.130.Final +io.netty:netty-codec;4.1.130.Final +io.netty:netty-codec-dns;4.1.130.Final +io.netty:netty-codec-haproxy;4.1.130.Final +io.netty:netty-codec-http;4.1.130.Final +io.netty:netty-codec-http2;4.1.130.Final +io.netty:netty-codec-memcache;4.1.130.Final +io.netty:netty-codec-mqtt;4.1.130.Final +io.netty:netty-codec-redis;4.1.130.Final +io.netty:netty-codec-smtp;4.1.130.Final +io.netty:netty-codec-socks;4.1.130.Final +io.netty:netty-codec-stomp;4.1.130.Final +io.netty:netty-codec-xml;4.1.130.Final +io.netty:netty-common;4.1.130.Final +io.netty:netty-dev-tools;4.1.130.Final +io.netty:netty-handler;4.1.130.Final +io.netty:netty-handler-proxy;4.1.130.Final +io.netty:netty-handler-ssl-ocsp;4.1.130.Final +io.netty:netty-resolver;4.1.130.Final +io.netty:netty-resolver-dns;4.1.130.Final +io.netty:netty-resolver-dns-classes-macos;4.1.130.Final +io.netty:netty-resolver-dns-native-macos;4.1.130.Final +io.netty:netty-tcnative;2.0.74.Final +io.netty:netty-tcnative-boringssl-static;2.0.74.Final +io.netty:netty-tcnative-classes;2.0.74.Final +io.netty:netty-transport;4.1.130.Final +io.netty:netty-transport-classes-epoll;4.1.130.Final +io.netty:netty-transport-classes-kqueue;4.1.130.Final +io.netty:netty-transport-native-epoll;4.1.130.Final +io.netty:netty-transport-native-kqueue;4.1.130.Final +io.netty:netty-transport-native-unix-common;4.1.130.Final +io.netty:netty-transport-rxtx;4.1.130.Final +io.netty:netty-transport-sctp;4.1.130.Final +io.netty:netty-transport-udt;4.1.130.Final io.opentelemetry:opentelemetry-api;1.49.0 io.opentelemetry:opentelemetry-bom;1.49.0 io.opentelemetry:opentelemetry-context;1.49.0 @@ -429,21 +429,21 @@ io.opentelemetry:opentelemetry-sdk-logs;1.49.0 io.opentelemetry:opentelemetry-sdk-metrics;1.49.0 io.opentelemetry:opentelemetry-sdk-testing;1.49.0 io.opentelemetry:opentelemetry-sdk-trace;1.49.0 -io.projectreactor.addons:reactor-adapter;3.5.2 -io.projectreactor.addons:reactor-extra;3.5.2 -io.projectreactor.addons:reactor-pool;1.1.3 -io.projectreactor.addons:reactor-pool-micrometer;0.2.3 -io.projectreactor.kafka:reactor-kafka;1.3.23 -io.projectreactor.kotlin:reactor-kotlin-extensions;1.2.3 -io.projectreactor.netty:reactor-netty;1.2.9 -io.projectreactor.netty:reactor-netty-core;1.2.9 -io.projectreactor.netty:reactor-netty-http;1.2.9 -io.projectreactor.netty:reactor-netty-http-brave;1.2.9 -io.projectreactor:reactor-bom;2024.0.9 -io.projectreactor:reactor-core;3.7.9 -io.projectreactor:reactor-core-micrometer;1.2.9 -io.projectreactor:reactor-test;3.7.9 -io.projectreactor:reactor-tools;3.7.9 +io.projectreactor.addons:reactor-adapter;3.5.4 +io.projectreactor.addons:reactor-extra;3.5.4 +io.projectreactor.addons:reactor-pool;1.1.7 +io.projectreactor.addons:reactor-pool-micrometer;0.2.7 +io.projectreactor.kafka:reactor-kafka;1.3.25 +io.projectreactor.kotlin:reactor-kotlin-extensions;1.2.5 +io.projectreactor.netty:reactor-netty;1.2.13 +io.projectreactor.netty:reactor-netty-core;1.2.13 +io.projectreactor.netty:reactor-netty-http;1.2.13 +io.projectreactor.netty:reactor-netty-http-brave;1.2.13 +io.projectreactor:reactor-bom;2024.0.13 +io.projectreactor:reactor-core;3.7.14 +io.projectreactor:reactor-core-micrometer;1.2.14 +io.projectreactor:reactor-test;3.7.14 +io.projectreactor:reactor-tools;3.7.14 io.prometheus:prometheus-metrics-bom;1.3.10 io.prometheus:prometheus-metrics-config;1.3.10 io.prometheus:prometheus-metrics-core;1.3.10 @@ -494,12 +494,12 @@ io.prometheus:simpleclient_tracer_common;0.16.0 io.prometheus:simpleclient_tracer_otel;0.16.0 io.prometheus:simpleclient_tracer_otel_agent;0.16.0 io.prometheus:simpleclient_vertx;0.16.0 -io.r2dbc:r2dbc-h2;1.0.0.RELEASE -io.r2dbc:r2dbc-mssql;1.0.2.RELEASE +io.r2dbc:r2dbc-h2;1.0.1.RELEASE +io.r2dbc:r2dbc-mssql;1.0.3.RELEASE io.r2dbc:r2dbc-pool;1.0.2.RELEASE io.r2dbc:r2dbc-proxy;1.1.6.RELEASE io.r2dbc:r2dbc-spi;1.0.0.RELEASE -io.reactivex.rxjava3:rxjava;3.1.11 +io.reactivex.rxjava3:rxjava;3.1.12 io.rest-assured:json-path;5.5.6 io.rest-assured:json-schema-validator;5.5.6 io.rest-assured:kotlin-extensions;5.5.6 @@ -523,9 +523,9 @@ io.rsocket:rsocket-test;1.1.5 io.rsocket:rsocket-transport-local;1.1.5 io.rsocket:rsocket-transport-netty;1.1.5 io.spring.gradle:dependency-management-plugin;1.1.7 -io.undertow:undertow-core;2.3.18.Final -io.undertow:undertow-servlet;2.3.18.Final -io.undertow:undertow-websockets-jsr;2.3.18.Final +io.undertow:undertow-core;2.3.20.Final +io.undertow:undertow-servlet;2.3.20.Final +io.undertow:undertow-websockets-jsr;2.3.20.Final io.zipkin.brave:brave;6.1.0 io.zipkin.brave:brave-bom;6.1.0 io.zipkin.brave:brave-context-jfr;6.1.0 @@ -576,13 +576,13 @@ io.zipkin.reporter2:zipkin-sender-libthrift;3.5.1 io.zipkin.reporter2:zipkin-sender-okhttp3;3.5.1 io.zipkin.reporter2:zipkin-sender-pulsar-client;3.5.1 io.zipkin.reporter2:zipkin-sender-urlconnection;3.5.1 -jakarta.activation:jakarta.activation-api;2.1.3 +jakarta.activation:jakarta.activation-api;2.1.4 jakarta.annotation:jakarta.annotation-api;2.1.1 jakarta.inject:jakarta.inject-api;2.0.1 jakarta.jms:jakarta.jms-api;3.1.0 jakarta.json.bind:jakarta.json.bind-api;3.0.1 jakarta.json:jakarta.json-api;2.1.3 -jakarta.mail:jakarta.mail-api;2.1.3 +jakarta.mail:jakarta.mail-api;2.1.5 jakarta.management.j2ee:jakarta.management.j2ee-api;1.1.4 jakarta.persistence:jakarta.persistence-api;3.1.0 jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api;3.0.2 @@ -592,49 +592,49 @@ jakarta.validation:jakarta.validation-api;3.0.2 jakarta.websocket:jakarta.websocket-api;2.1.1 jakarta.websocket:jakarta.websocket-client-api;2.1.1 jakarta.ws.rs:jakarta.ws.rs-api;3.1.0 -jakarta.xml.bind:jakarta.xml.bind-api;4.0.2 +jakarta.xml.bind:jakarta.xml.bind-api;4.0.4 jakarta.xml.soap:jakarta.xml.soap-api;3.0.2 jakarta.xml.ws:jakarta.xml.ws-api;4.0.2 javax.cache:cache-api;1.1.1 javax.money:money-api;1.1 jaxen:jaxen;2.0.0 junit:junit;4.13.2 -net.bytebuddy:byte-buddy;1.17.7 -net.bytebuddy:byte-buddy-agent;1.17.7 +net.bytebuddy:byte-buddy;1.17.8 +net.bytebuddy:byte-buddy-agent;1.17.8 net.minidev:json-smart;2.5.2 net.sourceforge.jtds:jtds;1.3.1 net.sourceforge.nekohtml:nekohtml;1.9.22 nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect;3.4.0 -org.apache.activemq:activemq-all;6.1.7 -org.apache.activemq:activemq-amqp;6.1.7 -org.apache.activemq:activemq-blueprint;6.1.7 -org.apache.activemq:activemq-bom;6.1.7 +org.apache.activemq:activemq-all;6.1.8 +org.apache.activemq:activemq-amqp;6.1.8 +org.apache.activemq:activemq-blueprint;6.1.8 +org.apache.activemq:activemq-bom;6.1.8 org.apache.activemq:activemq-branding;2.40.0 -org.apache.activemq:activemq-broker;6.1.7 -org.apache.activemq:activemq-client;6.1.7 -org.apache.activemq:activemq-console;6.1.7 -org.apache.activemq:activemq-http;6.1.7 -org.apache.activemq:activemq-jaas;6.1.7 -org.apache.activemq:activemq-jdbc-store;6.1.7 -org.apache.activemq:activemq-jms-pool;6.1.7 -org.apache.activemq:activemq-kahadb-store;6.1.7 -org.apache.activemq:activemq-karaf;6.1.7 -org.apache.activemq:activemq-log4j-appender;6.1.7 -org.apache.activemq:activemq-mqtt;6.1.7 -org.apache.activemq:activemq-openwire-generator;6.1.7 -org.apache.activemq:activemq-openwire-legacy;6.1.7 -org.apache.activemq:activemq-osgi;6.1.7 -org.apache.activemq:activemq-pool;6.1.7 -org.apache.activemq:activemq-ra;6.1.7 -org.apache.activemq:activemq-rar;6.1.7 -org.apache.activemq:activemq-run;6.1.7 -org.apache.activemq:activemq-runtime-config;6.1.7 -org.apache.activemq:activemq-shiro;6.1.7 -org.apache.activemq:activemq-spring;6.1.7 -org.apache.activemq:activemq-stomp;6.1.7 -org.apache.activemq:activemq-web;6.1.7 -org.apache.activemq:activemq-web-console;6.1.7 -org.apache.activemq:activemq-web-demo;6.1.7 +org.apache.activemq:activemq-broker;6.1.8 +org.apache.activemq:activemq-client;6.1.8 +org.apache.activemq:activemq-console;6.1.8 +org.apache.activemq:activemq-http;6.1.8 +org.apache.activemq:activemq-jaas;6.1.8 +org.apache.activemq:activemq-jdbc-store;6.1.8 +org.apache.activemq:activemq-jms-pool;6.1.8 +org.apache.activemq:activemq-kahadb-store;6.1.8 +org.apache.activemq:activemq-karaf;6.1.8 +org.apache.activemq:activemq-log4j-appender;6.1.8 +org.apache.activemq:activemq-mqtt;6.1.8 +org.apache.activemq:activemq-openwire-generator;6.1.8 +org.apache.activemq:activemq-openwire-legacy;6.1.8 +org.apache.activemq:activemq-osgi;6.1.8 +org.apache.activemq:activemq-pool;6.1.8 +org.apache.activemq:activemq-ra;6.1.8 +org.apache.activemq:activemq-rar;6.1.8 +org.apache.activemq:activemq-run;6.1.8 +org.apache.activemq:activemq-runtime-config;6.1.8 +org.apache.activemq:activemq-shiro;6.1.8 +org.apache.activemq:activemq-spring;6.1.8 +org.apache.activemq:activemq-stomp;6.1.8 +org.apache.activemq:activemq-web;6.1.8 +org.apache.activemq:activemq-web-console;6.1.8 +org.apache.activemq:activemq-web-demo;6.1.8 org.apache.activemq:artemis-amqp-protocol;2.40.0 org.apache.activemq:artemis-bom;2.40.0 org.apache.activemq:artemis-boot;2.40.0 @@ -674,16 +674,16 @@ org.apache.activemq:artemis-service-extensions;2.40.0 org.apache.activemq:artemis-stomp-protocol;2.40.0 org.apache.activemq:artemis-web;2.40.0 org.apache.activemq:artemis-website;2.40.0 -org.apache.cassandra:java-driver-bom;4.19.0 -org.apache.cassandra:java-driver-core;4.19.0 -org.apache.cassandra:java-driver-core-shaded;4.19.0 -org.apache.cassandra:java-driver-guava-shaded;4.19.0 -org.apache.cassandra:java-driver-mapper-processor;4.19.0 -org.apache.cassandra:java-driver-mapper-runtime;4.19.0 -org.apache.cassandra:java-driver-metrics-micrometer;4.19.0 -org.apache.cassandra:java-driver-metrics-microprofile;4.19.0 -org.apache.cassandra:java-driver-query-builder;4.19.0 -org.apache.cassandra:java-driver-test-infra;4.19.0 +org.apache.cassandra:java-driver-bom;4.19.2 +org.apache.cassandra:java-driver-core;4.19.2 +org.apache.cassandra:java-driver-core-shaded;4.19.2 +org.apache.cassandra:java-driver-guava-shaded;4.19.2 +org.apache.cassandra:java-driver-mapper-processor;4.19.2 +org.apache.cassandra:java-driver-mapper-runtime;4.19.2 +org.apache.cassandra:java-driver-metrics-micrometer;4.19.2 +org.apache.cassandra:java-driver-metrics-microprofile;4.19.2 +org.apache.cassandra:java-driver-query-builder;4.19.2 +org.apache.cassandra:java-driver-test-infra;4.19.2 org.apache.commons:commons-dbcp2;2.13.0 org.apache.commons:commons-lang3;3.17.0 org.apache.commons:commons-pool2;2.12.1 @@ -697,43 +697,43 @@ org.apache.derby:derbynet;10.16.1.1 org.apache.derby:derbyoptionaltools;10.16.1.1 org.apache.derby:derbyshared;10.16.1.1 org.apache.derby:derbytools;10.16.1.1 -org.apache.groovy:groovy;4.0.28 -org.apache.groovy:groovy-ant;4.0.28 -org.apache.groovy:groovy-astbuilder;4.0.28 -org.apache.groovy:groovy-bom;4.0.28 -org.apache.groovy:groovy-cli-commons;4.0.28 -org.apache.groovy:groovy-cli-picocli;4.0.28 -org.apache.groovy:groovy-console;4.0.28 -org.apache.groovy:groovy-contracts;4.0.28 -org.apache.groovy:groovy-datetime;4.0.28 -org.apache.groovy:groovy-dateutil;4.0.28 -org.apache.groovy:groovy-docgenerator;4.0.28 -org.apache.groovy:groovy-ginq;4.0.28 -org.apache.groovy:groovy-groovydoc;4.0.28 -org.apache.groovy:groovy-groovysh;4.0.28 -org.apache.groovy:groovy-jmx;4.0.28 -org.apache.groovy:groovy-json;4.0.28 -org.apache.groovy:groovy-jsr223;4.0.28 -org.apache.groovy:groovy-macro;4.0.28 -org.apache.groovy:groovy-macro-library;4.0.28 -org.apache.groovy:groovy-nio;4.0.28 -org.apache.groovy:groovy-servlet;4.0.28 -org.apache.groovy:groovy-sql;4.0.28 -org.apache.groovy:groovy-swing;4.0.28 -org.apache.groovy:groovy-templates;4.0.28 -org.apache.groovy:groovy-test;4.0.28 -org.apache.groovy:groovy-test-junit5;4.0.28 -org.apache.groovy:groovy-testng;4.0.28 -org.apache.groovy:groovy-toml;4.0.28 -org.apache.groovy:groovy-typecheckers;4.0.28 -org.apache.groovy:groovy-xml;4.0.28 -org.apache.groovy:groovy-yaml;4.0.28 -org.apache.httpcomponents.client5:httpclient5;5.5 -org.apache.httpcomponents.client5:httpclient5-cache;5.5 -org.apache.httpcomponents.client5:httpclient5-fluent;5.5 -org.apache.httpcomponents.core5:httpcore5;5.3.4 -org.apache.httpcomponents.core5:httpcore5-h2;5.3.4 -org.apache.httpcomponents.core5:httpcore5-reactive;5.3.4 +org.apache.groovy:groovy;4.0.29 +org.apache.groovy:groovy-ant;4.0.29 +org.apache.groovy:groovy-astbuilder;4.0.29 +org.apache.groovy:groovy-bom;4.0.29 +org.apache.groovy:groovy-cli-commons;4.0.29 +org.apache.groovy:groovy-cli-picocli;4.0.29 +org.apache.groovy:groovy-console;4.0.29 +org.apache.groovy:groovy-contracts;4.0.29 +org.apache.groovy:groovy-datetime;4.0.29 +org.apache.groovy:groovy-dateutil;4.0.29 +org.apache.groovy:groovy-docgenerator;4.0.29 +org.apache.groovy:groovy-ginq;4.0.29 +org.apache.groovy:groovy-groovydoc;4.0.29 +org.apache.groovy:groovy-groovysh;4.0.29 +org.apache.groovy:groovy-jmx;4.0.29 +org.apache.groovy:groovy-json;4.0.29 +org.apache.groovy:groovy-jsr223;4.0.29 +org.apache.groovy:groovy-macro;4.0.29 +org.apache.groovy:groovy-macro-library;4.0.29 +org.apache.groovy:groovy-nio;4.0.29 +org.apache.groovy:groovy-servlet;4.0.29 +org.apache.groovy:groovy-sql;4.0.29 +org.apache.groovy:groovy-swing;4.0.29 +org.apache.groovy:groovy-templates;4.0.29 +org.apache.groovy:groovy-test;4.0.29 +org.apache.groovy:groovy-test-junit5;4.0.29 +org.apache.groovy:groovy-testng;4.0.29 +org.apache.groovy:groovy-toml;4.0.29 +org.apache.groovy:groovy-typecheckers;4.0.29 +org.apache.groovy:groovy-xml;4.0.29 +org.apache.groovy:groovy-yaml;4.0.29 +org.apache.httpcomponents.client5:httpclient5;5.5.1 +org.apache.httpcomponents.client5:httpclient5-cache;5.5.1 +org.apache.httpcomponents.client5:httpclient5-fluent;5.5.1 +org.apache.httpcomponents.core5:httpcore5;5.3.6 +org.apache.httpcomponents.core5:httpcore5-h2;5.3.6 +org.apache.httpcomponents.core5:httpcore5-reactive;5.3.6 org.apache.httpcomponents:httpasyncclient;4.1.5 org.apache.httpcomponents:httpcore;4.4.16 org.apache.httpcomponents:httpcore-nio;4.4.16 @@ -796,11 +796,11 @@ org.apache.logging.log4j:log4j-web;2.24.3 org.apache.maven.plugins:maven-antrun-plugin;3.1.0 org.apache.maven.plugins:maven-assembly-plugin;3.7.1 org.apache.maven.plugins:maven-clean-plugin;3.4.1 -org.apache.maven.plugins:maven-compiler-plugin;3.14.0 +org.apache.maven.plugins:maven-compiler-plugin;3.14.1 org.apache.maven.plugins:maven-dependency-plugin;3.8.1 org.apache.maven.plugins:maven-deploy-plugin;3.1.4 org.apache.maven.plugins:maven-enforcer-plugin;3.5.0 -org.apache.maven.plugins:maven-failsafe-plugin;3.5.3 +org.apache.maven.plugins:maven-failsafe-plugin;3.5.4 org.apache.maven.plugins:maven-gpg-plugin;3.1.0 org.apache.maven.plugins:maven-help-plugin;3.5.1 org.apache.maven.plugins:maven-install-plugin;3.1.4 @@ -809,140 +809,140 @@ org.apache.maven.plugins:maven-jar-plugin;3.4.2 org.apache.maven.plugins:maven-javadoc-plugin;3.11.3 org.apache.maven.plugins:maven-release-plugin;2.5.3 org.apache.maven.plugins:maven-resources-plugin;3.3.1 -org.apache.maven.plugins:maven-shade-plugin;3.6.0 +org.apache.maven.plugins:maven-shade-plugin;3.6.1 org.apache.maven.plugins:maven-source-plugin;3.3.1 -org.apache.maven.plugins:maven-surefire-plugin;3.5.3 +org.apache.maven.plugins:maven-surefire-plugin;3.5.4 org.apache.maven.plugins:maven-war-plugin;3.4.0 -org.apache.pulsar:bouncy-castle-bc;4.0.6 -org.apache.pulsar:bouncy-castle-bcfips;4.0.6 -org.apache.pulsar:bouncy-castle-parent;4.0.6 -org.apache.pulsar:buildtools;4.0.6 -org.apache.pulsar:distribution;4.0.6 -org.apache.pulsar:docker-images;4.0.6 -org.apache.pulsar:jclouds-shaded;4.0.6 -org.apache.pulsar:managed-ledger;4.0.6 -org.apache.pulsar:pulsar;4.0.6 -org.apache.pulsar:pulsar-all-docker-image;4.0.6 -org.apache.pulsar:pulsar-bom;4.0.6 -org.apache.pulsar:pulsar-broker;4.0.6 -org.apache.pulsar:pulsar-broker-auth-athenz;4.0.6 -org.apache.pulsar:pulsar-broker-auth-oidc;4.0.6 -org.apache.pulsar:pulsar-broker-auth-sasl;4.0.6 -org.apache.pulsar:pulsar-broker-common;4.0.6 -org.apache.pulsar:pulsar-cli-utils;4.0.6 -org.apache.pulsar:pulsar-client;4.0.6 -org.apache.pulsar:pulsar-client-admin;4.0.6 -org.apache.pulsar:pulsar-client-admin-api;4.0.6 -org.apache.pulsar:pulsar-client-admin-original;4.0.6 -org.apache.pulsar:pulsar-client-all;4.0.6 -org.apache.pulsar:pulsar-client-api;4.0.6 -org.apache.pulsar:pulsar-client-auth-athenz;4.0.6 -org.apache.pulsar:pulsar-client-auth-sasl;4.0.6 -org.apache.pulsar:pulsar-client-messagecrypto-bc;4.0.6 -org.apache.pulsar:pulsar-client-original;4.0.6 +org.apache.pulsar:bouncy-castle-bc;4.0.8 +org.apache.pulsar:bouncy-castle-bcfips;4.0.8 +org.apache.pulsar:bouncy-castle-parent;4.0.8 +org.apache.pulsar:buildtools;4.0.8 +org.apache.pulsar:distribution;4.0.8 +org.apache.pulsar:docker-images;4.0.8 +org.apache.pulsar:jclouds-shaded;4.0.8 +org.apache.pulsar:managed-ledger;4.0.8 +org.apache.pulsar:pulsar;4.0.8 +org.apache.pulsar:pulsar-all-docker-image;4.0.8 +org.apache.pulsar:pulsar-bom;4.0.8 +org.apache.pulsar:pulsar-broker;4.0.8 +org.apache.pulsar:pulsar-broker-auth-athenz;4.0.8 +org.apache.pulsar:pulsar-broker-auth-oidc;4.0.8 +org.apache.pulsar:pulsar-broker-auth-sasl;4.0.8 +org.apache.pulsar:pulsar-broker-common;4.0.8 +org.apache.pulsar:pulsar-cli-utils;4.0.8 +org.apache.pulsar:pulsar-client;4.0.8 +org.apache.pulsar:pulsar-client-admin;4.0.8 +org.apache.pulsar:pulsar-client-admin-api;4.0.8 +org.apache.pulsar:pulsar-client-admin-original;4.0.8 +org.apache.pulsar:pulsar-client-all;4.0.8 +org.apache.pulsar:pulsar-client-api;4.0.8 +org.apache.pulsar:pulsar-client-auth-athenz;4.0.8 +org.apache.pulsar:pulsar-client-auth-sasl;4.0.8 +org.apache.pulsar:pulsar-client-messagecrypto-bc;4.0.8 +org.apache.pulsar:pulsar-client-original;4.0.8 org.apache.pulsar:pulsar-client-reactive-adapter;0.6.0 org.apache.pulsar:pulsar-client-reactive-api;0.6.0 org.apache.pulsar:pulsar-client-reactive-bom;0.6.0 org.apache.pulsar:pulsar-client-reactive-jackson;0.6.0 org.apache.pulsar:pulsar-client-reactive-producer-cache-caffeine;0.6.0 org.apache.pulsar:pulsar-client-reactive-producer-cache-caffeine-shaded;0.6.0 -org.apache.pulsar:pulsar-client-tools;4.0.6 -org.apache.pulsar:pulsar-client-tools-api;4.0.6 -org.apache.pulsar:pulsar-common;4.0.6 -org.apache.pulsar:pulsar-config-validation;4.0.6 -org.apache.pulsar:pulsar-docker-image;4.0.6 -org.apache.pulsar:pulsar-docs-tools;4.0.6 -org.apache.pulsar:pulsar-functions;4.0.6 -org.apache.pulsar:pulsar-functions-api;4.0.6 -org.apache.pulsar:pulsar-functions-api-examples;4.0.6 -org.apache.pulsar:pulsar-functions-api-examples-builtin;4.0.6 -org.apache.pulsar:pulsar-functions-instance;4.0.6 -org.apache.pulsar:pulsar-functions-local-runner;4.0.6 -org.apache.pulsar:pulsar-functions-local-runner-original;4.0.6 -org.apache.pulsar:pulsar-functions-proto;4.0.6 -org.apache.pulsar:pulsar-functions-runtime;4.0.6 -org.apache.pulsar:pulsar-functions-runtime-all;4.0.6 -org.apache.pulsar:pulsar-functions-secrets;4.0.6 -org.apache.pulsar:pulsar-functions-utils;4.0.6 -org.apache.pulsar:pulsar-functions-worker;4.0.6 -org.apache.pulsar:pulsar-io;4.0.6 -org.apache.pulsar:pulsar-io-aerospike;4.0.6 -org.apache.pulsar:pulsar-io-alluxio;4.0.6 -org.apache.pulsar:pulsar-io-aws;4.0.6 -org.apache.pulsar:pulsar-io-batch-data-generator;4.0.6 -org.apache.pulsar:pulsar-io-batch-discovery-triggerers;4.0.6 -org.apache.pulsar:pulsar-io-canal;4.0.6 -org.apache.pulsar:pulsar-io-cassandra;4.0.6 -org.apache.pulsar:pulsar-io-common;4.0.6 -org.apache.pulsar:pulsar-io-core;4.0.6 -org.apache.pulsar:pulsar-io-data-generator;4.0.6 -org.apache.pulsar:pulsar-io-debezium;4.0.6 -org.apache.pulsar:pulsar-io-debezium-core;4.0.6 -org.apache.pulsar:pulsar-io-debezium-mongodb;4.0.6 -org.apache.pulsar:pulsar-io-debezium-mssql;4.0.6 -org.apache.pulsar:pulsar-io-debezium-mysql;4.0.6 -org.apache.pulsar:pulsar-io-debezium-oracle;4.0.6 -org.apache.pulsar:pulsar-io-debezium-postgres;4.0.6 -org.apache.pulsar:pulsar-io-distribution;4.0.6 -org.apache.pulsar:pulsar-io-docs;4.0.6 -org.apache.pulsar:pulsar-io-dynamodb;4.0.6 -org.apache.pulsar:pulsar-io-elastic-search;4.0.6 -org.apache.pulsar:pulsar-io-file;4.0.6 -org.apache.pulsar:pulsar-io-flume;4.0.6 -org.apache.pulsar:pulsar-io-hbase;4.0.6 -org.apache.pulsar:pulsar-io-hdfs3;4.0.6 -org.apache.pulsar:pulsar-io-http;4.0.6 -org.apache.pulsar:pulsar-io-influxdb;4.0.6 -org.apache.pulsar:pulsar-io-jdbc;4.0.6 -org.apache.pulsar:pulsar-io-jdbc-clickhouse;4.0.6 -org.apache.pulsar:pulsar-io-jdbc-core;4.0.6 -org.apache.pulsar:pulsar-io-jdbc-mariadb;4.0.6 -org.apache.pulsar:pulsar-io-jdbc-openmldb;4.0.6 -org.apache.pulsar:pulsar-io-jdbc-postgres;4.0.6 -org.apache.pulsar:pulsar-io-jdbc-sqlite;4.0.6 -org.apache.pulsar:pulsar-io-kafka;4.0.6 -org.apache.pulsar:pulsar-io-kafka-connect-adaptor;4.0.6 -org.apache.pulsar:pulsar-io-kafka-connect-adaptor-nar;4.0.6 -org.apache.pulsar:pulsar-io-kinesis;4.0.6 -org.apache.pulsar:pulsar-io-mongo;4.0.6 -org.apache.pulsar:pulsar-io-netty;4.0.6 -org.apache.pulsar:pulsar-io-nsq;4.0.6 -org.apache.pulsar:pulsar-io-rabbitmq;4.0.6 -org.apache.pulsar:pulsar-io-redis;4.0.6 -org.apache.pulsar:pulsar-io-solr;4.0.6 -org.apache.pulsar:pulsar-io-twitter;4.0.6 -org.apache.pulsar:pulsar-metadata;4.0.6 -org.apache.pulsar:pulsar-offloader-distribution;4.0.6 -org.apache.pulsar:pulsar-package-bookkeeper-storage;4.0.6 -org.apache.pulsar:pulsar-package-core;4.0.6 -org.apache.pulsar:pulsar-package-filesystem-storage;4.0.6 -org.apache.pulsar:pulsar-package-management;4.0.6 -org.apache.pulsar:pulsar-proxy;4.0.6 -org.apache.pulsar:pulsar-server-distribution;4.0.6 -org.apache.pulsar:pulsar-shell-distribution;4.0.6 -org.apache.pulsar:pulsar-testclient;4.0.6 -org.apache.pulsar:pulsar-transaction-common;4.0.6 -org.apache.pulsar:pulsar-transaction-coordinator;4.0.6 -org.apache.pulsar:pulsar-transaction-parent;4.0.6 -org.apache.pulsar:pulsar-websocket;4.0.6 -org.apache.pulsar:structured-event-log;4.0.6 -org.apache.pulsar:testmocks;4.0.6 -org.apache.pulsar:tiered-storage-file-system;4.0.6 -org.apache.pulsar:tiered-storage-jcloud;4.0.6 -org.apache.pulsar:tiered-storage-parent;4.0.6 -org.apache.tomcat.embed:tomcat-embed-core;10.1.44 -org.apache.tomcat.embed:tomcat-embed-el;10.1.44 -org.apache.tomcat.embed:tomcat-embed-jasper;10.1.44 -org.apache.tomcat.embed:tomcat-embed-websocket;10.1.44 -org.apache.tomcat:tomcat-annotations-api;10.1.44 -org.apache.tomcat:tomcat-jdbc;10.1.44 -org.apache.tomcat:tomcat-jsp-api;10.1.44 -org.aspectj:aspectjrt;1.9.24 -org.aspectj:aspectjtools;1.9.24 -org.aspectj:aspectjweaver;1.9.24 -org.assertj:assertj-bom;3.27.4 -org.assertj:assertj-core;3.27.4 -org.assertj:assertj-guava;3.27.4 +org.apache.pulsar:pulsar-client-tools;4.0.8 +org.apache.pulsar:pulsar-client-tools-api;4.0.8 +org.apache.pulsar:pulsar-common;4.0.8 +org.apache.pulsar:pulsar-config-validation;4.0.8 +org.apache.pulsar:pulsar-docker-image;4.0.8 +org.apache.pulsar:pulsar-docs-tools;4.0.8 +org.apache.pulsar:pulsar-functions;4.0.8 +org.apache.pulsar:pulsar-functions-api;4.0.8 +org.apache.pulsar:pulsar-functions-api-examples;4.0.8 +org.apache.pulsar:pulsar-functions-api-examples-builtin;4.0.8 +org.apache.pulsar:pulsar-functions-instance;4.0.8 +org.apache.pulsar:pulsar-functions-local-runner;4.0.8 +org.apache.pulsar:pulsar-functions-local-runner-original;4.0.8 +org.apache.pulsar:pulsar-functions-proto;4.0.8 +org.apache.pulsar:pulsar-functions-runtime;4.0.8 +org.apache.pulsar:pulsar-functions-runtime-all;4.0.8 +org.apache.pulsar:pulsar-functions-secrets;4.0.8 +org.apache.pulsar:pulsar-functions-utils;4.0.8 +org.apache.pulsar:pulsar-functions-worker;4.0.8 +org.apache.pulsar:pulsar-io;4.0.8 +org.apache.pulsar:pulsar-io-aerospike;4.0.8 +org.apache.pulsar:pulsar-io-alluxio;4.0.8 +org.apache.pulsar:pulsar-io-aws;4.0.8 +org.apache.pulsar:pulsar-io-batch-data-generator;4.0.8 +org.apache.pulsar:pulsar-io-batch-discovery-triggerers;4.0.8 +org.apache.pulsar:pulsar-io-canal;4.0.8 +org.apache.pulsar:pulsar-io-cassandra;4.0.8 +org.apache.pulsar:pulsar-io-common;4.0.8 +org.apache.pulsar:pulsar-io-core;4.0.8 +org.apache.pulsar:pulsar-io-data-generator;4.0.8 +org.apache.pulsar:pulsar-io-debezium;4.0.8 +org.apache.pulsar:pulsar-io-debezium-core;4.0.8 +org.apache.pulsar:pulsar-io-debezium-mongodb;4.0.8 +org.apache.pulsar:pulsar-io-debezium-mssql;4.0.8 +org.apache.pulsar:pulsar-io-debezium-mysql;4.0.8 +org.apache.pulsar:pulsar-io-debezium-oracle;4.0.8 +org.apache.pulsar:pulsar-io-debezium-postgres;4.0.8 +org.apache.pulsar:pulsar-io-distribution;4.0.8 +org.apache.pulsar:pulsar-io-docs;4.0.8 +org.apache.pulsar:pulsar-io-dynamodb;4.0.8 +org.apache.pulsar:pulsar-io-elastic-search;4.0.8 +org.apache.pulsar:pulsar-io-file;4.0.8 +org.apache.pulsar:pulsar-io-flume;4.0.8 +org.apache.pulsar:pulsar-io-hbase;4.0.8 +org.apache.pulsar:pulsar-io-hdfs3;4.0.8 +org.apache.pulsar:pulsar-io-http;4.0.8 +org.apache.pulsar:pulsar-io-influxdb;4.0.8 +org.apache.pulsar:pulsar-io-jdbc;4.0.8 +org.apache.pulsar:pulsar-io-jdbc-clickhouse;4.0.8 +org.apache.pulsar:pulsar-io-jdbc-core;4.0.8 +org.apache.pulsar:pulsar-io-jdbc-mariadb;4.0.8 +org.apache.pulsar:pulsar-io-jdbc-openmldb;4.0.8 +org.apache.pulsar:pulsar-io-jdbc-postgres;4.0.8 +org.apache.pulsar:pulsar-io-jdbc-sqlite;4.0.8 +org.apache.pulsar:pulsar-io-kafka;4.0.8 +org.apache.pulsar:pulsar-io-kafka-connect-adaptor;4.0.8 +org.apache.pulsar:pulsar-io-kafka-connect-adaptor-nar;4.0.8 +org.apache.pulsar:pulsar-io-kinesis;4.0.8 +org.apache.pulsar:pulsar-io-mongo;4.0.8 +org.apache.pulsar:pulsar-io-netty;4.0.8 +org.apache.pulsar:pulsar-io-nsq;4.0.8 +org.apache.pulsar:pulsar-io-rabbitmq;4.0.8 +org.apache.pulsar:pulsar-io-redis;4.0.8 +org.apache.pulsar:pulsar-io-solr;4.0.8 +org.apache.pulsar:pulsar-io-twitter;4.0.8 +org.apache.pulsar:pulsar-metadata;4.0.8 +org.apache.pulsar:pulsar-offloader-distribution;4.0.8 +org.apache.pulsar:pulsar-package-bookkeeper-storage;4.0.8 +org.apache.pulsar:pulsar-package-core;4.0.8 +org.apache.pulsar:pulsar-package-filesystem-storage;4.0.8 +org.apache.pulsar:pulsar-package-management;4.0.8 +org.apache.pulsar:pulsar-proxy;4.0.8 +org.apache.pulsar:pulsar-server-distribution;4.0.8 +org.apache.pulsar:pulsar-shell-distribution;4.0.8 +org.apache.pulsar:pulsar-testclient;4.0.8 +org.apache.pulsar:pulsar-transaction-common;4.0.8 +org.apache.pulsar:pulsar-transaction-coordinator;4.0.8 +org.apache.pulsar:pulsar-transaction-parent;4.0.8 +org.apache.pulsar:pulsar-websocket;4.0.8 +org.apache.pulsar:structured-event-log;4.0.8 +org.apache.pulsar:testmocks;4.0.8 +org.apache.pulsar:tiered-storage-file-system;4.0.8 +org.apache.pulsar:tiered-storage-jcloud;4.0.8 +org.apache.pulsar:tiered-storage-parent;4.0.8 +org.apache.tomcat.embed:tomcat-embed-core;10.1.50 +org.apache.tomcat.embed:tomcat-embed-el;10.1.50 +org.apache.tomcat.embed:tomcat-embed-jasper;10.1.50 +org.apache.tomcat.embed:tomcat-embed-websocket;10.1.50 +org.apache.tomcat:tomcat-annotations-api;10.1.50 +org.apache.tomcat:tomcat-jdbc;10.1.50 +org.apache.tomcat:tomcat-jsp-api;10.1.50 +org.aspectj:aspectjrt;1.9.25.1 +org.aspectj:aspectjtools;1.9.25.1 +org.aspectj:aspectjweaver;1.9.25.1 +org.assertj:assertj-bom;3.27.6 +org.assertj:assertj-core;3.27.6 +org.assertj:assertj-guava;3.27.6 org.awaitility:awaitility;4.2.2 org.awaitility:awaitility-groovy;4.2.2 org.awaitility:awaitility-kotlin;4.2.2 @@ -961,113 +961,113 @@ org.codehaus.mojo:versions-maven-plugin;2.18.0 org.codehaus.mojo:xml-maven-plugin;1.1.0 org.crac:crac;1.5.0 org.cyclonedx:cyclonedx-maven-plugin;2.9.1 -org.eclipse.angus:angus-activation;2.0.2 -org.eclipse.angus:angus-core;2.0.4 -org.eclipse.angus:angus-mail;2.0.4 -org.eclipse.angus:dsn;2.0.4 -org.eclipse.angus:gimap;2.0.4 -org.eclipse.angus:imap;2.0.4 -org.eclipse.angus:jakarta.mail;2.0.4 -org.eclipse.angus:logging-mailhandler;2.0.4 -org.eclipse.angus:pop3;2.0.4 -org.eclipse.angus:smtp;2.0.4 -org.eclipse.jetty.demos:jetty-demo-handler;12.0.25 -org.eclipse.jetty.ee10.osgi:jetty-ee10-osgi-alpn;12.0.25 -org.eclipse.jetty.ee10.osgi:jetty-ee10-osgi-boot;12.0.25 -org.eclipse.jetty.ee10.osgi:jetty-ee10-osgi-boot-jsp;12.0.25 -org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client;12.0.25 -org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client-webapp;12.0.25 -org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-common;12.0.25 -org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server;12.0.25 -org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-client-webapp;12.0.25 -org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server;12.0.25 -org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-servlet;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-annotations;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-apache-jsp;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-bom;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-cdi;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-fcgi-proxy;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-glassfish-jstl;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-jaspi;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-jndi;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-jspc-maven-plugin;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-maven-plugin;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-plus;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-proxy;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-quickstart;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-runner;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-servlet;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-servlets;12.0.25 -org.eclipse.jetty.ee10:jetty-ee10-webapp;12.0.25 -org.eclipse.jetty.fcgi:jetty-fcgi-client;12.0.25 -org.eclipse.jetty.fcgi:jetty-fcgi-proxy;12.0.25 -org.eclipse.jetty.fcgi:jetty-fcgi-server;12.0.25 -org.eclipse.jetty.http2:jetty-http2-client;12.0.25 -org.eclipse.jetty.http2:jetty-http2-client-transport;12.0.25 -org.eclipse.jetty.http2:jetty-http2-common;12.0.25 -org.eclipse.jetty.http2:jetty-http2-hpack;12.0.25 -org.eclipse.jetty.http2:jetty-http2-server;12.0.25 -org.eclipse.jetty.http3:jetty-http3-client;12.0.25 -org.eclipse.jetty.http3:jetty-http3-client-transport;12.0.25 -org.eclipse.jetty.http3:jetty-http3-common;12.0.25 -org.eclipse.jetty.http3:jetty-http3-qpack;12.0.25 -org.eclipse.jetty.http3:jetty-http3-server;12.0.25 -org.eclipse.jetty.quic:jetty-quic-client;12.0.25 -org.eclipse.jetty.quic:jetty-quic-common;12.0.25 -org.eclipse.jetty.quic:jetty-quic-quiche-common;12.0.25 -org.eclipse.jetty.quic:jetty-quic-quiche-foreign;12.0.25 -org.eclipse.jetty.quic:jetty-quic-quiche-jna;12.0.25 -org.eclipse.jetty.quic:jetty-quic-server;12.0.25 -org.eclipse.jetty.websocket:jetty-websocket-core-client;12.0.25 -org.eclipse.jetty.websocket:jetty-websocket-core-common;12.0.25 -org.eclipse.jetty.websocket:jetty-websocket-core-server;12.0.25 -org.eclipse.jetty.websocket:jetty-websocket-jetty-api;12.0.25 -org.eclipse.jetty.websocket:jetty-websocket-jetty-client;12.0.25 -org.eclipse.jetty.websocket:jetty-websocket-jetty-common;12.0.25 -org.eclipse.jetty.websocket:jetty-websocket-jetty-server;12.0.25 -org.eclipse.jetty:jetty-alpn-client;12.0.25 -org.eclipse.jetty:jetty-alpn-conscrypt-client;12.0.25 -org.eclipse.jetty:jetty-alpn-conscrypt-server;12.0.25 -org.eclipse.jetty:jetty-alpn-java-client;12.0.25 -org.eclipse.jetty:jetty-alpn-java-server;12.0.25 -org.eclipse.jetty:jetty-alpn-server;12.0.25 -org.eclipse.jetty:jetty-bom;12.0.25 -org.eclipse.jetty:jetty-client;12.0.25 -org.eclipse.jetty:jetty-deploy;12.0.25 -org.eclipse.jetty:jetty-ee;12.0.25 -org.eclipse.jetty:jetty-http;12.0.25 -org.eclipse.jetty:jetty-http-spi;12.0.25 -org.eclipse.jetty:jetty-http-tools;12.0.25 -org.eclipse.jetty:jetty-io;12.0.25 -org.eclipse.jetty:jetty-jmx;12.0.25 -org.eclipse.jetty:jetty-jndi;12.0.25 -org.eclipse.jetty:jetty-keystore;12.0.25 -org.eclipse.jetty:jetty-openid;12.0.25 -org.eclipse.jetty:jetty-osgi;12.0.25 -org.eclipse.jetty:jetty-plus;12.0.25 -org.eclipse.jetty:jetty-proxy;12.0.25 -org.eclipse.jetty:jetty-reactive-httpclient;4.0.11 -org.eclipse.jetty:jetty-rewrite;12.0.25 -org.eclipse.jetty:jetty-security;12.0.25 -org.eclipse.jetty:jetty-server;12.0.25 -org.eclipse.jetty:jetty-session;12.0.25 -org.eclipse.jetty:jetty-slf4j-impl;12.0.25 -org.eclipse.jetty:jetty-start;12.0.25 -org.eclipse.jetty:jetty-unixdomain-server;12.0.25 -org.eclipse.jetty:jetty-util;12.0.25 -org.eclipse.jetty:jetty-util-ajax;12.0.25 -org.eclipse.jetty:jetty-xml;12.0.25 +org.eclipse.angus:angus-activation;2.0.3 +org.eclipse.angus:angus-core;2.0.5 +org.eclipse.angus:angus-mail;2.0.5 +org.eclipse.angus:dsn;2.0.5 +org.eclipse.angus:gimap;2.0.5 +org.eclipse.angus:imap;2.0.5 +org.eclipse.angus:jakarta.mail;2.0.5 +org.eclipse.angus:logging-mailhandler;2.0.5 +org.eclipse.angus:pop3;2.0.5 +org.eclipse.angus:smtp;2.0.5 +org.eclipse.jetty.demos:jetty-demo-handler;12.0.31 +org.eclipse.jetty.ee10.osgi:jetty-ee10-osgi-alpn;12.0.31 +org.eclipse.jetty.ee10.osgi:jetty-ee10-osgi-boot;12.0.31 +org.eclipse.jetty.ee10.osgi:jetty-ee10-osgi-boot-jsp;12.0.31 +org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client;12.0.31 +org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client-webapp;12.0.31 +org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-common;12.0.31 +org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server;12.0.31 +org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-client-webapp;12.0.31 +org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server;12.0.31 +org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-servlet;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-annotations;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-apache-jsp;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-bom;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-cdi;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-fcgi-proxy;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-glassfish-jstl;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-jaspi;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-jndi;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-jspc-maven-plugin;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-maven-plugin;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-plus;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-proxy;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-quickstart;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-runner;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-servlet;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-servlets;12.0.31 +org.eclipse.jetty.ee10:jetty-ee10-webapp;12.0.31 +org.eclipse.jetty.fcgi:jetty-fcgi-client;12.0.31 +org.eclipse.jetty.fcgi:jetty-fcgi-proxy;12.0.31 +org.eclipse.jetty.fcgi:jetty-fcgi-server;12.0.31 +org.eclipse.jetty.http2:jetty-http2-client;12.0.31 +org.eclipse.jetty.http2:jetty-http2-client-transport;12.0.31 +org.eclipse.jetty.http2:jetty-http2-common;12.0.31 +org.eclipse.jetty.http2:jetty-http2-hpack;12.0.31 +org.eclipse.jetty.http2:jetty-http2-server;12.0.31 +org.eclipse.jetty.http3:jetty-http3-client;12.0.31 +org.eclipse.jetty.http3:jetty-http3-client-transport;12.0.31 +org.eclipse.jetty.http3:jetty-http3-common;12.0.31 +org.eclipse.jetty.http3:jetty-http3-qpack;12.0.31 +org.eclipse.jetty.http3:jetty-http3-server;12.0.31 +org.eclipse.jetty.quic:jetty-quic-client;12.0.31 +org.eclipse.jetty.quic:jetty-quic-common;12.0.31 +org.eclipse.jetty.quic:jetty-quic-quiche-common;12.0.31 +org.eclipse.jetty.quic:jetty-quic-quiche-foreign;12.0.31 +org.eclipse.jetty.quic:jetty-quic-quiche-jna;12.0.31 +org.eclipse.jetty.quic:jetty-quic-server;12.0.31 +org.eclipse.jetty.websocket:jetty-websocket-core-client;12.0.31 +org.eclipse.jetty.websocket:jetty-websocket-core-common;12.0.31 +org.eclipse.jetty.websocket:jetty-websocket-core-server;12.0.31 +org.eclipse.jetty.websocket:jetty-websocket-jetty-api;12.0.31 +org.eclipse.jetty.websocket:jetty-websocket-jetty-client;12.0.31 +org.eclipse.jetty.websocket:jetty-websocket-jetty-common;12.0.31 +org.eclipse.jetty.websocket:jetty-websocket-jetty-server;12.0.31 +org.eclipse.jetty:jetty-alpn-client;12.0.31 +org.eclipse.jetty:jetty-alpn-conscrypt-client;12.0.31 +org.eclipse.jetty:jetty-alpn-conscrypt-server;12.0.31 +org.eclipse.jetty:jetty-alpn-java-client;12.0.31 +org.eclipse.jetty:jetty-alpn-java-server;12.0.31 +org.eclipse.jetty:jetty-alpn-server;12.0.31 +org.eclipse.jetty:jetty-bom;12.0.31 +org.eclipse.jetty:jetty-client;12.0.31 +org.eclipse.jetty:jetty-deploy;12.0.31 +org.eclipse.jetty:jetty-ee;12.0.31 +org.eclipse.jetty:jetty-http;12.0.31 +org.eclipse.jetty:jetty-http-spi;12.0.31 +org.eclipse.jetty:jetty-http-tools;12.0.31 +org.eclipse.jetty:jetty-io;12.0.31 +org.eclipse.jetty:jetty-jmx;12.0.31 +org.eclipse.jetty:jetty-jndi;12.0.31 +org.eclipse.jetty:jetty-keystore;12.0.31 +org.eclipse.jetty:jetty-openid;12.0.31 +org.eclipse.jetty:jetty-osgi;12.0.31 +org.eclipse.jetty:jetty-plus;12.0.31 +org.eclipse.jetty:jetty-proxy;12.0.31 +org.eclipse.jetty:jetty-reactive-httpclient;4.0.13 +org.eclipse.jetty:jetty-rewrite;12.0.31 +org.eclipse.jetty:jetty-security;12.0.31 +org.eclipse.jetty:jetty-server;12.0.31 +org.eclipse.jetty:jetty-session;12.0.31 +org.eclipse.jetty:jetty-slf4j-impl;12.0.31 +org.eclipse.jetty:jetty-start;12.0.31 +org.eclipse.jetty:jetty-unixdomain-server;12.0.31 +org.eclipse.jetty:jetty-util;12.0.31 +org.eclipse.jetty:jetty-util-ajax;12.0.31 +org.eclipse.jetty:jetty-xml;12.0.31 org.eclipse.jgit:org.eclipse.jgit;6.10.1.202505221210-r org.eclipse.jgit:org.eclipse.jgit.http.apache;6.10.1.202505221210-r org.eclipse.jgit:org.eclipse.jgit.junit.http;6.10.1.202505221210-r org.eclipse.jgit:org.eclipse.jgit.ssh.apache;6.10.1.202505221210-r org.eclipse:yasson;3.0.4 -org.ehcache:ehcache;3.10.8 -org.ehcache:ehcache-clustered;3.10.8 -org.ehcache:ehcache-transactions;3.10.8 -org.elasticsearch.client:elasticsearch-rest-client;8.18.5 -org.elasticsearch.client:elasticsearch-rest-client-sniffer;8.18.5 -org.firebirdsql.jdbc:jaybird;6.0.2 +org.ehcache:ehcache;3.10.9 +org.ehcache:ehcache-clustered;3.10.9 +org.ehcache:ehcache-transactions;3.10.9 +org.elasticsearch.client:elasticsearch-rest-client;8.18.8 +org.elasticsearch.client:elasticsearch-rest-client-sniffer;8.18.8 +org.firebirdsql.jdbc:jaybird;6.0.3 org.flywaydb:flyway-commandline;11.7.2 org.flywaydb:flyway-core;11.7.2 org.flywaydb:flyway-database-cassandra;11.7.2 @@ -1090,14 +1090,14 @@ org.flywaydb:flyway-mysql;11.7.2 org.flywaydb:flyway-singlestore;11.7.2 org.flywaydb:flyway-sqlserver;11.7.2 org.freemarker:freemarker;2.3.34 -org.glassfish.jaxb:codemodel;4.0.5 -org.glassfish.jaxb:jaxb-bom;4.0.5 -org.glassfish.jaxb:jaxb-core;4.0.5 -org.glassfish.jaxb:jaxb-jxc;4.0.5 -org.glassfish.jaxb:jaxb-runtime;4.0.5 -org.glassfish.jaxb:jaxb-xjc;4.0.5 -org.glassfish.jaxb:txw2;4.0.5 -org.glassfish.jaxb:xsom;4.0.5 +org.glassfish.jaxb:codemodel;4.0.6 +org.glassfish.jaxb:jaxb-bom;4.0.6 +org.glassfish.jaxb:jaxb-core;4.0.6 +org.glassfish.jaxb:jaxb-jxc;4.0.6 +org.glassfish.jaxb:jaxb-runtime;4.0.6 +org.glassfish.jaxb:jaxb-xjc;4.0.6 +org.glassfish.jaxb:txw2;4.0.6 +org.glassfish.jaxb:xsom;4.0.6 org.glassfish.jersey.bundles:jaxrs-ri;3.1.11 org.glassfish.jersey.connectors:jersey-apache-connector;3.1.11 org.glassfish.jersey.connectors:jersey-apache5-connector;3.1.11 @@ -1182,21 +1182,21 @@ org.graalvm.buildtools:native-maven-plugin;0.10.6 org.hamcrest:hamcrest;3.0 org.hamcrest:hamcrest-core;3.0 org.hamcrest:hamcrest-library;3.0 -org.hibernate.orm:hibernate-agroal;6.6.26.Final -org.hibernate.orm:hibernate-ant;6.6.26.Final -org.hibernate.orm:hibernate-c3p0;6.6.26.Final -org.hibernate.orm:hibernate-community-dialects;6.6.26.Final -org.hibernate.orm:hibernate-core;6.6.26.Final -org.hibernate.orm:hibernate-envers;6.6.26.Final -org.hibernate.orm:hibernate-graalvm;6.6.26.Final -org.hibernate.orm:hibernate-hikaricp;6.6.26.Final -org.hibernate.orm:hibernate-jcache;6.6.26.Final -org.hibernate.orm:hibernate-jpamodelgen;6.6.26.Final -org.hibernate.orm:hibernate-micrometer;6.6.26.Final -org.hibernate.orm:hibernate-proxool;6.6.26.Final -org.hibernate.orm:hibernate-spatial;6.6.26.Final -org.hibernate.orm:hibernate-testing;6.6.26.Final -org.hibernate.orm:hibernate-vibur;6.6.26.Final +org.hibernate.orm:hibernate-agroal;6.6.39.Final +org.hibernate.orm:hibernate-ant;6.6.39.Final +org.hibernate.orm:hibernate-c3p0;6.6.39.Final +org.hibernate.orm:hibernate-community-dialects;6.6.39.Final +org.hibernate.orm:hibernate-core;6.6.39.Final +org.hibernate.orm:hibernate-envers;6.6.39.Final +org.hibernate.orm:hibernate-graalvm;6.6.39.Final +org.hibernate.orm:hibernate-hikaricp;6.6.39.Final +org.hibernate.orm:hibernate-jcache;6.6.39.Final +org.hibernate.orm:hibernate-jpamodelgen;6.6.39.Final +org.hibernate.orm:hibernate-micrometer;6.6.39.Final +org.hibernate.orm:hibernate-proxool;6.6.39.Final +org.hibernate.orm:hibernate-spatial;6.6.39.Final +org.hibernate.orm:hibernate-testing;6.6.39.Final +org.hibernate.orm:hibernate-vibur;6.6.39.Final org.hibernate.validator:hibernate-validator;8.0.3.Final org.hibernate.validator:hibernate-validator-annotation-processor;8.0.3.Final org.hsqldb:hsqldb;2.7.3 @@ -1204,70 +1204,70 @@ org.htmlunit:htmlunit;4.11.1 org.infinispan.protostream:protostream;5.0.13.Final org.infinispan.protostream:protostream-processor;5.0.13.Final org.infinispan.protostream:protostream-types;5.0.13.Final -org.infinispan:infinispan-anchored-keys;15.2.5.Final -org.infinispan:infinispan-api;15.2.5.Final -org.infinispan:infinispan-bom;15.2.5.Final -org.infinispan:infinispan-cachestore-jdbc;15.2.5.Final -org.infinispan:infinispan-cachestore-jdbc-common;15.2.5.Final -org.infinispan:infinispan-cachestore-remote;15.2.5.Final -org.infinispan:infinispan-cachestore-rocksdb;15.2.5.Final -org.infinispan:infinispan-cachestore-sql;15.2.5.Final -org.infinispan:infinispan-cdi-common;15.2.5.Final -org.infinispan:infinispan-cdi-embedded;15.2.5.Final -org.infinispan:infinispan-cdi-remote;15.2.5.Final -org.infinispan:infinispan-checkstyle;15.2.5.Final -org.infinispan:infinispan-cli-client;15.2.5.Final -org.infinispan:infinispan-client-hotrod;15.2.5.Final -org.infinispan:infinispan-client-hotrod-legacy;15.2.5.Final -org.infinispan:infinispan-client-rest;15.2.5.Final -org.infinispan:infinispan-clustered-counter;15.2.5.Final -org.infinispan:infinispan-clustered-lock;15.2.5.Final -org.infinispan:infinispan-commons;15.2.5.Final -org.infinispan:infinispan-commons-graalvm;15.2.5.Final -org.infinispan:infinispan-commons-spi;15.2.5.Final -org.infinispan:infinispan-commons-test;15.2.5.Final -org.infinispan:infinispan-component-annotations;15.2.5.Final -org.infinispan:infinispan-component-processor;15.2.5.Final +org.infinispan:infinispan-anchored-keys;15.2.6.Final +org.infinispan:infinispan-api;15.2.6.Final +org.infinispan:infinispan-bom;15.2.6.Final +org.infinispan:infinispan-cachestore-jdbc;15.2.6.Final +org.infinispan:infinispan-cachestore-jdbc-common;15.2.6.Final +org.infinispan:infinispan-cachestore-remote;15.2.6.Final +org.infinispan:infinispan-cachestore-rocksdb;15.2.6.Final +org.infinispan:infinispan-cachestore-sql;15.2.6.Final +org.infinispan:infinispan-cdi-common;15.2.6.Final +org.infinispan:infinispan-cdi-embedded;15.2.6.Final +org.infinispan:infinispan-cdi-remote;15.2.6.Final +org.infinispan:infinispan-checkstyle;15.2.6.Final +org.infinispan:infinispan-cli-client;15.2.6.Final +org.infinispan:infinispan-client-hotrod;15.2.6.Final +org.infinispan:infinispan-client-hotrod-legacy;15.2.6.Final +org.infinispan:infinispan-client-rest;15.2.6.Final +org.infinispan:infinispan-clustered-counter;15.2.6.Final +org.infinispan:infinispan-clustered-lock;15.2.6.Final +org.infinispan:infinispan-commons;15.2.6.Final +org.infinispan:infinispan-commons-graalvm;15.2.6.Final +org.infinispan:infinispan-commons-spi;15.2.6.Final +org.infinispan:infinispan-commons-test;15.2.6.Final +org.infinispan:infinispan-component-annotations;15.2.6.Final +org.infinispan:infinispan-component-processor;15.2.6.Final org.infinispan:infinispan-console;15.2.1.Final -org.infinispan:infinispan-core;15.2.5.Final -org.infinispan:infinispan-core-graalvm;15.2.5.Final -org.infinispan:infinispan-counter-api;15.2.5.Final -org.infinispan:infinispan-hibernate-cache-commons;15.2.5.Final -org.infinispan:infinispan-hibernate-cache-spi;15.2.5.Final -org.infinispan:infinispan-hibernate-cache-v62;15.2.5.Final -org.infinispan:infinispan-jboss-marshalling;15.2.5.Final -org.infinispan:infinispan-jcache;15.2.5.Final -org.infinispan:infinispan-jcache-commons;15.2.5.Final -org.infinispan:infinispan-jcache-remote;15.2.5.Final -org.infinispan:infinispan-key-value-store-client;15.2.5.Final -org.infinispan:infinispan-logging-annotations;15.2.5.Final -org.infinispan:infinispan-logging-processor;15.2.5.Final -org.infinispan:infinispan-multimap;15.2.5.Final -org.infinispan:infinispan-objectfilter;15.2.5.Final -org.infinispan:infinispan-query;15.2.5.Final -org.infinispan:infinispan-query-core;15.2.5.Final -org.infinispan:infinispan-query-dsl;15.2.5.Final -org.infinispan:infinispan-remote-query-client;15.2.5.Final -org.infinispan:infinispan-remote-query-server;15.2.5.Final -org.infinispan:infinispan-scripting;15.2.5.Final -org.infinispan:infinispan-server-core;15.2.5.Final -org.infinispan:infinispan-server-hotrod;15.2.5.Final -org.infinispan:infinispan-server-memcached;15.2.5.Final -org.infinispan:infinispan-server-resp;15.2.5.Final -org.infinispan:infinispan-server-rest;15.2.5.Final -org.infinispan:infinispan-server-router;15.2.5.Final -org.infinispan:infinispan-server-runtime;15.2.5.Final -org.infinispan:infinispan-server-testdriver-core;15.2.5.Final -org.infinispan:infinispan-server-testdriver-junit4;15.2.5.Final -org.infinispan:infinispan-server-testdriver-junit5;15.2.5.Final -org.infinispan:infinispan-spring-boot3-starter-embedded;15.2.5.Final -org.infinispan:infinispan-spring-boot3-starter-remote;15.2.5.Final -org.infinispan:infinispan-spring6-common;15.2.5.Final -org.infinispan:infinispan-spring6-embedded;15.2.5.Final -org.infinispan:infinispan-spring6-remote;15.2.5.Final -org.infinispan:infinispan-tasks;15.2.5.Final -org.infinispan:infinispan-tasks-api;15.2.5.Final -org.infinispan:infinispan-tools;15.2.5.Final +org.infinispan:infinispan-core;15.2.6.Final +org.infinispan:infinispan-core-graalvm;15.2.6.Final +org.infinispan:infinispan-counter-api;15.2.6.Final +org.infinispan:infinispan-hibernate-cache-commons;15.2.6.Final +org.infinispan:infinispan-hibernate-cache-spi;15.2.6.Final +org.infinispan:infinispan-hibernate-cache-v62;15.2.6.Final +org.infinispan:infinispan-jboss-marshalling;15.2.6.Final +org.infinispan:infinispan-jcache;15.2.6.Final +org.infinispan:infinispan-jcache-commons;15.2.6.Final +org.infinispan:infinispan-jcache-remote;15.2.6.Final +org.infinispan:infinispan-key-value-store-client;15.2.6.Final +org.infinispan:infinispan-logging-annotations;15.2.6.Final +org.infinispan:infinispan-logging-processor;15.2.6.Final +org.infinispan:infinispan-multimap;15.2.6.Final +org.infinispan:infinispan-objectfilter;15.2.6.Final +org.infinispan:infinispan-query;15.2.6.Final +org.infinispan:infinispan-query-core;15.2.6.Final +org.infinispan:infinispan-query-dsl;15.2.6.Final +org.infinispan:infinispan-remote-query-client;15.2.6.Final +org.infinispan:infinispan-remote-query-server;15.2.6.Final +org.infinispan:infinispan-scripting;15.2.6.Final +org.infinispan:infinispan-server-core;15.2.6.Final +org.infinispan:infinispan-server-hotrod;15.2.6.Final +org.infinispan:infinispan-server-memcached;15.2.6.Final +org.infinispan:infinispan-server-resp;15.2.6.Final +org.infinispan:infinispan-server-rest;15.2.6.Final +org.infinispan:infinispan-server-router;15.2.6.Final +org.infinispan:infinispan-server-runtime;15.2.6.Final +org.infinispan:infinispan-server-testdriver-core;15.2.6.Final +org.infinispan:infinispan-server-testdriver-junit4;15.2.6.Final +org.infinispan:infinispan-server-testdriver-junit5;15.2.6.Final +org.infinispan:infinispan-spring-boot3-starter-embedded;15.2.6.Final +org.infinispan:infinispan-spring-boot3-starter-remote;15.2.6.Final +org.infinispan:infinispan-spring6-common;15.2.6.Final +org.infinispan:infinispan-spring6-embedded;15.2.6.Final +org.infinispan:infinispan-spring6-remote;15.2.6.Final +org.infinispan:infinispan-tasks;15.2.6.Final +org.infinispan:infinispan-tasks-api;15.2.6.Final +org.infinispan:infinispan-tools;15.2.6.Final org.influxdb:influxdb-java;2.25 org.jboss.logging:jboss-logging;3.6.1.Final org.jdom:jdom2;2.0.6.1 @@ -1328,11 +1328,11 @@ org.jetbrains.kotlinx:kotlinx-serialization-properties;1.6.3 org.jetbrains.kotlinx:kotlinx-serialization-properties-jvm;1.6.3 org.jetbrains.kotlinx:kotlinx-serialization-protobuf;1.6.3 org.jetbrains.kotlinx:kotlinx-serialization-protobuf-jvm;1.6.3 -org.jooq:jooq;3.19.25 -org.jooq:jooq-codegen;3.19.25 -org.jooq:jooq-codegen-maven;3.19.25 -org.jooq:jooq-kotlin;3.19.25 -org.jooq:jooq-meta;3.19.25 +org.jooq:jooq;3.19.29 +org.jooq:jooq-codegen;3.19.29 +org.jooq:jooq-codegen-maven;3.19.29 +org.jooq:jooq-kotlin;3.19.29 +org.jooq:jooq-meta;3.19.29 org.junit.jupiter:junit-jupiter;5.12.2 org.junit.jupiter:junit-jupiter-api;5.12.2 org.junit.jupiter:junit-jupiter-engine;5.12.2 @@ -1356,9 +1356,9 @@ org.jvnet.staxex:stax-ex;2.1.0 org.liquibase:liquibase-cdi;4.31.1 org.liquibase:liquibase-core;4.31.1 org.liquibase:liquibase-maven-plugin;4.31.1 -org.mariadb.jdbc:mariadb-java-client;3.5.5 +org.mariadb.jdbc:mariadb-java-client;3.5.7 org.mariadb:r2dbc-mariadb;1.3.0 -org.messaginghub:pooled-jms;3.1.7 +org.messaginghub:pooled-jms;3.1.8 org.mockito:mockito-android;5.17.0 org.mockito:mockito-bom;5.17.0 org.mockito:mockito-core;5.17.0 @@ -1366,30 +1366,30 @@ org.mockito:mockito-errorprone;5.17.0 org.mockito:mockito-junit-jupiter;5.17.0 org.mockito:mockito-proxy;5.17.0 org.mockito:mockito-subclass;5.17.0 -org.mongodb.scala:mongo-scala-bson_2.11;5.5.1 -org.mongodb.scala:mongo-scala-bson_2.12;5.5.1 -org.mongodb.scala:mongo-scala-bson_2.13;5.5.1 -org.mongodb.scala:mongo-scala-driver_2.11;5.5.1 -org.mongodb.scala:mongo-scala-driver_2.12;5.5.1 -org.mongodb.scala:mongo-scala-driver_2.13;5.5.1 -org.mongodb:bson;5.5.1 -org.mongodb:bson-kotlin;5.5.1 -org.mongodb:bson-kotlinx;5.5.1 -org.mongodb:bson-record-codec;5.5.1 -org.mongodb:mongodb-crypt;5.5.1 -org.mongodb:mongodb-driver-bom;5.5.1 -org.mongodb:mongodb-driver-core;5.5.1 -org.mongodb:mongodb-driver-kotlin-coroutine;5.5.1 -org.mongodb:mongodb-driver-kotlin-extensions;5.5.1 -org.mongodb:mongodb-driver-kotlin-sync;5.5.1 -org.mongodb:mongodb-driver-reactivestreams;5.5.1 -org.mongodb:mongodb-driver-sync;5.5.1 -org.neo4j.driver:neo4j-java-driver;5.28.9 -org.postgresql:postgresql;42.7.7 -org.postgresql:r2dbc-postgresql;1.0.7.RELEASE -org.projectlombok:lombok;1.18.38 -org.quartz-scheduler:quartz;2.5.0 -org.quartz-scheduler:quartz-jobs;2.5.0 +org.mongodb.scala:mongo-scala-bson_2.11;5.5.2 +org.mongodb.scala:mongo-scala-bson_2.12;5.5.2 +org.mongodb.scala:mongo-scala-bson_2.13;5.5.2 +org.mongodb.scala:mongo-scala-driver_2.11;5.5.2 +org.mongodb.scala:mongo-scala-driver_2.12;5.5.2 +org.mongodb.scala:mongo-scala-driver_2.13;5.5.2 +org.mongodb:bson;5.5.2 +org.mongodb:bson-kotlin;5.5.2 +org.mongodb:bson-kotlinx;5.5.2 +org.mongodb:bson-record-codec;5.5.2 +org.mongodb:mongodb-crypt;5.5.2 +org.mongodb:mongodb-driver-bom;5.5.2 +org.mongodb:mongodb-driver-core;5.5.2 +org.mongodb:mongodb-driver-kotlin-coroutine;5.5.2 +org.mongodb:mongodb-driver-kotlin-extensions;5.5.2 +org.mongodb:mongodb-driver-kotlin-sync;5.5.2 +org.mongodb:mongodb-driver-reactivestreams;5.5.2 +org.mongodb:mongodb-driver-sync;5.5.2 +org.neo4j.driver:neo4j-java-driver;5.28.10 +org.postgresql:postgresql;42.7.8 +org.postgresql:r2dbc-postgresql;1.0.9.RELEASE +org.projectlombok:lombok;1.18.42 +org.quartz-scheduler:quartz;2.5.2 +org.quartz-scheduler:quartz-jobs;2.5.2 org.reactivestreams:reactive-streams;1.0.4 org.seleniumhq.selenium:htmlunit3-driver;4.30.0 org.seleniumhq.selenium:selenium-api;4.31.0 @@ -1426,319 +1426,319 @@ org.slf4j:slf4j-reload4j;2.0.17 org.slf4j:slf4j-simple;2.0.17 org.sonatype.central:central-publishing-maven-plugin;0.7.0 org.sonatype.plugins:nexus-staging-maven-plugin;1.7.0 -org.springframework.amqp:spring-amqp;3.2.6 -org.springframework.amqp:spring-amqp-bom;3.2.6 -org.springframework.amqp:spring-rabbit;3.2.6 -org.springframework.amqp:spring-rabbit-junit;3.2.6 -org.springframework.amqp:spring-rabbit-stream;3.2.6 -org.springframework.amqp:spring-rabbit-test;3.2.6 -org.springframework.batch:spring-batch-bom;5.2.2 -org.springframework.batch:spring-batch-core;5.2.2 -org.springframework.batch:spring-batch-infrastructure;5.2.2 -org.springframework.batch:spring-batch-integration;5.2.2 -org.springframework.batch:spring-batch-test;5.2.2 -org.springframework.boot:spring-boot;3.5.5 -org.springframework.boot:spring-boot-actuator;3.5.5 -org.springframework.boot:spring-boot-actuator-autoconfigure;3.5.5 -org.springframework.boot:spring-boot-autoconfigure;3.5.5 -org.springframework.boot:spring-boot-autoconfigure-processor;3.5.5 -org.springframework.boot:spring-boot-buildpack-platform;3.5.5 -org.springframework.boot:spring-boot-configuration-metadata;3.5.5 -org.springframework.boot:spring-boot-configuration-processor;3.5.5 -org.springframework.boot:spring-boot-dependencies;3.5.5 -org.springframework.boot:spring-boot-devtools;3.5.5 -org.springframework.boot:spring-boot-docker-compose;3.5.5 -org.springframework.boot:spring-boot-jarmode-tools;3.5.5 -org.springframework.boot:spring-boot-loader;3.5.5 -org.springframework.boot:spring-boot-loader-classic;3.5.5 -org.springframework.boot:spring-boot-loader-tools;3.5.5 -org.springframework.boot:spring-boot-maven-plugin;3.5.5 -org.springframework.boot:spring-boot-properties-migrator;3.5.5 -org.springframework.boot:spring-boot-starter;3.5.5 -org.springframework.boot:spring-boot-starter-activemq;3.5.5 -org.springframework.boot:spring-boot-starter-actuator;3.5.5 -org.springframework.boot:spring-boot-starter-amqp;3.5.5 -org.springframework.boot:spring-boot-starter-aop;3.5.5 -org.springframework.boot:spring-boot-starter-artemis;3.5.5 -org.springframework.boot:spring-boot-starter-batch;3.5.5 -org.springframework.boot:spring-boot-starter-cache;3.5.5 -org.springframework.boot:spring-boot-starter-data-cassandra;3.5.5 -org.springframework.boot:spring-boot-starter-data-cassandra-reactive;3.5.5 -org.springframework.boot:spring-boot-starter-data-couchbase;3.5.5 -org.springframework.boot:spring-boot-starter-data-couchbase-reactive;3.5.5 -org.springframework.boot:spring-boot-starter-data-elasticsearch;3.5.5 -org.springframework.boot:spring-boot-starter-data-jdbc;3.5.5 -org.springframework.boot:spring-boot-starter-data-jpa;3.5.5 -org.springframework.boot:spring-boot-starter-data-ldap;3.5.5 -org.springframework.boot:spring-boot-starter-data-mongodb;3.5.5 -org.springframework.boot:spring-boot-starter-data-mongodb-reactive;3.5.5 -org.springframework.boot:spring-boot-starter-data-neo4j;3.5.5 -org.springframework.boot:spring-boot-starter-data-r2dbc;3.5.5 -org.springframework.boot:spring-boot-starter-data-redis;3.5.5 -org.springframework.boot:spring-boot-starter-data-redis-reactive;3.5.5 -org.springframework.boot:spring-boot-starter-data-rest;3.5.5 -org.springframework.boot:spring-boot-starter-freemarker;3.5.5 -org.springframework.boot:spring-boot-starter-graphql;3.5.5 -org.springframework.boot:spring-boot-starter-groovy-templates;3.5.5 -org.springframework.boot:spring-boot-starter-hateoas;3.5.5 -org.springframework.boot:spring-boot-starter-integration;3.5.5 -org.springframework.boot:spring-boot-starter-jdbc;3.5.5 -org.springframework.boot:spring-boot-starter-jersey;3.5.5 -org.springframework.boot:spring-boot-starter-jetty;3.5.5 -org.springframework.boot:spring-boot-starter-jooq;3.5.5 -org.springframework.boot:spring-boot-starter-json;3.5.5 -org.springframework.boot:spring-boot-starter-log4j2;3.5.5 -org.springframework.boot:spring-boot-starter-logging;3.5.5 -org.springframework.boot:spring-boot-starter-mail;3.5.5 -org.springframework.boot:spring-boot-starter-mustache;3.5.5 -org.springframework.boot:spring-boot-starter-oauth2-authorization-server;3.5.5 -org.springframework.boot:spring-boot-starter-oauth2-client;3.5.5 -org.springframework.boot:spring-boot-starter-oauth2-resource-server;3.5.5 -org.springframework.boot:spring-boot-starter-parent;3.5.5 -org.springframework.boot:spring-boot-starter-pulsar;3.5.5 -org.springframework.boot:spring-boot-starter-pulsar-reactive;3.5.5 -org.springframework.boot:spring-boot-starter-quartz;3.5.5 -org.springframework.boot:spring-boot-starter-reactor-netty;3.5.5 -org.springframework.boot:spring-boot-starter-rsocket;3.5.5 -org.springframework.boot:spring-boot-starter-security;3.5.5 -org.springframework.boot:spring-boot-starter-test;3.5.5 -org.springframework.boot:spring-boot-starter-thymeleaf;3.5.5 -org.springframework.boot:spring-boot-starter-tomcat;3.5.5 -org.springframework.boot:spring-boot-starter-undertow;3.5.5 -org.springframework.boot:spring-boot-starter-validation;3.5.5 -org.springframework.boot:spring-boot-starter-web;3.5.5 -org.springframework.boot:spring-boot-starter-web-services;3.5.5 -org.springframework.boot:spring-boot-starter-webflux;3.5.5 -org.springframework.boot:spring-boot-starter-websocket;3.5.5 -org.springframework.boot:spring-boot-test;3.5.5 -org.springframework.boot:spring-boot-test-autoconfigure;3.5.5 -org.springframework.boot:spring-boot-testcontainers;3.5.5 -org.springframework.cloud:spring-cloud-bus;4.3.0 -org.springframework.cloud:spring-cloud-bus-dependencies;4.3.0 -org.springframework.cloud:spring-cloud-bus-rsocket;4.3.0 -org.springframework.cloud:spring-cloud-circuitbreaker-dependencies;3.3.0 -org.springframework.cloud:spring-cloud-circuitbreaker-resilience4j;3.3.0 -org.springframework.cloud:spring-cloud-circuitbreaker-spring-retry;3.3.0 -org.springframework.cloud:spring-cloud-commons;4.3.0 -org.springframework.cloud:spring-cloud-commons-dependencies;4.3.0 -org.springframework.cloud:spring-cloud-config-client;4.3.0 -org.springframework.cloud:spring-cloud-config-dependencies;4.3.0 -org.springframework.cloud:spring-cloud-config-monitor;4.3.0 -org.springframework.cloud:spring-cloud-config-server;4.3.0 -org.springframework.cloud:spring-cloud-consul-binder;4.3.0 -org.springframework.cloud:spring-cloud-consul-config;4.3.0 -org.springframework.cloud:spring-cloud-consul-core;4.3.0 -org.springframework.cloud:spring-cloud-consul-dependencies;4.3.0 -org.springframework.cloud:spring-cloud-consul-discovery;4.3.0 -org.springframework.cloud:spring-cloud-context;4.3.0 -org.springframework.cloud:spring-cloud-contract-converters;4.3.0 -org.springframework.cloud:spring-cloud-contract-dependencies;4.3.0 -org.springframework.cloud:spring-cloud-contract-gradle-plugin;4.3.0 -org.springframework.cloud:spring-cloud-contract-maven-plugin;4.3.0 -org.springframework.cloud:spring-cloud-contract-shade;4.3.0 -org.springframework.cloud:spring-cloud-contract-spec;4.3.0 -org.springframework.cloud:spring-cloud-contract-spec-groovy;4.3.0 -org.springframework.cloud:spring-cloud-contract-spec-java;4.3.0 -org.springframework.cloud:spring-cloud-contract-spec-kotlin;4.3.0 -org.springframework.cloud:spring-cloud-contract-stub-runner;4.3.0 -org.springframework.cloud:spring-cloud-contract-stub-runner-boot;4.3.0 -org.springframework.cloud:spring-cloud-contract-verifier;4.3.0 -org.springframework.cloud:spring-cloud-contract-wiremock;4.3.0 -org.springframework.cloud:spring-cloud-dependencies;2025.0.0 -org.springframework.cloud:spring-cloud-function-adapter-aws;4.3.0 -org.springframework.cloud:spring-cloud-function-adapter-azure;4.3.0 -org.springframework.cloud:spring-cloud-function-adapter-azure-web;4.3.0 -org.springframework.cloud:spring-cloud-function-adapter-gcp;4.3.0 -org.springframework.cloud:spring-cloud-function-context;4.3.0 -org.springframework.cloud:spring-cloud-function-core;4.3.0 -org.springframework.cloud:spring-cloud-function-dependencies;4.3.0 -org.springframework.cloud:spring-cloud-function-deployer;4.3.0 -org.springframework.cloud:spring-cloud-function-grpc;4.3.0 -org.springframework.cloud:spring-cloud-function-grpc-cloudevent-ext;4.3.0 -org.springframework.cloud:spring-cloud-function-integration;4.3.0 -org.springframework.cloud:spring-cloud-function-kotlin;4.3.0 -org.springframework.cloud:spring-cloud-function-rsocket;4.3.0 -org.springframework.cloud:spring-cloud-function-serverless-web;4.3.0 -org.springframework.cloud:spring-cloud-function-web;4.3.0 -org.springframework.cloud:spring-cloud-gateway-dependencies;4.3.0 -org.springframework.cloud:spring-cloud-gateway-mvc;4.3.0 -org.springframework.cloud:spring-cloud-gateway-proxyexchange-webflux;4.3.0 -org.springframework.cloud:spring-cloud-gateway-proxyexchange-webmvc;4.3.0 -org.springframework.cloud:spring-cloud-gateway-server;4.3.0 -org.springframework.cloud:spring-cloud-gateway-server-mvc;4.3.0 -org.springframework.cloud:spring-cloud-gateway-server-webflux;4.3.0 -org.springframework.cloud:spring-cloud-gateway-server-webmvc;4.3.0 -org.springframework.cloud:spring-cloud-gateway-webflux;4.3.0 -org.springframework.cloud:spring-cloud-kubernetes-client-autoconfig;3.3.0 -org.springframework.cloud:spring-cloud-kubernetes-client-config;3.3.0 -org.springframework.cloud:spring-cloud-kubernetes-client-discovery;3.3.0 -org.springframework.cloud:spring-cloud-kubernetes-client-loadbalancer;3.3.0 -org.springframework.cloud:spring-cloud-kubernetes-commons;3.3.0 -org.springframework.cloud:spring-cloud-kubernetes-dependencies;3.3.0 -org.springframework.cloud:spring-cloud-kubernetes-discovery;3.3.0 -org.springframework.cloud:spring-cloud-kubernetes-fabric8-autoconfig;3.3.0 -org.springframework.cloud:spring-cloud-kubernetes-fabric8-config;3.3.0 -org.springframework.cloud:spring-cloud-kubernetes-fabric8-discovery;3.3.0 -org.springframework.cloud:spring-cloud-kubernetes-fabric8-istio;3.3.0 -org.springframework.cloud:spring-cloud-kubernetes-fabric8-leader;3.3.0 -org.springframework.cloud:spring-cloud-kubernetes-fabric8-loadbalancer;3.3.0 -org.springframework.cloud:spring-cloud-kubernetes-test-support;3.3.0 -org.springframework.cloud:spring-cloud-loadbalancer;4.3.0 -org.springframework.cloud:spring-cloud-netflix-dependencies;4.3.0 -org.springframework.cloud:spring-cloud-netflix-eureka-client;4.3.0 -org.springframework.cloud:spring-cloud-netflix-eureka-server;4.3.0 -org.springframework.cloud:spring-cloud-openfeign-core;4.3.0 -org.springframework.cloud:spring-cloud-openfeign-dependencies;4.3.0 -org.springframework.cloud:spring-cloud-starter;4.3.0 -org.springframework.cloud:spring-cloud-starter-bootstrap;4.3.0 -org.springframework.cloud:spring-cloud-starter-bus-amqp;4.3.0 -org.springframework.cloud:spring-cloud-starter-bus-kafka;4.3.0 -org.springframework.cloud:spring-cloud-starter-bus-stream;4.3.0 -org.springframework.cloud:spring-cloud-starter-circuitbreaker-reactor-resilience4j;3.3.0 -org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j;3.3.0 -org.springframework.cloud:spring-cloud-starter-circuitbreaker-spring-retry;3.3.0 -org.springframework.cloud:spring-cloud-starter-config;4.3.0 -org.springframework.cloud:spring-cloud-starter-consul;4.3.0 -org.springframework.cloud:spring-cloud-starter-consul-all;4.3.0 -org.springframework.cloud:spring-cloud-starter-consul-bus;4.3.0 -org.springframework.cloud:spring-cloud-starter-consul-config;4.3.0 -org.springframework.cloud:spring-cloud-starter-consul-discovery;4.3.0 -org.springframework.cloud:spring-cloud-starter-contract-stub-runner;4.3.0 -org.springframework.cloud:spring-cloud-starter-contract-stub-runner-jetty;4.3.0 -org.springframework.cloud:spring-cloud-starter-contract-verifier;4.3.0 -org.springframework.cloud:spring-cloud-starter-function-web;4.3.0 -org.springframework.cloud:spring-cloud-starter-function-webflux;4.3.0 -org.springframework.cloud:spring-cloud-starter-gateway;4.3.0 -org.springframework.cloud:spring-cloud-starter-gateway-mvc;4.3.0 -org.springframework.cloud:spring-cloud-starter-gateway-server-webflux;4.3.0 -org.springframework.cloud:spring-cloud-starter-gateway-server-webmvc;4.3.0 -org.springframework.cloud:spring-cloud-starter-kubernetes-client;3.3.0 -org.springframework.cloud:spring-cloud-starter-kubernetes-client-all;3.3.0 -org.springframework.cloud:spring-cloud-starter-kubernetes-client-config;3.3.0 -org.springframework.cloud:spring-cloud-starter-kubernetes-client-loadbalancer;3.3.0 -org.springframework.cloud:spring-cloud-starter-kubernetes-discoveryclient;3.3.0 -org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8;3.3.0 -org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8-all;3.3.0 -org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8-config;3.3.0 -org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8-loadbalancer;3.3.0 -org.springframework.cloud:spring-cloud-starter-loadbalancer;4.3.0 -org.springframework.cloud:spring-cloud-starter-netflix-eureka-client;4.3.0 -org.springframework.cloud:spring-cloud-starter-netflix-eureka-server;4.3.0 -org.springframework.cloud:spring-cloud-starter-openfeign;4.3.0 -org.springframework.cloud:spring-cloud-starter-stream-kafka;4.3.0 -org.springframework.cloud:spring-cloud-starter-stream-rabbit;4.3.0 -org.springframework.cloud:spring-cloud-starter-task;3.3.0 -org.springframework.cloud:spring-cloud-starter-vault-config;4.3.0 -org.springframework.cloud:spring-cloud-starter-zookeeper;4.3.0 -org.springframework.cloud:spring-cloud-starter-zookeeper-all;4.3.0 -org.springframework.cloud:spring-cloud-starter-zookeeper-config;4.3.0 -org.springframework.cloud:spring-cloud-starter-zookeeper-discovery;4.3.0 -org.springframework.cloud:spring-cloud-stream;4.3.0 -org.springframework.cloud:spring-cloud-stream-binder-kafka;4.3.0 -org.springframework.cloud:spring-cloud-stream-binder-kafka-core;4.3.0 -org.springframework.cloud:spring-cloud-stream-binder-kafka-reactive;4.3.0 -org.springframework.cloud:spring-cloud-stream-binder-kafka-streams;4.3.0 -org.springframework.cloud:spring-cloud-stream-binder-pulsar;4.3.0 -org.springframework.cloud:spring-cloud-stream-binder-rabbit;4.3.0 -org.springframework.cloud:spring-cloud-stream-binder-rabbit-core;4.3.0 -org.springframework.cloud:spring-cloud-stream-binder-rabbit-test-support;4.3.0 -org.springframework.cloud:spring-cloud-stream-dependencies;4.3.0 -org.springframework.cloud:spring-cloud-stream-schema-registry-client;4.3.0 -org.springframework.cloud:spring-cloud-stream-schema-registry-core;4.3.0 -org.springframework.cloud:spring-cloud-stream-schema-registry-server;4.3.0 -org.springframework.cloud:spring-cloud-stream-test-binder;4.3.0 -org.springframework.cloud:spring-cloud-stream-test-support;4.3.0 -org.springframework.cloud:spring-cloud-task-batch;3.3.0 -org.springframework.cloud:spring-cloud-task-core;3.3.0 -org.springframework.cloud:spring-cloud-task-dependencies;3.3.0 -org.springframework.cloud:spring-cloud-task-stream;3.3.0 -org.springframework.cloud:spring-cloud-test-support;4.3.0 -org.springframework.cloud:spring-cloud-vault-config;4.3.0 -org.springframework.cloud:spring-cloud-vault-config-aws;4.3.0 -org.springframework.cloud:spring-cloud-vault-config-consul;4.3.0 -org.springframework.cloud:spring-cloud-vault-config-databases;4.3.0 -org.springframework.cloud:spring-cloud-vault-config-rabbitmq;4.3.0 -org.springframework.cloud:spring-cloud-vault-dependencies;4.3.0 -org.springframework.cloud:spring-cloud-zookeeper-config;4.3.0 -org.springframework.cloud:spring-cloud-zookeeper-core;4.3.0 -org.springframework.cloud:spring-cloud-zookeeper-dependencies;4.3.0 -org.springframework.cloud:spring-cloud-zookeeper-discovery;4.3.0 +org.springframework.amqp:spring-amqp;3.2.8 +org.springframework.amqp:spring-amqp-bom;3.2.8 +org.springframework.amqp:spring-rabbit;3.2.8 +org.springframework.amqp:spring-rabbit-junit;3.2.8 +org.springframework.amqp:spring-rabbit-stream;3.2.8 +org.springframework.amqp:spring-rabbit-test;3.2.8 +org.springframework.batch:spring-batch-bom;5.2.4 +org.springframework.batch:spring-batch-core;5.2.4 +org.springframework.batch:spring-batch-infrastructure;5.2.4 +org.springframework.batch:spring-batch-integration;5.2.4 +org.springframework.batch:spring-batch-test;5.2.4 +org.springframework.boot:spring-boot;3.5.9 +org.springframework.boot:spring-boot-actuator;3.5.9 +org.springframework.boot:spring-boot-actuator-autoconfigure;3.5.9 +org.springframework.boot:spring-boot-autoconfigure;3.5.9 +org.springframework.boot:spring-boot-autoconfigure-processor;3.5.9 +org.springframework.boot:spring-boot-buildpack-platform;3.5.9 +org.springframework.boot:spring-boot-configuration-metadata;3.5.9 +org.springframework.boot:spring-boot-configuration-processor;3.5.9 +org.springframework.boot:spring-boot-dependencies;3.5.9 +org.springframework.boot:spring-boot-devtools;3.5.9 +org.springframework.boot:spring-boot-docker-compose;3.5.9 +org.springframework.boot:spring-boot-jarmode-tools;3.5.9 +org.springframework.boot:spring-boot-loader;3.5.9 +org.springframework.boot:spring-boot-loader-classic;3.5.9 +org.springframework.boot:spring-boot-loader-tools;3.5.9 +org.springframework.boot:spring-boot-maven-plugin;3.5.9 +org.springframework.boot:spring-boot-properties-migrator;3.5.9 +org.springframework.boot:spring-boot-starter;3.5.9 +org.springframework.boot:spring-boot-starter-activemq;3.5.9 +org.springframework.boot:spring-boot-starter-actuator;3.5.9 +org.springframework.boot:spring-boot-starter-amqp;3.5.9 +org.springframework.boot:spring-boot-starter-aop;3.5.9 +org.springframework.boot:spring-boot-starter-artemis;3.5.9 +org.springframework.boot:spring-boot-starter-batch;3.5.9 +org.springframework.boot:spring-boot-starter-cache;3.5.9 +org.springframework.boot:spring-boot-starter-data-cassandra;3.5.9 +org.springframework.boot:spring-boot-starter-data-cassandra-reactive;3.5.9 +org.springframework.boot:spring-boot-starter-data-couchbase;3.5.9 +org.springframework.boot:spring-boot-starter-data-couchbase-reactive;3.5.9 +org.springframework.boot:spring-boot-starter-data-elasticsearch;3.5.9 +org.springframework.boot:spring-boot-starter-data-jdbc;3.5.9 +org.springframework.boot:spring-boot-starter-data-jpa;3.5.9 +org.springframework.boot:spring-boot-starter-data-ldap;3.5.9 +org.springframework.boot:spring-boot-starter-data-mongodb;3.5.9 +org.springframework.boot:spring-boot-starter-data-mongodb-reactive;3.5.9 +org.springframework.boot:spring-boot-starter-data-neo4j;3.5.9 +org.springframework.boot:spring-boot-starter-data-r2dbc;3.5.9 +org.springframework.boot:spring-boot-starter-data-redis;3.5.9 +org.springframework.boot:spring-boot-starter-data-redis-reactive;3.5.9 +org.springframework.boot:spring-boot-starter-data-rest;3.5.9 +org.springframework.boot:spring-boot-starter-freemarker;3.5.9 +org.springframework.boot:spring-boot-starter-graphql;3.5.9 +org.springframework.boot:spring-boot-starter-groovy-templates;3.5.9 +org.springframework.boot:spring-boot-starter-hateoas;3.5.9 +org.springframework.boot:spring-boot-starter-integration;3.5.9 +org.springframework.boot:spring-boot-starter-jdbc;3.5.9 +org.springframework.boot:spring-boot-starter-jersey;3.5.9 +org.springframework.boot:spring-boot-starter-jetty;3.5.9 +org.springframework.boot:spring-boot-starter-jooq;3.5.9 +org.springframework.boot:spring-boot-starter-json;3.5.9 +org.springframework.boot:spring-boot-starter-log4j2;3.5.9 +org.springframework.boot:spring-boot-starter-logging;3.5.9 +org.springframework.boot:spring-boot-starter-mail;3.5.9 +org.springframework.boot:spring-boot-starter-mustache;3.5.9 +org.springframework.boot:spring-boot-starter-oauth2-authorization-server;3.5.9 +org.springframework.boot:spring-boot-starter-oauth2-client;3.5.9 +org.springframework.boot:spring-boot-starter-oauth2-resource-server;3.5.9 +org.springframework.boot:spring-boot-starter-parent;3.5.9 +org.springframework.boot:spring-boot-starter-pulsar;3.5.9 +org.springframework.boot:spring-boot-starter-pulsar-reactive;3.5.9 +org.springframework.boot:spring-boot-starter-quartz;3.5.9 +org.springframework.boot:spring-boot-starter-reactor-netty;3.5.9 +org.springframework.boot:spring-boot-starter-rsocket;3.5.9 +org.springframework.boot:spring-boot-starter-security;3.5.9 +org.springframework.boot:spring-boot-starter-test;3.5.9 +org.springframework.boot:spring-boot-starter-thymeleaf;3.5.9 +org.springframework.boot:spring-boot-starter-tomcat;3.5.9 +org.springframework.boot:spring-boot-starter-undertow;3.5.9 +org.springframework.boot:spring-boot-starter-validation;3.5.9 +org.springframework.boot:spring-boot-starter-web;3.5.9 +org.springframework.boot:spring-boot-starter-web-services;3.5.9 +org.springframework.boot:spring-boot-starter-webflux;3.5.9 +org.springframework.boot:spring-boot-starter-websocket;3.5.9 +org.springframework.boot:spring-boot-test;3.5.9 +org.springframework.boot:spring-boot-test-autoconfigure;3.5.9 +org.springframework.boot:spring-boot-testcontainers;3.5.9 +org.springframework.cloud:spring-cloud-bus;4.3.1 +org.springframework.cloud:spring-cloud-bus-dependencies;4.3.1 +org.springframework.cloud:spring-cloud-bus-rsocket;4.3.1 +org.springframework.cloud:spring-cloud-circuitbreaker-dependencies;3.3.1 +org.springframework.cloud:spring-cloud-circuitbreaker-resilience4j;3.3.1 +org.springframework.cloud:spring-cloud-circuitbreaker-spring-retry;3.3.1 +org.springframework.cloud:spring-cloud-commons;4.3.1 +org.springframework.cloud:spring-cloud-commons-dependencies;4.3.1 +org.springframework.cloud:spring-cloud-config-client;4.3.1 +org.springframework.cloud:spring-cloud-config-dependencies;4.3.1 +org.springframework.cloud:spring-cloud-config-monitor;4.3.1 +org.springframework.cloud:spring-cloud-config-server;4.3.1 +org.springframework.cloud:spring-cloud-consul-binder;4.3.1 +org.springframework.cloud:spring-cloud-consul-config;4.3.1 +org.springframework.cloud:spring-cloud-consul-core;4.3.1 +org.springframework.cloud:spring-cloud-consul-dependencies;4.3.1 +org.springframework.cloud:spring-cloud-consul-discovery;4.3.1 +org.springframework.cloud:spring-cloud-context;4.3.1 +org.springframework.cloud:spring-cloud-contract-converters;4.3.1 +org.springframework.cloud:spring-cloud-contract-dependencies;4.3.1 +org.springframework.cloud:spring-cloud-contract-gradle-plugin;4.3.1 +org.springframework.cloud:spring-cloud-contract-maven-plugin;4.3.1 +org.springframework.cloud:spring-cloud-contract-shade;4.3.1 +org.springframework.cloud:spring-cloud-contract-spec;4.3.1 +org.springframework.cloud:spring-cloud-contract-spec-groovy;4.3.1 +org.springframework.cloud:spring-cloud-contract-spec-java;4.3.1 +org.springframework.cloud:spring-cloud-contract-spec-kotlin;4.3.1 +org.springframework.cloud:spring-cloud-contract-stub-runner;4.3.1 +org.springframework.cloud:spring-cloud-contract-stub-runner-boot;4.3.1 +org.springframework.cloud:spring-cloud-contract-verifier;4.3.1 +org.springframework.cloud:spring-cloud-contract-wiremock;4.3.1 +org.springframework.cloud:spring-cloud-dependencies;2025.0.1 +org.springframework.cloud:spring-cloud-function-adapter-aws;4.3.1 +org.springframework.cloud:spring-cloud-function-adapter-azure;4.3.1 +org.springframework.cloud:spring-cloud-function-adapter-azure-web;4.3.1 +org.springframework.cloud:spring-cloud-function-adapter-gcp;4.3.1 +org.springframework.cloud:spring-cloud-function-context;4.3.1 +org.springframework.cloud:spring-cloud-function-core;4.3.1 +org.springframework.cloud:spring-cloud-function-dependencies;4.3.1 +org.springframework.cloud:spring-cloud-function-deployer;4.3.1 +org.springframework.cloud:spring-cloud-function-grpc;4.3.1 +org.springframework.cloud:spring-cloud-function-grpc-cloudevent-ext;4.3.1 +org.springframework.cloud:spring-cloud-function-integration;4.3.1 +org.springframework.cloud:spring-cloud-function-kotlin;4.3.1 +org.springframework.cloud:spring-cloud-function-rsocket;4.3.1 +org.springframework.cloud:spring-cloud-function-serverless-web;4.3.1 +org.springframework.cloud:spring-cloud-function-web;4.3.1 +org.springframework.cloud:spring-cloud-gateway-dependencies;4.3.3 +org.springframework.cloud:spring-cloud-gateway-mvc;4.3.3 +org.springframework.cloud:spring-cloud-gateway-proxyexchange-webflux;4.3.3 +org.springframework.cloud:spring-cloud-gateway-proxyexchange-webmvc;4.3.3 +org.springframework.cloud:spring-cloud-gateway-server;4.3.3 +org.springframework.cloud:spring-cloud-gateway-server-mvc;4.3.3 +org.springframework.cloud:spring-cloud-gateway-server-webflux;4.3.3 +org.springframework.cloud:spring-cloud-gateway-server-webmvc;4.3.3 +org.springframework.cloud:spring-cloud-gateway-webflux;4.3.3 +org.springframework.cloud:spring-cloud-kubernetes-client-autoconfig;3.3.1 +org.springframework.cloud:spring-cloud-kubernetes-client-config;3.3.1 +org.springframework.cloud:spring-cloud-kubernetes-client-discovery;3.3.1 +org.springframework.cloud:spring-cloud-kubernetes-client-loadbalancer;3.3.1 +org.springframework.cloud:spring-cloud-kubernetes-commons;3.3.1 +org.springframework.cloud:spring-cloud-kubernetes-dependencies;3.3.1 +org.springframework.cloud:spring-cloud-kubernetes-discovery;3.3.1 +org.springframework.cloud:spring-cloud-kubernetes-fabric8-autoconfig;3.3.1 +org.springframework.cloud:spring-cloud-kubernetes-fabric8-config;3.3.1 +org.springframework.cloud:spring-cloud-kubernetes-fabric8-discovery;3.3.1 +org.springframework.cloud:spring-cloud-kubernetes-fabric8-istio;3.3.1 +org.springframework.cloud:spring-cloud-kubernetes-fabric8-leader;3.3.1 +org.springframework.cloud:spring-cloud-kubernetes-fabric8-loadbalancer;3.3.1 +org.springframework.cloud:spring-cloud-kubernetes-test-support;3.3.1 +org.springframework.cloud:spring-cloud-loadbalancer;4.3.1 +org.springframework.cloud:spring-cloud-netflix-dependencies;4.3.1 +org.springframework.cloud:spring-cloud-netflix-eureka-client;4.3.1 +org.springframework.cloud:spring-cloud-netflix-eureka-server;4.3.1 +org.springframework.cloud:spring-cloud-openfeign-core;4.3.1 +org.springframework.cloud:spring-cloud-openfeign-dependencies;4.3.1 +org.springframework.cloud:spring-cloud-starter;4.3.1 +org.springframework.cloud:spring-cloud-starter-bootstrap;4.3.1 +org.springframework.cloud:spring-cloud-starter-bus-amqp;4.3.1 +org.springframework.cloud:spring-cloud-starter-bus-kafka;4.3.1 +org.springframework.cloud:spring-cloud-starter-bus-stream;4.3.1 +org.springframework.cloud:spring-cloud-starter-circuitbreaker-reactor-resilience4j;3.3.1 +org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j;3.3.1 +org.springframework.cloud:spring-cloud-starter-circuitbreaker-spring-retry;3.3.1 +org.springframework.cloud:spring-cloud-starter-config;4.3.1 +org.springframework.cloud:spring-cloud-starter-consul;4.3.1 +org.springframework.cloud:spring-cloud-starter-consul-all;4.3.1 +org.springframework.cloud:spring-cloud-starter-consul-bus;4.3.1 +org.springframework.cloud:spring-cloud-starter-consul-config;4.3.1 +org.springframework.cloud:spring-cloud-starter-consul-discovery;4.3.1 +org.springframework.cloud:spring-cloud-starter-contract-stub-runner;4.3.1 +org.springframework.cloud:spring-cloud-starter-contract-stub-runner-jetty;4.3.1 +org.springframework.cloud:spring-cloud-starter-contract-verifier;4.3.1 +org.springframework.cloud:spring-cloud-starter-function-web;4.3.1 +org.springframework.cloud:spring-cloud-starter-function-webflux;4.3.1 +org.springframework.cloud:spring-cloud-starter-gateway;4.3.3 +org.springframework.cloud:spring-cloud-starter-gateway-mvc;4.3.3 +org.springframework.cloud:spring-cloud-starter-gateway-server-webflux;4.3.3 +org.springframework.cloud:spring-cloud-starter-gateway-server-webmvc;4.3.3 +org.springframework.cloud:spring-cloud-starter-kubernetes-client;3.3.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-client-all;3.3.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-client-config;3.3.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-client-loadbalancer;3.3.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-discoveryclient;3.3.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8;3.3.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8-all;3.3.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8-config;3.3.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8-loadbalancer;3.3.1 +org.springframework.cloud:spring-cloud-starter-loadbalancer;4.3.1 +org.springframework.cloud:spring-cloud-starter-netflix-eureka-client;4.3.1 +org.springframework.cloud:spring-cloud-starter-netflix-eureka-server;4.3.1 +org.springframework.cloud:spring-cloud-starter-openfeign;4.3.1 +org.springframework.cloud:spring-cloud-starter-stream-kafka;4.3.1 +org.springframework.cloud:spring-cloud-starter-stream-rabbit;4.3.1 +org.springframework.cloud:spring-cloud-starter-task;3.3.1 +org.springframework.cloud:spring-cloud-starter-vault-config;4.3.1 +org.springframework.cloud:spring-cloud-starter-zookeeper;4.3.1 +org.springframework.cloud:spring-cloud-starter-zookeeper-all;4.3.1 +org.springframework.cloud:spring-cloud-starter-zookeeper-config;4.3.1 +org.springframework.cloud:spring-cloud-starter-zookeeper-discovery;4.3.1 +org.springframework.cloud:spring-cloud-stream;4.3.1 +org.springframework.cloud:spring-cloud-stream-binder-kafka;4.3.1 +org.springframework.cloud:spring-cloud-stream-binder-kafka-core;4.3.1 +org.springframework.cloud:spring-cloud-stream-binder-kafka-reactive;4.3.1 +org.springframework.cloud:spring-cloud-stream-binder-kafka-streams;4.3.1 +org.springframework.cloud:spring-cloud-stream-binder-pulsar;4.3.1 +org.springframework.cloud:spring-cloud-stream-binder-rabbit;4.3.1 +org.springframework.cloud:spring-cloud-stream-binder-rabbit-core;4.3.1 +org.springframework.cloud:spring-cloud-stream-binder-rabbit-test-support;4.3.1 +org.springframework.cloud:spring-cloud-stream-dependencies;4.3.1 +org.springframework.cloud:spring-cloud-stream-schema-registry-client;4.3.1 +org.springframework.cloud:spring-cloud-stream-schema-registry-core;4.3.1 +org.springframework.cloud:spring-cloud-stream-schema-registry-server;4.3.1 +org.springframework.cloud:spring-cloud-stream-test-binder;4.3.1 +org.springframework.cloud:spring-cloud-stream-test-support;4.3.1 +org.springframework.cloud:spring-cloud-task-batch;3.3.1 +org.springframework.cloud:spring-cloud-task-core;3.3.1 +org.springframework.cloud:spring-cloud-task-dependencies;3.3.1 +org.springframework.cloud:spring-cloud-task-stream;3.3.1 +org.springframework.cloud:spring-cloud-test-support;4.3.1 +org.springframework.cloud:spring-cloud-vault-config;4.3.1 +org.springframework.cloud:spring-cloud-vault-config-aws;4.3.1 +org.springframework.cloud:spring-cloud-vault-config-consul;4.3.1 +org.springframework.cloud:spring-cloud-vault-config-databases;4.3.1 +org.springframework.cloud:spring-cloud-vault-config-rabbitmq;4.3.1 +org.springframework.cloud:spring-cloud-vault-dependencies;4.3.1 +org.springframework.cloud:spring-cloud-zookeeper-config;4.3.1 +org.springframework.cloud:spring-cloud-zookeeper-core;4.3.1 +org.springframework.cloud:spring-cloud-zookeeper-dependencies;4.3.1 +org.springframework.cloud:spring-cloud-zookeeper-discovery;4.3.1 org.springframework.credhub:spring-credhub-core;2.1.1.RELEASE -org.springframework.data:spring-data-bom;2025.0.3 -org.springframework.data:spring-data-cassandra;4.5.3 -org.springframework.data:spring-data-commons;3.5.3 -org.springframework.data:spring-data-couchbase;5.5.3 -org.springframework.data:spring-data-elasticsearch;5.5.3 -org.springframework.data:spring-data-envers;3.5.3 -org.springframework.data:spring-data-jdbc;3.5.3 -org.springframework.data:spring-data-jpa;3.5.3 -org.springframework.data:spring-data-keyvalue;3.5.3 -org.springframework.data:spring-data-ldap;3.5.3 -org.springframework.data:spring-data-mongodb;4.5.3 -org.springframework.data:spring-data-neo4j;7.5.3 -org.springframework.data:spring-data-r2dbc;3.5.3 -org.springframework.data:spring-data-redis;3.5.3 -org.springframework.data:spring-data-relational;3.5.3 -org.springframework.data:spring-data-rest-core;4.5.3 -org.springframework.data:spring-data-rest-hal-explorer;4.5.3 -org.springframework.data:spring-data-rest-webmvc;4.5.3 -org.springframework.graphql:spring-graphql;1.4.1 -org.springframework.graphql:spring-graphql-test;1.4.1 +org.springframework.data:spring-data-bom;2025.0.7 +org.springframework.data:spring-data-cassandra;4.5.7 +org.springframework.data:spring-data-commons;3.5.7 +org.springframework.data:spring-data-couchbase;5.5.7 +org.springframework.data:spring-data-elasticsearch;5.5.7 +org.springframework.data:spring-data-envers;3.5.7 +org.springframework.data:spring-data-jdbc;3.5.7 +org.springframework.data:spring-data-jpa;3.5.7 +org.springframework.data:spring-data-keyvalue;3.5.7 +org.springframework.data:spring-data-ldap;3.5.7 +org.springframework.data:spring-data-mongodb;4.5.7 +org.springframework.data:spring-data-neo4j;7.5.7 +org.springframework.data:spring-data-r2dbc;3.5.7 +org.springframework.data:spring-data-redis;3.5.7 +org.springframework.data:spring-data-relational;3.5.7 +org.springframework.data:spring-data-rest-core;4.5.7 +org.springframework.data:spring-data-rest-hal-explorer;4.5.7 +org.springframework.data:spring-data-rest-webmvc;4.5.7 +org.springframework.graphql:spring-graphql;1.4.4 +org.springframework.graphql:spring-graphql-test;1.4.4 org.springframework.hateoas:spring-hateoas;2.5.1 -org.springframework.integration:spring-integration-amqp;6.5.1 -org.springframework.integration:spring-integration-bom;6.5.1 -org.springframework.integration:spring-integration-camel;6.5.1 -org.springframework.integration:spring-integration-cassandra;6.5.1 -org.springframework.integration:spring-integration-core;6.5.1 -org.springframework.integration:spring-integration-debezium;6.5.1 -org.springframework.integration:spring-integration-event;6.5.1 -org.springframework.integration:spring-integration-feed;6.5.1 -org.springframework.integration:spring-integration-file;6.5.1 -org.springframework.integration:spring-integration-ftp;6.5.1 -org.springframework.integration:spring-integration-graphql;6.5.1 -org.springframework.integration:spring-integration-groovy;6.5.1 -org.springframework.integration:spring-integration-hazelcast;6.5.1 -org.springframework.integration:spring-integration-http;6.5.1 -org.springframework.integration:spring-integration-ip;6.5.1 -org.springframework.integration:spring-integration-jdbc;6.5.1 -org.springframework.integration:spring-integration-jms;6.5.1 -org.springframework.integration:spring-integration-jmx;6.5.1 -org.springframework.integration:spring-integration-jpa;6.5.1 -org.springframework.integration:spring-integration-kafka;6.5.1 -org.springframework.integration:spring-integration-mail;6.5.1 -org.springframework.integration:spring-integration-mongodb;6.5.1 -org.springframework.integration:spring-integration-mqtt;6.5.1 -org.springframework.integration:spring-integration-r2dbc;6.5.1 -org.springframework.integration:spring-integration-redis;6.5.1 -org.springframework.integration:spring-integration-rsocket;6.5.1 -org.springframework.integration:spring-integration-scripting;6.5.1 -org.springframework.integration:spring-integration-sftp;6.5.1 -org.springframework.integration:spring-integration-smb;6.5.1 -org.springframework.integration:spring-integration-stomp;6.5.1 -org.springframework.integration:spring-integration-stream;6.5.1 -org.springframework.integration:spring-integration-syslog;6.5.1 -org.springframework.integration:spring-integration-test;6.5.1 -org.springframework.integration:spring-integration-test-support;6.5.1 -org.springframework.integration:spring-integration-webflux;6.5.1 -org.springframework.integration:spring-integration-websocket;6.5.1 -org.springframework.integration:spring-integration-ws;6.5.1 -org.springframework.integration:spring-integration-xml;6.5.1 -org.springframework.integration:spring-integration-xmpp;6.5.1 -org.springframework.integration:spring-integration-zeromq;6.5.1 -org.springframework.integration:spring-integration-zip;6.5.1 -org.springframework.integration:spring-integration-zookeeper;6.5.1 -org.springframework.kafka:spring-kafka;3.3.9 -org.springframework.kafka:spring-kafka-test;3.3.9 -org.springframework.ldap:spring-ldap-core;3.3.3 -org.springframework.ldap:spring-ldap-ldif-core;3.3.3 -org.springframework.ldap:spring-ldap-odm;3.3.3 -org.springframework.ldap:spring-ldap-test;3.3.3 -org.springframework.pulsar:spring-pulsar;1.2.9 -org.springframework.pulsar:spring-pulsar-bom;1.2.9 -org.springframework.pulsar:spring-pulsar-cache-provider;1.2.9 -org.springframework.pulsar:spring-pulsar-cache-provider-caffeine;1.2.9 -org.springframework.pulsar:spring-pulsar-reactive;1.2.9 -org.springframework.pulsar:spring-pulsar-test;1.2.9 +org.springframework.integration:spring-integration-amqp;6.5.5 +org.springframework.integration:spring-integration-bom;6.5.5 +org.springframework.integration:spring-integration-camel;6.5.5 +org.springframework.integration:spring-integration-cassandra;6.5.5 +org.springframework.integration:spring-integration-core;6.5.5 +org.springframework.integration:spring-integration-debezium;6.5.5 +org.springframework.integration:spring-integration-event;6.5.5 +org.springframework.integration:spring-integration-feed;6.5.5 +org.springframework.integration:spring-integration-file;6.5.5 +org.springframework.integration:spring-integration-ftp;6.5.5 +org.springframework.integration:spring-integration-graphql;6.5.5 +org.springframework.integration:spring-integration-groovy;6.5.5 +org.springframework.integration:spring-integration-hazelcast;6.5.5 +org.springframework.integration:spring-integration-http;6.5.5 +org.springframework.integration:spring-integration-ip;6.5.5 +org.springframework.integration:spring-integration-jdbc;6.5.5 +org.springframework.integration:spring-integration-jms;6.5.5 +org.springframework.integration:spring-integration-jmx;6.5.5 +org.springframework.integration:spring-integration-jpa;6.5.5 +org.springframework.integration:spring-integration-kafka;6.5.5 +org.springframework.integration:spring-integration-mail;6.5.5 +org.springframework.integration:spring-integration-mongodb;6.5.5 +org.springframework.integration:spring-integration-mqtt;6.5.5 +org.springframework.integration:spring-integration-r2dbc;6.5.5 +org.springframework.integration:spring-integration-redis;6.5.5 +org.springframework.integration:spring-integration-rsocket;6.5.5 +org.springframework.integration:spring-integration-scripting;6.5.5 +org.springframework.integration:spring-integration-sftp;6.5.5 +org.springframework.integration:spring-integration-smb;6.5.5 +org.springframework.integration:spring-integration-stomp;6.5.5 +org.springframework.integration:spring-integration-stream;6.5.5 +org.springframework.integration:spring-integration-syslog;6.5.5 +org.springframework.integration:spring-integration-test;6.5.5 +org.springframework.integration:spring-integration-test-support;6.5.5 +org.springframework.integration:spring-integration-webflux;6.5.5 +org.springframework.integration:spring-integration-websocket;6.5.5 +org.springframework.integration:spring-integration-ws;6.5.5 +org.springframework.integration:spring-integration-xml;6.5.5 +org.springframework.integration:spring-integration-xmpp;6.5.5 +org.springframework.integration:spring-integration-zeromq;6.5.5 +org.springframework.integration:spring-integration-zip;6.5.5 +org.springframework.integration:spring-integration-zookeeper;6.5.5 +org.springframework.kafka:spring-kafka;3.3.11 +org.springframework.kafka:spring-kafka-test;3.3.11 +org.springframework.ldap:spring-ldap-core;3.3.5 +org.springframework.ldap:spring-ldap-ldif-core;3.3.5 +org.springframework.ldap:spring-ldap-odm;3.3.5 +org.springframework.ldap:spring-ldap-test;3.3.5 +org.springframework.pulsar:spring-pulsar;1.2.13 +org.springframework.pulsar:spring-pulsar-bom;1.2.13 +org.springframework.pulsar:spring-pulsar-cache-provider;1.2.13 +org.springframework.pulsar:spring-pulsar-cache-provider-caffeine;1.2.13 +org.springframework.pulsar:spring-pulsar-reactive;1.2.13 +org.springframework.pulsar:spring-pulsar-test;1.2.13 org.springframework.restdocs:spring-restdocs-asciidoctor;3.0.5 org.springframework.restdocs:spring-restdocs-bom;3.0.5 org.springframework.restdocs:spring-restdocs-core;3.0.5 @@ -1746,127 +1746,127 @@ org.springframework.restdocs:spring-restdocs-mockmvc;3.0.5 org.springframework.restdocs:spring-restdocs-restassured;3.0.5 org.springframework.restdocs:spring-restdocs-webtestclient;3.0.5 org.springframework.retry:spring-retry;2.0.12 -org.springframework.security:spring-security-acl;6.5.3 -org.springframework.security:spring-security-aspects;6.5.3 -org.springframework.security:spring-security-bom;6.5.3 -org.springframework.security:spring-security-cas;6.5.3 -org.springframework.security:spring-security-config;6.5.3 -org.springframework.security:spring-security-core;6.5.3 -org.springframework.security:spring-security-crypto;6.5.3 -org.springframework.security:spring-security-data;6.5.3 -org.springframework.security:spring-security-ldap;6.5.3 -org.springframework.security:spring-security-messaging;6.5.3 -org.springframework.security:spring-security-oauth2-authorization-server;1.5.2 -org.springframework.security:spring-security-oauth2-client;6.5.3 -org.springframework.security:spring-security-oauth2-core;6.5.3 -org.springframework.security:spring-security-oauth2-jose;6.5.3 -org.springframework.security:spring-security-oauth2-resource-server;6.5.3 -org.springframework.security:spring-security-rsocket;6.5.3 -org.springframework.security:spring-security-saml2-service-provider;6.5.3 -org.springframework.security:spring-security-taglibs;6.5.3 -org.springframework.security:spring-security-test;6.5.3 -org.springframework.security:spring-security-web;6.5.3 -org.springframework.session:spring-session-bom;3.5.2 -org.springframework.session:spring-session-core;3.5.2 -org.springframework.session:spring-session-data-mongodb;3.5.2 -org.springframework.session:spring-session-data-redis;3.5.2 -org.springframework.session:spring-session-hazelcast;3.5.2 -org.springframework.session:spring-session-jdbc;3.5.2 +org.springframework.security:spring-security-acl;6.5.7 +org.springframework.security:spring-security-aspects;6.5.7 +org.springframework.security:spring-security-bom;6.5.7 +org.springframework.security:spring-security-cas;6.5.7 +org.springframework.security:spring-security-config;6.5.7 +org.springframework.security:spring-security-core;6.5.7 +org.springframework.security:spring-security-crypto;6.5.7 +org.springframework.security:spring-security-data;6.5.7 +org.springframework.security:spring-security-ldap;6.5.7 +org.springframework.security:spring-security-messaging;6.5.7 +org.springframework.security:spring-security-oauth2-authorization-server;1.5.5 +org.springframework.security:spring-security-oauth2-client;6.5.7 +org.springframework.security:spring-security-oauth2-core;6.5.7 +org.springframework.security:spring-security-oauth2-jose;6.5.7 +org.springframework.security:spring-security-oauth2-resource-server;6.5.7 +org.springframework.security:spring-security-rsocket;6.5.7 +org.springframework.security:spring-security-saml2-service-provider;6.5.7 +org.springframework.security:spring-security-taglibs;6.5.7 +org.springframework.security:spring-security-test;6.5.7 +org.springframework.security:spring-security-web;6.5.7 +org.springframework.session:spring-session-bom;3.5.4 +org.springframework.session:spring-session-core;3.5.4 +org.springframework.session:spring-session-data-mongodb;3.5.4 +org.springframework.session:spring-session-data-redis;3.5.4 +org.springframework.session:spring-session-hazelcast;3.5.4 +org.springframework.session:spring-session-jdbc;3.5.4 org.springframework.vault:spring-vault-core;3.2.0 -org.springframework.ws:spring-ws-bom;4.1.1 -org.springframework.ws:spring-ws-core;4.1.1 -org.springframework.ws:spring-ws-security;4.1.1 -org.springframework.ws:spring-ws-support;4.1.1 -org.springframework.ws:spring-ws-test;4.1.1 -org.springframework.ws:spring-xml;4.1.1 -org.springframework:spring-aop;6.2.10 -org.springframework:spring-aspects;6.2.10 -org.springframework:spring-beans;6.2.10 -org.springframework:spring-context;6.2.10 -org.springframework:spring-context-indexer;6.2.10 -org.springframework:spring-context-support;6.2.10 -org.springframework:spring-core;6.2.10 -org.springframework:spring-core-test;6.2.10 -org.springframework:spring-expression;6.2.10 -org.springframework:spring-framework-bom;6.2.10 -org.springframework:spring-instrument;6.2.10 -org.springframework:spring-jcl;6.2.10 -org.springframework:spring-jdbc;6.2.10 -org.springframework:spring-jms;6.2.10 -org.springframework:spring-messaging;6.2.10 -org.springframework:spring-orm;6.2.10 -org.springframework:spring-oxm;6.2.10 -org.springframework:spring-r2dbc;6.2.10 -org.springframework:spring-test;6.2.10 -org.springframework:spring-tx;6.2.10 -org.springframework:spring-web;6.2.10 -org.springframework:spring-webflux;6.2.10 -org.springframework:spring-webmvc;6.2.10 -org.springframework:spring-websocket;6.2.10 -org.testcontainers:activemq;1.21.3 -org.testcontainers:azure;1.21.3 -org.testcontainers:cassandra;1.21.3 -org.testcontainers:chromadb;1.21.3 -org.testcontainers:clickhouse;1.21.3 -org.testcontainers:cockroachdb;1.21.3 -org.testcontainers:consul;1.21.3 -org.testcontainers:couchbase;1.21.3 -org.testcontainers:cratedb;1.21.3 -org.testcontainers:database-commons;1.21.3 -org.testcontainers:databend;1.21.3 -org.testcontainers:db2;1.21.3 -org.testcontainers:dynalite;1.21.3 -org.testcontainers:elasticsearch;1.21.3 -org.testcontainers:gcloud;1.21.3 -org.testcontainers:grafana;1.21.3 -org.testcontainers:hivemq;1.21.3 -org.testcontainers:influxdb;1.21.3 -org.testcontainers:jdbc;1.21.3 -org.testcontainers:junit-jupiter;1.21.3 -org.testcontainers:k3s;1.21.3 -org.testcontainers:k6;1.21.3 -org.testcontainers:kafka;1.21.3 -org.testcontainers:ldap;1.21.3 -org.testcontainers:localstack;1.21.3 -org.testcontainers:mariadb;1.21.3 -org.testcontainers:milvus;1.21.3 -org.testcontainers:minio;1.21.3 -org.testcontainers:mockserver;1.21.3 -org.testcontainers:mongodb;1.21.3 -org.testcontainers:mssqlserver;1.21.3 -org.testcontainers:mysql;1.21.3 -org.testcontainers:neo4j;1.21.3 -org.testcontainers:nginx;1.21.3 -org.testcontainers:oceanbase;1.21.3 -org.testcontainers:ollama;1.21.3 -org.testcontainers:openfga;1.21.3 -org.testcontainers:oracle-free;1.21.3 -org.testcontainers:oracle-xe;1.21.3 -org.testcontainers:orientdb;1.21.3 -org.testcontainers:pinecone;1.21.3 -org.testcontainers:postgresql;1.21.3 -org.testcontainers:presto;1.21.3 -org.testcontainers:pulsar;1.21.3 -org.testcontainers:qdrant;1.21.3 -org.testcontainers:questdb;1.21.3 -org.testcontainers:r2dbc;1.21.3 -org.testcontainers:rabbitmq;1.21.3 -org.testcontainers:redpanda;1.21.3 -org.testcontainers:scylladb;1.21.3 -org.testcontainers:selenium;1.21.3 -org.testcontainers:solace;1.21.3 -org.testcontainers:solr;1.21.3 -org.testcontainers:spock;1.21.3 -org.testcontainers:testcontainers;1.21.3 -org.testcontainers:testcontainers-bom;1.21.3 -org.testcontainers:tidb;1.21.3 -org.testcontainers:timeplus;1.21.3 -org.testcontainers:toxiproxy;1.21.3 -org.testcontainers:trino;1.21.3 -org.testcontainers:typesense;1.21.3 -org.testcontainers:vault;1.21.3 -org.testcontainers:weaviate;1.21.3 -org.testcontainers:yugabytedb;1.21.3 +org.springframework.ws:spring-ws-bom;4.1.2 +org.springframework.ws:spring-ws-core;4.1.2 +org.springframework.ws:spring-ws-security;4.1.2 +org.springframework.ws:spring-ws-support;4.1.2 +org.springframework.ws:spring-ws-test;4.1.2 +org.springframework.ws:spring-xml;4.1.2 +org.springframework:spring-aop;6.2.15 +org.springframework:spring-aspects;6.2.15 +org.springframework:spring-beans;6.2.15 +org.springframework:spring-context;6.2.15 +org.springframework:spring-context-indexer;6.2.15 +org.springframework:spring-context-support;6.2.15 +org.springframework:spring-core;6.2.15 +org.springframework:spring-core-test;6.2.15 +org.springframework:spring-expression;6.2.15 +org.springframework:spring-framework-bom;6.2.15 +org.springframework:spring-instrument;6.2.15 +org.springframework:spring-jcl;6.2.15 +org.springframework:spring-jdbc;6.2.15 +org.springframework:spring-jms;6.2.15 +org.springframework:spring-messaging;6.2.15 +org.springframework:spring-orm;6.2.15 +org.springframework:spring-oxm;6.2.15 +org.springframework:spring-r2dbc;6.2.15 +org.springframework:spring-test;6.2.15 +org.springframework:spring-tx;6.2.15 +org.springframework:spring-web;6.2.15 +org.springframework:spring-webflux;6.2.15 +org.springframework:spring-webmvc;6.2.15 +org.springframework:spring-websocket;6.2.15 +org.testcontainers:activemq;1.21.4 +org.testcontainers:azure;1.21.4 +org.testcontainers:cassandra;1.21.4 +org.testcontainers:chromadb;1.21.4 +org.testcontainers:clickhouse;1.21.4 +org.testcontainers:cockroachdb;1.21.4 +org.testcontainers:consul;1.21.4 +org.testcontainers:couchbase;1.21.4 +org.testcontainers:cratedb;1.21.4 +org.testcontainers:database-commons;1.21.4 +org.testcontainers:databend;1.21.4 +org.testcontainers:db2;1.21.4 +org.testcontainers:dynalite;1.21.4 +org.testcontainers:elasticsearch;1.21.4 +org.testcontainers:gcloud;1.21.4 +org.testcontainers:grafana;1.21.4 +org.testcontainers:hivemq;1.21.4 +org.testcontainers:influxdb;1.21.4 +org.testcontainers:jdbc;1.21.4 +org.testcontainers:junit-jupiter;1.21.4 +org.testcontainers:k3s;1.21.4 +org.testcontainers:k6;1.21.4 +org.testcontainers:kafka;1.21.4 +org.testcontainers:ldap;1.21.4 +org.testcontainers:localstack;1.21.4 +org.testcontainers:mariadb;1.21.4 +org.testcontainers:milvus;1.21.4 +org.testcontainers:minio;1.21.4 +org.testcontainers:mockserver;1.21.4 +org.testcontainers:mongodb;1.21.4 +org.testcontainers:mssqlserver;1.21.4 +org.testcontainers:mysql;1.21.4 +org.testcontainers:neo4j;1.21.4 +org.testcontainers:nginx;1.21.4 +org.testcontainers:oceanbase;1.21.4 +org.testcontainers:ollama;1.21.4 +org.testcontainers:openfga;1.21.4 +org.testcontainers:oracle-free;1.21.4 +org.testcontainers:oracle-xe;1.21.4 +org.testcontainers:orientdb;1.21.4 +org.testcontainers:pinecone;1.21.4 +org.testcontainers:postgresql;1.21.4 +org.testcontainers:presto;1.21.4 +org.testcontainers:pulsar;1.21.4 +org.testcontainers:qdrant;1.21.4 +org.testcontainers:questdb;1.21.4 +org.testcontainers:r2dbc;1.21.4 +org.testcontainers:rabbitmq;1.21.4 +org.testcontainers:redpanda;1.21.4 +org.testcontainers:scylladb;1.21.4 +org.testcontainers:selenium;1.21.4 +org.testcontainers:solace;1.21.4 +org.testcontainers:solr;1.21.4 +org.testcontainers:spock;1.21.4 +org.testcontainers:testcontainers;1.21.4 +org.testcontainers:testcontainers-bom;1.21.4 +org.testcontainers:tidb;1.21.4 +org.testcontainers:timeplus;1.21.4 +org.testcontainers:toxiproxy;1.21.4 +org.testcontainers:trino;1.21.4 +org.testcontainers:typesense;1.21.4 +org.testcontainers:vault;1.21.4 +org.testcontainers:weaviate;1.21.4 +org.testcontainers:yugabytedb;1.21.4 org.thymeleaf.extras:thymeleaf-extras-springsecurity6;3.1.3.RELEASE org.thymeleaf:thymeleaf;3.1.3.RELEASE org.thymeleaf:thymeleaf-spring6;3.1.3.RELEASE @@ -1874,16 +1874,16 @@ org.tmatesoft.svnkit:svnkit;1.10.11 org.vibur:vibur-dbcp;26.0 org.vibur:vibur-object-pool;26.0 org.webjars:webjars-locator-core;0.59 -org.webjars:webjars-locator-lite;1.1.0 +org.webjars:webjars-locator-lite;1.1.2 org.wiremock:wiremock-standalone;3.9.2 org.xerial:sqlite-jdbc;3.49.1.0 -org.xmlunit:xmlunit-assertj;2.10.3 -org.xmlunit:xmlunit-assertj3;2.10.3 -org.xmlunit:xmlunit-core;2.10.3 -org.xmlunit:xmlunit-jakarta-jaxb-impl;2.10.3 -org.xmlunit:xmlunit-legacy;2.10.3 -org.xmlunit:xmlunit-matchers;2.10.3 -org.xmlunit:xmlunit-placeholders;2.10.3 +org.xmlunit:xmlunit-assertj;2.10.4 +org.xmlunit:xmlunit-assertj3;2.10.4 +org.xmlunit:xmlunit-core;2.10.4 +org.xmlunit:xmlunit-jakarta-jaxb-impl;2.10.4 +org.xmlunit:xmlunit-legacy;2.10.4 +org.xmlunit:xmlunit-matchers;2.10.4 +org.xmlunit:xmlunit-placeholders;2.10.4 org.yaml:snakeyaml;2.4 redis.clients:jedis;6.0.0 wsdl4j:wsdl4j;1.6.3 diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/pom.xml b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/pom.xml index 2338af63e250..875f310a4dfd 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/pom.xml +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/pom.xml @@ -41,13 +41,13 @@ org.springframework.boot spring-boot-actuator-autoconfigure - 3.5.5 + 3.5.9 compile com.fasterxml.jackson.core jackson-databind - 2.19.2 + 2.19.4 com.azure.spring @@ -128,7 +128,7 @@ org.springframework.boot spring-boot-starter-test - 3.5.5 + 3.5.9 test @@ -144,13 +144,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -160,7 +160,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -199,9 +199,9 @@ - com.fasterxml.jackson.core:jackson-databind:[2.19.2] - org.springframework.boot:spring-boot-actuator:[3.5.5] - org.springframework.boot:spring-boot-actuator-autoconfigure:[3.5.5] + com.fasterxml.jackson.core:jackson-databind:[2.19.4] + org.springframework.boot:spring-boot-actuator:[3.5.9] + org.springframework.boot:spring-boot-actuator-autoconfigure:[3.5.9] diff --git a/sdk/spring/spring-cloud-azure-actuator/pom.xml b/sdk/spring/spring-cloud-azure-actuator/pom.xml index 666ff849a58b..8915873326ac 100644 --- a/sdk/spring/spring-cloud-azure-actuator/pom.xml +++ b/sdk/spring/spring-cloud-azure-actuator/pom.xml @@ -45,7 +45,7 @@ org.springframework.boot spring-boot-actuator - 3.5.5 + 3.5.9 compile @@ -116,7 +116,7 @@ org.springframework.boot spring-boot-starter-test - 3.5.5 + 3.5.9 test @@ -132,13 +132,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -148,7 +148,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -184,7 +184,7 @@ - org.springframework.boot:spring-boot-actuator:[3.5.5] + org.springframework.boot:spring-boot-actuator:[3.5.9] diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/pom.xml b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/pom.xml index ced190f354a2..1d0b2c2a674b 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/pom.xml +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/pom.xml @@ -26,24 +26,24 @@ org.springframework.boot spring-boot-starter-web - 3.5.5 + 3.5.9 org.springframework.boot spring-boot-starter-actuator - 3.5.5 + 3.5.9 true org.springframework.cloud spring-cloud-bus - 4.3.0 + 4.3.1 true org.springframework.boot spring-boot-starter-test - 3.5.5 + 3.5.9 test @@ -59,13 +59,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -74,7 +74,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 -Xlint:deprecation @@ -118,9 +118,9 @@ - org.springframework.boot:spring-boot-starter-actuator:[3.5.5] - org.springframework.boot:spring-boot-starter-web:[3.5.5] - org.springframework.cloud:spring-cloud-bus:[4.3.0] + org.springframework.boot:spring-boot-starter-actuator:[3.5.9] + org.springframework.boot:spring-boot-starter-web:[3.5.9] + org.springframework.cloud:spring-cloud-bus:[4.3.1] diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/pom.xml b/sdk/spring/spring-cloud-azure-appconfiguration-config/pom.xml index 2c9630490c3d..c18070bbc3d3 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/pom.xml +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/pom.xml @@ -21,23 +21,23 @@ org.springframework.boot spring-boot-autoconfigure - 3.5.5 + 3.5.9 org.springframework.boot spring-boot-configuration-processor - 3.5.5 + 3.5.9 true org.springframework.cloud spring-cloud-context - 4.3.0 + 4.3.1 org.springframework.boot spring-boot-actuator - 3.5.5 + 3.5.9 compile @@ -80,7 +80,7 @@ org.springframework.boot spring-boot-starter-test - 3.5.5 + 3.5.9 test @@ -96,13 +96,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test + 3.14.1 -Xlint:deprecation @@ -177,13 +177,13 @@ - com.fasterxml.jackson.core:jackson-annotations:[2.19.2] - com.fasterxml.jackson.core:jackson-databind:[2.19.2] - org.springframework.boot:spring-boot-actuator:[3.5.5] - org.springframework.boot:spring-boot-autoconfigure:[3.5.5] - org.springframework.cloud:spring-cloud-context:[4.3.0] + com.fasterxml.jackson.core:jackson-annotations:[2.19.4] + com.fasterxml.jackson.core:jackson-databind:[2.19.4] + org.springframework.boot:spring-boot-actuator:[3.5.9] + org.springframework.boot:spring-boot-autoconfigure:[3.5.9] + org.springframework.cloud:spring-cloud-context:[4.3.1] jakarta.annotation:jakarta.annotation-api:[3.0.0] - org.springframework.boot:spring-boot-configuration-processor:[3.5.5] + org.springframework.boot:spring-boot-configuration-processor:[3.5.9] diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/pom.xml b/sdk/spring/spring-cloud-azure-autoconfigure/pom.xml index e7f5403d8805..c071141b5d94 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/pom.xml +++ b/sdk/spring/spring-cloud-azure-autoconfigure/pom.xml @@ -86,13 +86,13 @@ org.springframework.kafka spring-kafka - 3.3.9 + 3.3.11 true org.springframework.cloud spring-cloud-starter-stream-kafka - 4.3.0 + 4.3.1 true @@ -106,13 +106,13 @@ org.springframework.data spring-data-redis - 3.5.3 + 3.5.7 true org.springframework spring-tx - 6.2.10 + 6.2.15 true @@ -128,13 +128,13 @@ org.springframework spring-jms - 6.2.10 + 6.2.15 true org.messaginghub pooled-jms - 3.1.7 + 3.1.8 true @@ -300,25 +300,25 @@ org.springframework.boot spring-boot-autoconfigure - 3.5.5 + 3.5.9 org.springframework spring-context-support - 6.2.10 + 6.2.15 true org.springframework.boot spring-boot-actuator-autoconfigure - 3.5.5 + 3.5.9 true org.springframework.boot spring-boot-configuration-processor - 3.5.5 + 3.5.9 true @@ -326,25 +326,25 @@ org.springframework.security spring-security-oauth2-client - 6.5.3 + 6.5.7 true org.springframework.security spring-security-oauth2-resource-server - 6.5.3 + 6.5.7 true org.springframework.security spring-security-oauth2-jose - 6.5.3 + 6.5.7 true org.springframework.security spring-security-config - 6.5.3 + 6.5.7 true @@ -387,37 +387,37 @@ com.fasterxml.jackson.core jackson-databind - 2.19.2 + 2.19.4 true com.fasterxml.jackson.core jackson-core - 2.19.2 + 2.19.4 true com.fasterxml.jackson.core jackson-annotations - 2.19.2 + 2.19.4 true com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.19.2 + 2.19.4 true com.fasterxml.jackson.datatype jackson-datatype-jsr310 - 2.19.2 + 2.19.4 true com.fasterxml.jackson.module jackson-module-afterburner - 2.19.2 + 2.19.4 true @@ -425,19 +425,19 @@ org.springframework.boot spring-boot-starter-test - 3.5.5 + 3.5.9 test org.springframework spring-core-test - 6.2.10 + 6.2.15 test org.springframework.boot spring-boot-configuration-metadata - 3.5.5 + 3.5.9 test @@ -453,34 +453,34 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test com.mysql mysql-connector-j - 9.4.0 + 9.5.0 test org.postgresql postgresql - 42.7.7 + 42.7.8 test org.springframework spring-jdbc - 6.2.10 + 6.2.15 test @@ -491,7 +491,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -543,33 +543,33 @@ com.azure:azure-servicebus-jms:[2.1.0] - com.mysql:mysql-connector-j:[9.4.0] - com.fasterxml.jackson.core:jackson-annotations:[2.19.2] - com.fasterxml.jackson.core:jackson-core:[2.19.2] - com.fasterxml.jackson.core:jackson-databind:[2.19.2] - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.19.2] - com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.19.2] - com.fasterxml.jackson.module:jackson-module-afterburner:[2.19.2] + com.mysql:mysql-connector-j:[9.5.0] + com.fasterxml.jackson.core:jackson-annotations:[2.19.4] + com.fasterxml.jackson.core:jackson-core:[2.19.4] + com.fasterxml.jackson.core:jackson-databind:[2.19.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.19.4] + com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.19.4] + com.fasterxml.jackson.module:jackson-module-afterburner:[2.19.4] io.lettuce:lettuce-core:[6.6.0.RELEASE] jakarta.servlet:jakarta.servlet-api:[6.0.0] jakarta.validation:jakarta.validation-api:[3.0.2] org.hibernate.validator:hibernate-validator:[8.0.3.Final] - org.messaginghub:pooled-jms:[3.1.7] - org.postgresql:postgresql:[42.7.7] - org.springframework.boot:spring-boot-actuator-autoconfigure:[3.5.5] - org.springframework.boot:spring-boot-autoconfigure:[3.5.5] - org.springframework.boot:spring-boot-configuration-processor:[3.5.5] - org.springframework.cloud:spring-cloud-starter-stream-kafka:[4.3.0] - org.springframework.data:spring-data-redis:[3.5.3] - org.springframework.kafka:spring-kafka:[3.3.9] - org.springframework.security:spring-security-config:[6.5.3] - org.springframework.security:spring-security-oauth2-client:[6.5.3] - org.springframework.security:spring-security-oauth2-jose:[6.5.3] - org.springframework.security:spring-security-oauth2-resource-server:[6.5.3] - org.springframework:spring-context-support:[6.2.10] - org.springframework:spring-jdbc:[6.2.10] - org.springframework:spring-jms:[6.2.10] - org.springframework:spring-tx:[6.2.10] + org.messaginghub:pooled-jms:[3.1.8] + org.postgresql:postgresql:[42.7.8] + org.springframework.boot:spring-boot-actuator-autoconfigure:[3.5.9] + org.springframework.boot:spring-boot-autoconfigure:[3.5.9] + org.springframework.boot:spring-boot-configuration-processor:[3.5.9] + org.springframework.cloud:spring-cloud-starter-stream-kafka:[4.3.1] + org.springframework.data:spring-data-redis:[3.5.7] + org.springframework.kafka:spring-kafka:[3.3.11] + org.springframework.security:spring-security-config:[6.5.7] + org.springframework.security:spring-security-oauth2-client:[6.5.7] + org.springframework.security:spring-security-oauth2-jose:[6.5.7] + org.springframework.security:spring-security-oauth2-resource-server:[6.5.7] + org.springframework:spring-context-support:[6.2.15] + org.springframework:spring-jdbc:[6.2.15] + org.springframework:spring-jms:[6.2.15] + org.springframework:spring-tx:[6.2.15] diff --git a/sdk/spring/spring-cloud-azure-core/pom.xml b/sdk/spring/spring-cloud-azure-core/pom.xml index 12b4051c06ac..c4b4f064aa17 100644 --- a/sdk/spring/spring-cloud-azure-core/pom.xml +++ b/sdk/spring/spring-cloud-azure-core/pom.xml @@ -40,7 +40,7 @@ org.springframework spring-context - 6.2.10 + 6.2.15 com.azure @@ -106,13 +106,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -124,7 +124,7 @@ org.springframework spring-test - 6.2.10 + 6.2.15 test @@ -145,7 +145,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -181,7 +181,7 @@ - org.springframework:spring-context:[6.2.10] + org.springframework:spring-context:[6.2.15] diff --git a/sdk/spring/spring-cloud-azure-docker-compose/pom.xml b/sdk/spring/spring-cloud-azure-docker-compose/pom.xml index c6935639df5d..84950b1dda4a 100644 --- a/sdk/spring/spring-cloud-azure-docker-compose/pom.xml +++ b/sdk/spring/spring-cloud-azure-docker-compose/pom.xml @@ -81,7 +81,7 @@ org.springframework.boot spring-boot-docker-compose - 3.5.5 + 3.5.9 + 3.5.9 test org.springframework spring-test - 6.2.10 + 6.2.15 test @@ -114,7 +114,7 @@ org.assertj assertj-core - 3.27.4 + 3.27.6 test @@ -124,7 +124,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -160,7 +160,7 @@ - org.springframework.boot:spring-boot-docker-compose:[3.5.5] + org.springframework.boot:spring-boot-docker-compose:[3.5.9] diff --git a/sdk/spring/spring-cloud-azure-feature-management-web/pom.xml b/sdk/spring/spring-cloud-azure-feature-management-web/pom.xml index 08ca28efc359..f38dc9fc038b 100644 --- a/sdk/spring/spring-cloud-azure-feature-management-web/pom.xml +++ b/sdk/spring/spring-cloud-azure-feature-management-web/pom.xml @@ -29,12 +29,12 @@ org.springframework spring-web - 6.2.10 + 6.2.15 org.springframework spring-webmvc - 6.2.10 + 6.2.15 com.azure.spring @@ -50,20 +50,20 @@ org.springframework.boot spring-boot-starter-test - 3.5.5 + 3.5.9 test net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -88,7 +88,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -129,8 +129,8 @@ com.azure.spring:spring-cloud-azure-feature-management:[6.2.0-beta.1] jakarta.servlet:jakarta.servlet-api:[6.0.0] - org.springframework:spring-web:[6.2.10] - org.springframework:spring-webmvc:[6.2.10] + org.springframework:spring-web:[6.2.15] + org.springframework:spring-webmvc:[6.2.15] diff --git a/sdk/spring/spring-cloud-azure-feature-management/pom.xml b/sdk/spring/spring-cloud-azure-feature-management/pom.xml index 08ae2b18f090..a2c5a21c601e 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/pom.xml +++ b/sdk/spring/spring-cloud-azure-feature-management/pom.xml @@ -29,12 +29,12 @@ org.springframework spring-context - 6.2.10 + 6.2.15 org.springframework.boot spring-boot-starter - 3.5.5 + 3.5.9 ch.qos.logback @@ -45,28 +45,28 @@ org.springframework.boot spring-boot-configuration-processor - 3.5.5 + 3.5.9 true com.fasterxml.jackson.core jackson-annotations - 2.19.2 + 2.19.4 com.fasterxml.jackson.core jackson-databind - 2.19.2 + 2.19.4 io.projectreactor.netty reactor-netty - 1.2.9 + 1.2.13 org.springframework.boot spring-boot-starter-test - 3.5.5 + 3.5.9 test @@ -81,19 +81,19 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test ch.qos.logback logback-classic - 1.5.18 + 1.5.22 test @@ -118,7 +118,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -166,12 +166,12 @@ - com.fasterxml.jackson.core:jackson-annotations:[2.19.2] - com.fasterxml.jackson.core:jackson-databind:[2.19.2] - io.projectreactor.netty:reactor-netty:[1.2.9] - org.springframework.boot:spring-boot-configuration-processor:[3.5.5] - org.springframework.boot:spring-boot-starter:[3.5.5] - org.springframework:spring-context:[6.2.10] + com.fasterxml.jackson.core:jackson-annotations:[2.19.4] + com.fasterxml.jackson.core:jackson-databind:[2.19.4] + io.projectreactor.netty:reactor-netty:[1.2.13] + org.springframework.boot:spring-boot-configuration-processor:[3.5.9] + org.springframework.boot:spring-boot-starter:[3.5.9] + org.springframework:spring-context:[6.2.15] diff --git a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/pom.xml b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/pom.xml index 1458dfc78f93..d3f7b99ee089 100644 --- a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/pom.xml +++ b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/pom.xml @@ -6,7 +6,7 @@ org.springframework.boot spring-boot-starter-parent - 3.5.5 + 3.5.9 com.azure.spring @@ -30,7 +30,7 @@ org.springframework.boot spring-boot-starter-test - 3.5.5 + 3.5.9 test @@ -39,7 +39,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.3 + 3.5.4 default diff --git a/sdk/spring/spring-cloud-azure-integration-tests/pom.xml b/sdk/spring/spring-cloud-azure-integration-tests/pom.xml index 8dcd3e9f7267..4bec5f21f45f 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/pom.xml +++ b/sdk/spring/spring-cloud-azure-integration-tests/pom.xml @@ -7,7 +7,7 @@ org.springframework.boot spring-boot-starter-parent - 3.5.5 + 3.5.9 @@ -107,7 +107,7 @@ org.springframework.cloud spring-cloud-starter-stream-kafka - 4.3.0 + 4.3.1 org.springframework.boot @@ -142,7 +142,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.3 + 3.5.4 default diff --git a/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/servicebus/jms/ServiceBusJmsConnectionStringIT.java b/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/servicebus/jms/ServiceBusJmsConnectionStringIT.java index bfafe08d71dc..2a97d3844206 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/servicebus/jms/ServiceBusJmsConnectionStringIT.java +++ b/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/servicebus/jms/ServiceBusJmsConnectionStringIT.java @@ -2,11 +2,11 @@ // Licensed under the MIT License. package com.azure.spring.cloud.integration.tests.servicebus.jms; +import com.azure.servicebus.jms.ServiceBusJmsConnectionFactory; import jakarta.jms.ConnectionFactory; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; -import org.messaginghub.pooled.jms.JmsPoolConnectionFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -36,7 +36,7 @@ public ServiceBusJmsConnectionStringIT() { @Test @Timeout(70) void testJmsOperationViaConnStringAndCachingConnection() throws InterruptedException { - Assertions.assertSame(JmsPoolConnectionFactory.class, connectionFactory.getClass()); + Assertions.assertSame(ServiceBusJmsConnectionFactory.class, connectionFactory.getClass()); LOGGER.info("ServiceBusJmsConnectionStringIT begin."); this.exchangeMessage(jmsTemplate, CONNECTION_STRING_POOL_API_QUEUE_NAME); LOGGER.info("ServiceBusJmsConnectionStringIT end."); diff --git a/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-jms-passwordless-caching.yml b/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-jms-passwordless-caching.yml index 8e63cf1e26b8..2b8ca5c54cf1 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-jms-passwordless-caching.yml +++ b/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-jms-passwordless-caching.yml @@ -4,6 +4,9 @@ spring: credential: token-credential-bean-name: integrationTestTokenCredential jms: + cache: + enabled: + true servicebus: pool: enabled: false diff --git a/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-jms-passwordless-pool.yml b/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-jms-passwordless-pool.yml index 4154ed97a9a5..70fbf7b20195 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-jms-passwordless-pool.yml +++ b/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-jms-passwordless-pool.yml @@ -9,3 +9,5 @@ spring: pricing-tier: standard passwordless-enabled: true namespace: ${AZURE_SERVICE_BUS_NAMESPACE} + pool: + enabled: true diff --git a/sdk/spring/spring-cloud-azure-integration-tests/test-resources/cosmos-spring/test-resources.json b/sdk/spring/spring-cloud-azure-integration-tests/test-resources/cosmos-spring/test-resources.json index d96fc0f599fe..ae625011a033 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/test-resources/cosmos-spring/test-resources.json +++ b/sdk/spring/spring-cloud-azure-integration-tests/test-resources/cosmos-spring/test-resources.json @@ -44,7 +44,7 @@ "newAccountName": "[toLower(concat(parameters('baseName'), '2'))]", "resourceId": "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('accountName'))]", "newResourceId": "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('newAccountName'))]", - "location": "westcentralus" + "location": "[resourceGroup().location]" }, "resources": [ { diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/pom.xml b/sdk/spring/spring-cloud-azure-resourcemanager/pom.xml index ce2c3621456a..c6bf1238587e 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/pom.xml +++ b/sdk/spring/spring-cloud-azure-resourcemanager/pom.xml @@ -61,13 +61,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -79,7 +79,7 @@ org.springframework spring-test - 6.2.10 + 6.2.15 test @@ -100,7 +100,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 diff --git a/sdk/spring/spring-cloud-azure-service/pom.xml b/sdk/spring/spring-cloud-azure-service/pom.xml index f2832c9d02b9..f7ea90670ae0 100644 --- a/sdk/spring/spring-cloud-azure-service/pom.xml +++ b/sdk/spring/spring-cloud-azure-service/pom.xml @@ -139,13 +139,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -157,7 +157,7 @@ org.springframework spring-test - 6.2.10 + 6.2.15 test @@ -178,7 +178,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -215,7 +215,7 @@ org.apache.kafka:kafka-clients:[3.9.1] - org.postgresql:postgresql:[42.7.7] + org.postgresql:postgresql:[42.7.8] com.nimbusds:nimbus-jose-jwt:[9.37.3] diff --git a/sdk/spring/spring-cloud-azure-starter-active-directory-b2c/pom.xml b/sdk/spring/spring-cloud-azure-starter-active-directory-b2c/pom.xml index d614306fcbe0..33043714676c 100644 --- a/sdk/spring/spring-cloud-azure-starter-active-directory-b2c/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-active-directory-b2c/pom.xml @@ -95,22 +95,22 @@ org.springframework.security spring-security-config - 6.5.3 + 6.5.7 org.springframework.security spring-security-oauth2-client - 6.5.3 + 6.5.7 org.springframework.security spring-security-oauth2-jose - 6.5.3 + 6.5.7 org.springframework.security spring-security-oauth2-resource-server - 6.5.3 + 6.5.7 diff --git a/sdk/spring/spring-cloud-azure-starter-active-directory/pom.xml b/sdk/spring/spring-cloud-azure-starter-active-directory/pom.xml index 3bfe9ecba1f8..82cf340efc0f 100644 --- a/sdk/spring/spring-cloud-azure-starter-active-directory/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-active-directory/pom.xml @@ -94,12 +94,12 @@ org.springframework.security spring-security-web - 6.5.3 + 6.5.7 org.springframework.security spring-security-config - 6.5.3 + 6.5.7 com.nimbusds diff --git a/sdk/spring/spring-cloud-azure-starter-actuator/pom.xml b/sdk/spring/spring-cloud-azure-starter-actuator/pom.xml index 569b5047ec23..60fc322fda3a 100644 --- a/sdk/spring/spring-cloud-azure-starter-actuator/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-actuator/pom.xml @@ -99,7 +99,7 @@ org.springframework.boot spring-boot-starter-actuator - 3.5.5 + 3.5.9 diff --git a/sdk/spring/spring-cloud-azure-starter-data-redis-lettuce/pom.xml b/sdk/spring/spring-cloud-azure-starter-data-redis-lettuce/pom.xml index 2c1f3fa02a96..62249a8a2d1b 100644 --- a/sdk/spring/spring-cloud-azure-starter-data-redis-lettuce/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-data-redis-lettuce/pom.xml @@ -95,7 +95,7 @@ org.springframework.data spring-data-redis - 3.5.3 + 3.5.7 diff --git a/sdk/spring/spring-cloud-azure-starter-integration-eventhubs/pom.xml b/sdk/spring/spring-cloud-azure-starter-integration-eventhubs/pom.xml index 76e71522419c..0bf486aede46 100644 --- a/sdk/spring/spring-cloud-azure-starter-integration-eventhubs/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-integration-eventhubs/pom.xml @@ -95,7 +95,7 @@ org.springframework.boot spring-boot-starter-integration - 3.5.5 + 3.5.9 com.azure.spring diff --git a/sdk/spring/spring-cloud-azure-starter-integration-servicebus/pom.xml b/sdk/spring/spring-cloud-azure-starter-integration-servicebus/pom.xml index e29676cf2dfe..358f49a63fed 100644 --- a/sdk/spring/spring-cloud-azure-starter-integration-servicebus/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-integration-servicebus/pom.xml @@ -95,7 +95,7 @@ org.springframework.boot spring-boot-starter-integration - 3.5.5 + 3.5.9 com.azure.spring diff --git a/sdk/spring/spring-cloud-azure-starter-integration-storage-queue/pom.xml b/sdk/spring/spring-cloud-azure-starter-integration-storage-queue/pom.xml index e6b12f28487c..47a1dfc58661 100644 --- a/sdk/spring/spring-cloud-azure-starter-integration-storage-queue/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-integration-storage-queue/pom.xml @@ -98,7 +98,7 @@ org.springframework.boot spring-boot-starter-integration - 3.5.5 + 3.5.9 com.azure.spring diff --git a/sdk/spring/spring-cloud-azure-starter-jdbc-mysql/pom.xml b/sdk/spring/spring-cloud-azure-starter-jdbc-mysql/pom.xml index 438cdb5d6e09..fda9453bb7fb 100644 --- a/sdk/spring/spring-cloud-azure-starter-jdbc-mysql/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-jdbc-mysql/pom.xml @@ -101,7 +101,7 @@ com.mysql mysql-connector-j - 9.4.0 + 9.5.0 diff --git a/sdk/spring/spring-cloud-azure-starter-jdbc-postgresql/pom.xml b/sdk/spring/spring-cloud-azure-starter-jdbc-postgresql/pom.xml index 7bd5169465b0..6381368e3808 100644 --- a/sdk/spring/spring-cloud-azure-starter-jdbc-postgresql/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-jdbc-postgresql/pom.xml @@ -101,7 +101,7 @@ org.postgresql postgresql - 42.7.7 + 42.7.8 diff --git a/sdk/spring/spring-cloud-azure-starter-monitor-test/pom.xml b/sdk/spring/spring-cloud-azure-starter-monitor-test/pom.xml index b71e65e821cc..960fffcfa2d2 100644 --- a/sdk/spring/spring-cloud-azure-starter-monitor-test/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-monitor-test/pom.xml @@ -7,7 +7,7 @@ org.springframework.boot spring-boot-starter-parent - 3.5.5 + 3.5.9 @@ -48,17 +48,17 @@ org.springframework.boot spring-boot-starter-web - 3.5.5 + 3.5.9 org.springframework.boot spring-boot-starter-data-jdbc - 3.5.5 + 3.5.9 org.springframework.boot spring-boot-starter-test - 3.5.5 + 3.5.9 test diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/pom.xml b/sdk/spring/spring-cloud-azure-starter-monitor/pom.xml index 86d98055e039..2bb90d3ff800 100644 --- a/sdk/spring/spring-cloud-azure-starter-monitor/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-monitor/pom.xml @@ -87,7 +87,7 @@ org.springframework.boot spring-boot-starter - 3.5.5 + 3.5.9 provided @@ -166,7 +166,7 @@ org.springframework.boot spring-boot-starter-test - 3.5.5 + 3.5.9 test @@ -178,7 +178,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -222,7 +222,7 @@ io.opentelemetry:opentelemetry-sdk-metrics:[1.49.0] io.opentelemetry:opentelemetry-sdk-logs:[1.49.0] io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:[1.49.0] - org.springframework.boot:spring-boot-starter:[3.5.5] + org.springframework.boot:spring-boot-starter:[3.5.9] diff --git a/sdk/spring/spring-cloud-azure-starter-servicebus-jms/pom.xml b/sdk/spring/spring-cloud-azure-starter-servicebus-jms/pom.xml index ee79ced057a8..bbda8d72755a 100644 --- a/sdk/spring/spring-cloud-azure-starter-servicebus-jms/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-servicebus-jms/pom.xml @@ -96,12 +96,12 @@ org.springframework spring-jms - 6.2.10 + 6.2.15 org.messaginghub pooled-jms - 3.1.7 + 3.1.8 com.azure @@ -136,37 +136,37 @@ currently released version and a lower version is resolved. --> io.netty netty-buffer - 4.1.124.Final + 4.1.130.Final io.netty netty-common - 4.1.124.Final + 4.1.130.Final io.netty netty-handler - 4.1.124.Final + 4.1.130.Final io.netty netty-transport - 4.1.124.Final + 4.1.130.Final io.netty netty-transport-native-epoll - 4.1.124.Final + 4.1.130.Final io.netty netty-transport-native-kqueue - 4.1.124.Final + 4.1.130.Final io.netty netty-codec-http - 4.1.124.Final + 4.1.130.Final com.azure diff --git a/sdk/spring/spring-cloud-azure-starter/pom.xml b/sdk/spring/spring-cloud-azure-starter/pom.xml index e8be611f8954..ee7db0cfd118 100644 --- a/sdk/spring/spring-cloud-azure-starter/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter/pom.xml @@ -89,7 +89,7 @@ org.springframework.boot spring-boot-starter - 3.5.5 + 3.5.9 com.azure.spring diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/pom.xml b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/pom.xml index a0d6b2ae3b1c..1ff2e3c9362d 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/pom.xml +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/pom.xml @@ -47,7 +47,7 @@ spring-integration-core - 4.3.0 + 4.3.1 @@ -59,7 +59,7 @@ org.springframework.boot spring-boot-configuration-processor - 3.5.5 + 3.5.9 true @@ -74,13 +74,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -92,7 +92,7 @@ org.springframework spring-test - 6.2.10 + 6.2.15 test @@ -108,13 +108,13 @@ org.springframework.boot spring-boot-test - 3.5.5 + 3.5.9 test org.assertj assertj-core - 3.27.4 + 3.27.6 test @@ -123,7 +123,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -171,8 +171,8 @@ - org.springframework.boot:spring-boot-configuration-processor:[3.5.5] - org.springframework.cloud:spring-cloud-stream:[4.3.0] + org.springframework.boot:spring-boot-configuration-processor:[3.5.9] + org.springframework.cloud:spring-cloud-stream:[4.3.1] diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/pom.xml b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/pom.xml index 9e24e4db4c7a..b66afe400605 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/pom.xml +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/pom.xml @@ -57,7 +57,7 @@ org.springframework.boot spring-boot-starter-actuator - 3.5.5 + 3.5.9 true @@ -70,7 +70,7 @@ org.springframework.cloud spring-cloud-stream-test-binder - 4.3.0 + 4.3.1 test @@ -82,7 +82,7 @@ org.springframework.boot spring-boot-starter-test - 3.5.5 + 3.5.9 test @@ -90,13 +90,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test + 3.14.1 @@ -162,7 +162,7 @@ - org.springframework.boot:spring-boot-starter-actuator:[3.5.5] + org.springframework.boot:spring-boot-starter-actuator:[3.5.9] diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/pom.xml b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/pom.xml index 6b5e4e198fbd..8cdb01091330 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/pom.xml +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/pom.xml @@ -41,7 +41,7 @@ org.springframework.cloud spring-cloud-stream - 4.3.0 + 4.3.1 @@ -57,7 +57,7 @@ org.springframework.boot spring-boot-configuration-processor - 3.5.5 + 3.5.9 true @@ -72,13 +72,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -90,7 +90,7 @@ org.springframework spring-test - 6.2.10 + 6.2.15 test @@ -106,13 +106,13 @@ org.springframework.boot spring-boot-test - 3.5.5 + 3.5.9 test org.assertj assertj-core - 3.27.4 + 3.27.6 test @@ -122,7 +122,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -170,8 +170,8 @@ - org.springframework.boot:spring-boot-configuration-processor:[3.5.5] - org.springframework.cloud:spring-cloud-stream:[4.3.0] + org.springframework.boot:spring-boot-configuration-processor:[3.5.9] + org.springframework.cloud:spring-cloud-stream:[4.3.1] diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/pom.xml b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/pom.xml index 768844ec7b6e..f94a747ffcd1 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/pom.xml +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/pom.xml @@ -56,7 +56,7 @@ org.springframework.boot spring-boot-starter-actuator - 3.5.5 + 3.5.9 true + 4.3.1 test @@ -84,7 +84,7 @@ org.springframework.boot spring-boot-starter-test - 3.5.5 + 3.5.9 test @@ -100,13 +100,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -116,7 +116,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -155,7 +155,7 @@ - org.springframework.boot:spring-boot-starter-actuator:[3.5.5] + org.springframework.boot:spring-boot-starter-actuator:[3.5.9] diff --git a/sdk/spring/spring-cloud-azure-testcontainers/pom.xml b/sdk/spring/spring-cloud-azure-testcontainers/pom.xml index a80d218256a8..7678c689d72f 100644 --- a/sdk/spring/spring-cloud-azure-testcontainers/pom.xml +++ b/sdk/spring/spring-cloud-azure-testcontainers/pom.xml @@ -82,12 +82,12 @@ org.springframework.boot spring-boot-testcontainers - 3.5.5 + 3.5.9 org.testcontainers azure - 1.21.3 + 1.21.4 true + 6.2.15 test @@ -115,13 +115,13 @@ org.assertj assertj-core - 3.27.4 + 3.27.6 test org.testcontainers junit-jupiter - 1.21.3 + 1.21.4 test @@ -131,7 +131,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -167,8 +167,8 @@ - org.springframework.boot:spring-boot-testcontainers:[3.5.5] - org.testcontainers:azure:[1.21.3] + org.springframework.boot:spring-boot-testcontainers:[3.5.9] + org.testcontainers:azure:[1.21.4] diff --git a/sdk/spring/spring-integration-azure-core/pom.xml b/sdk/spring/spring-integration-azure-core/pom.xml index a551ddc6793b..f5d67a296091 100644 --- a/sdk/spring/spring-integration-azure-core/pom.xml +++ b/sdk/spring/spring-integration-azure-core/pom.xml @@ -48,7 +48,7 @@ org.springframework.integration spring-integration-core - 6.5.1 + 6.5.5 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test org.springframework spring-test - 6.2.10 + 6.2.15 test @@ -95,7 +95,7 @@ org.assertj assertj-core - 3.27.4 + 3.27.6 test @@ -105,7 +105,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -141,7 +141,7 @@ - org.springframework.integration:spring-integration-core:[6.5.1] + org.springframework.integration:spring-integration-core:[6.5.5] diff --git a/sdk/spring/spring-integration-azure-eventhubs/pom.xml b/sdk/spring/spring-integration-azure-eventhubs/pom.xml index 599ce0f025db..4ef7591f75cc 100644 --- a/sdk/spring/spring-integration-azure-eventhubs/pom.xml +++ b/sdk/spring/spring-integration-azure-eventhubs/pom.xml @@ -75,25 +75,25 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test org.springframework spring-test - 6.2.10 + 6.2.15 test org.assertj assertj-core - 3.27.4 + 3.27.6 test @@ -109,7 +109,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 diff --git a/sdk/spring/spring-integration-azure-servicebus/pom.xml b/sdk/spring/spring-integration-azure-servicebus/pom.xml index d5632f3ab430..0e77135dc783 100644 --- a/sdk/spring/spring-integration-azure-servicebus/pom.xml +++ b/sdk/spring/spring-integration-azure-servicebus/pom.xml @@ -74,13 +74,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -92,13 +92,13 @@ org.springframework spring-test - 6.2.10 + 6.2.15 test org.assertj assertj-core - 3.27.4 + 3.27.6 test @@ -108,7 +108,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 diff --git a/sdk/spring/spring-integration-azure-storage-queue/pom.xml b/sdk/spring/spring-integration-azure-storage-queue/pom.xml index 680003b60bc9..3e932a2d0734 100644 --- a/sdk/spring/spring-integration-azure-storage-queue/pom.xml +++ b/sdk/spring/spring-integration-azure-storage-queue/pom.xml @@ -71,13 +71,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -93,7 +93,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 diff --git a/sdk/spring/spring-messaging-azure-eventhubs/pom.xml b/sdk/spring/spring-messaging-azure-eventhubs/pom.xml index c7dd8baf7e34..d243f79436a3 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/pom.xml +++ b/sdk/spring/spring-messaging-azure-eventhubs/pom.xml @@ -59,7 +59,7 @@ org.springframework spring-tx - 6.2.10 + 6.2.15 true @@ -71,7 +71,7 @@ org.springframework.data spring-data-commons - 3.5.3 + 3.5.7 org.slf4j @@ -83,7 +83,7 @@ io.micrometer micrometer-core - 1.15.3 + 1.15.7 true @@ -97,7 +97,7 @@ org.springframework spring-test - 6.2.10 + 6.2.15 test @@ -111,13 +111,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -129,7 +129,7 @@ io.projectreactor reactor-test - 3.7.9 + 3.7.14 test @@ -138,7 +138,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -174,10 +174,10 @@ - io.micrometer:micrometer-core:[1.15.3] - org.springframework:spring-tx:[6.2.10] + io.micrometer:micrometer-core:[1.15.7] + org.springframework:spring-tx:[6.2.15] org.springframework.retry:spring-retry:[2.0.12] - org.springframework.data:spring-data-commons:[3.5.3] + org.springframework.data:spring-data-commons:[3.5.7] diff --git a/sdk/spring/spring-messaging-azure-servicebus/pom.xml b/sdk/spring/spring-messaging-azure-servicebus/pom.xml index fcb2dbf0e6cb..4e40e2175938 100644 --- a/sdk/spring/spring-messaging-azure-servicebus/pom.xml +++ b/sdk/spring/spring-messaging-azure-servicebus/pom.xml @@ -52,7 +52,7 @@ org.springframework spring-tx - 6.2.10 + 6.2.15 true @@ -64,7 +64,7 @@ org.springframework.data spring-data-commons - 3.5.3 + 3.5.7 org.slf4j @@ -76,7 +76,7 @@ io.micrometer micrometer-core - 1.15.3 + 1.15.7 true @@ -90,13 +90,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -123,7 +123,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -159,10 +159,10 @@ - io.micrometer:micrometer-core:[1.15.3] - org.springframework:spring-tx:[6.2.10] + io.micrometer:micrometer-core:[1.15.7] + org.springframework:spring-tx:[6.2.15] org.springframework.retry:spring-retry:[2.0.12] - org.springframework.data:spring-data-commons:[3.5.3] + org.springframework.data:spring-data-commons:[3.5.7] diff --git a/sdk/spring/spring-messaging-azure-storage-queue/pom.xml b/sdk/spring/spring-messaging-azure-storage-queue/pom.xml index 22f51251a3a5..3a966d53e97d 100644 --- a/sdk/spring/spring-messaging-azure-storage-queue/pom.xml +++ b/sdk/spring/spring-messaging-azure-storage-queue/pom.xml @@ -60,13 +60,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -78,7 +78,7 @@ org.springframework.boot spring-boot-starter-test - 3.5.5 + 3.5.9 test @@ -100,7 +100,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 diff --git a/sdk/spring/spring-messaging-azure/pom.xml b/sdk/spring/spring-messaging-azure/pom.xml index 06ef9717ad60..1f365341b933 100644 --- a/sdk/spring/spring-messaging-azure/pom.xml +++ b/sdk/spring/spring-messaging-azure/pom.xml @@ -46,12 +46,12 @@ org.springframework spring-messaging - 6.2.10 + 6.2.15 org.springframework spring-tx - 6.2.10 + 6.2.15 true @@ -63,7 +63,7 @@ org.springframework.data spring-data-commons - 3.5.3 + 3.5.7 org.slf4j @@ -75,7 +75,7 @@ io.micrometer micrometer-core - 1.15.3 + 1.15.7 true + 3.5.9 test @@ -107,13 +107,13 @@ net.bytebuddy byte-buddy - 1.17.7 + 1.17.8 test net.bytebuddy byte-buddy-agent - 1.17.7 + 1.17.8 test @@ -123,7 +123,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 @@ -159,10 +159,10 @@ - io.micrometer:micrometer-core:[1.15.3] - org.springframework.data:spring-data-commons:[3.5.3] - org.springframework:spring-messaging:[6.2.10] - org.springframework:spring-tx:[6.2.10] + io.micrometer:micrometer-core:[1.15.7] + org.springframework.data:spring-data-commons:[3.5.7] + org.springframework:spring-messaging:[6.2.15] + org.springframework:spring-tx:[6.2.15] org.springframework.retry:spring-retry:[2.0.12] From 0d08d06a5b1e6e35b6d7fbd9ec3aa9117605353f Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Tue, 30 Dec 2025 13:43:21 +0800 Subject: [PATCH 12/41] Fix: Skip App Configuration validation when feature is disabled (#47588) --- sdk/spring/CHANGELOG.md | 7 ++++ .../AzureAppConfigDataLocationResolver.java | 10 +++++- ...zureAppConfigDataLocationResolverTest.java | 35 +++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/sdk/spring/CHANGELOG.md b/sdk/spring/CHANGELOG.md index 9df3c3f53d7e..c7bd70f320bb 100644 --- a/sdk/spring/CHANGELOG.md +++ b/sdk/spring/CHANGELOG.md @@ -10,6 +10,13 @@ This section includes changes in `spring-cloud-azure-autoconfigure` module. - Fix `ClassNotFoundException: com.nimbusds.oauth2.sdk.util.StringUtils` in Active Directory starter. ([#47600](https://github.com/Azure/azure-sdk-for-java/issues/47600)) +### Spring Cloud Azure Appconfiguration Config +This section includes changes in `spring-cloud-azure-appconfiguration-config` module. + +#### Bugs Fixed + +- Fixed bug where connection string validation occurred even when `spring.cloud.azure.appconfiguration.enabled` is `false`. ([#47587](https://github.com/Azure/azure-sdk-for-java/issues/47587)) + ## 6.1.0 (2025-12-16) - This release is compatible with Spring Boot 3.5.0-3.5.8. (Note: 3.5.x (x>8) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2025.0.0. (Note: 2025.0.x (x>0) should be supported, but they aren't tested with this release.) diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AzureAppConfigDataLocationResolver.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AzureAppConfigDataLocationResolver.java index b4ecd1b477ba..6a0ebe649ad1 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AzureAppConfigDataLocationResolver.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AzureAppConfigDataLocationResolver.java @@ -57,8 +57,16 @@ public boolean isResolvable(ConfigDataLocationResolverContext context, ConfigDat return false; } + Binder binder = context.getBinder(); + + // Check if Azure App Configuration is enabled + Boolean enabled = binder.bind(AppConfigurationProperties.CONFIG_PREFIX + ".enabled", Boolean.class).orElse(true); + if (!enabled) { + return false; + } + // Check if the configuration properties for Azure App Configuration are present - return hasValidStoreConfiguration(context.getBinder()); + return hasValidStoreConfiguration(binder); } /** diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AzureAppConfigDataLocationResolverTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AzureAppConfigDataLocationResolverTest.java index 04cc61b72850..a3f3655b20c7 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AzureAppConfigDataLocationResolverTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AzureAppConfigDataLocationResolverTest.java @@ -47,6 +47,12 @@ class AzureAppConfigDataLocationResolverTest { @Mock BindResult validResult; + @Mock + BindResult enabledTrueResult; + + @Mock + BindResult enabledFalseResult; + private static final String PREFIX = "azureAppConfiguration:"; private static final String INVALID_PREFIX = "someOtherPrefix:"; @@ -80,6 +86,9 @@ void testIsResolvableWithCorrectPrefix() { ConfigDataLocation location = ConfigDataLocation.of(PREFIX); when(mockContext.getBinder()).thenReturn(mockBinder); + when(mockBinder.bind("spring.cloud.azure.appconfiguration.enabled", Boolean.class)) + .thenReturn(enabledTrueResult); + when(enabledTrueResult.orElse(true)).thenReturn(true); when(mockBinder.bind("spring.cloud.azure.appconfiguration.stores[0].endpoint", String.class)) .thenReturn(validResult); when(validResult.orElse("")).thenReturn("https://test.config.io"); @@ -95,6 +104,9 @@ void testIsResolvableWithValidConnectionStringConfiguration() { ConfigDataLocation location = ConfigDataLocation.of("azureAppConfiguration:"); when(mockContext.getBinder()).thenReturn(mockBinder); + when(mockBinder.bind("spring.cloud.azure.appconfiguration.enabled", Boolean.class)) + .thenReturn(enabledTrueResult); + when(enabledTrueResult.orElse(true)).thenReturn(true); when(mockBinder.bind("spring.cloud.azure.appconfiguration.stores[0].endpoint", String.class)) .thenReturn(emptyResult); when(emptyResult.orElse("")).thenReturn(""); @@ -108,11 +120,28 @@ void testIsResolvableWithValidConnectionStringConfiguration() { assertTrue(result, "Resolver should accept locations with valid connection-string configuration"); } + @Test + void testIsResolvableWhenAppConfigurationIsDisabled() { + ConfigDataLocation location = ConfigDataLocation.of("azureAppConfiguration:"); + + when(mockContext.getBinder()).thenReturn(mockBinder); + when(mockBinder.bind("spring.cloud.azure.appconfiguration.enabled", Boolean.class)) + .thenReturn(enabledFalseResult); + when(enabledFalseResult.orElse(true)).thenReturn(false); + + boolean result = resolver.isResolvable(mockContext, location); + + assertFalse(result, "Resolver should reject locations when App Configuration is disabled"); + } + @Test void testIsResolvableWithValidEndpointsConfiguration() { ConfigDataLocation location = ConfigDataLocation.of("azureAppConfiguration:"); when(mockContext.getBinder()).thenReturn(mockBinder); + when(mockBinder.bind("spring.cloud.azure.appconfiguration.enabled", Boolean.class)) + .thenReturn(enabledTrueResult); + when(enabledTrueResult.orElse(true)).thenReturn(true); when(mockBinder.bind("spring.cloud.azure.appconfiguration.stores[0].endpoint", String.class)) .thenReturn(emptyResult); when(emptyResult.orElse("")).thenReturn(""); @@ -134,6 +163,9 @@ void testIsResolvableWithValidConnectionStringsConfiguration() { ConfigDataLocation location = ConfigDataLocation.of("azureAppConfiguration:"); when(mockContext.getBinder()).thenReturn(mockBinder); + when(mockBinder.bind("spring.cloud.azure.appconfiguration.enabled", Boolean.class)) + .thenReturn(enabledTrueResult); + when(enabledTrueResult.orElse(true)).thenReturn(true); when(mockBinder.bind("spring.cloud.azure.appconfiguration.stores[0].endpoint", String.class)) .thenReturn(emptyResult); when(mockBinder.bind("spring.cloud.azure.appconfiguration.stores[0].connection-string", String.class)) @@ -156,6 +188,9 @@ void testIsResolvableWithNoValidConfiguration() { ConfigDataLocation location = ConfigDataLocation.of("azureAppConfiguration:"); when(mockContext.getBinder()).thenReturn(mockBinder); + when(mockBinder.bind("spring.cloud.azure.appconfiguration.enabled", Boolean.class)) + .thenReturn(enabledTrueResult); + when(enabledTrueResult.orElse(true)).thenReturn(true); when(mockBinder.bind("spring.cloud.azure.appconfiguration.stores[0].endpoint", String.class)) .thenReturn(emptyResult); when(mockBinder.bind("spring.cloud.azure.appconfiguration.stores[0].connection-string", String.class)) From 416589bc6c2c5a7799fdcb92dc2b7fabaeb1b0e0 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Tue, 30 Dec 2025 06:59:35 -0800 Subject: [PATCH 13/41] Configurations: 'specification/dell/Dell.Storage.Management/tspconfig.yaml', API Version: 2025-03-21, SDK Release Type: stable, and CommitSHA: 'be36de931322b23890d3353e06bcc6ad34212877' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=5707780 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release. (#47609) Co-authored-by: KajalSethi <141897294+KajalSethi@users.noreply.github.com> --- eng/versioning/version_client.txt | 2 +- .../CHANGELOG.md | 60 +++++++++++++++++-- .../README.md | 4 +- .../SAMPLE.md | 28 ++++----- .../pom.xml | 5 +- .../DellStorageMgmtClientImpl.java | 2 +- ...resourcemanager-dell-storage_metadata.json | 2 +- .../FileSystemsCreateOrUpdateSamples.java | 4 +- .../generated/FileSystemsDeleteSamples.java | 4 +- .../FileSystemsGetByResourceGroupSamples.java | 4 +- ...FileSystemsListByResourceGroupSamples.java | 4 +- .../generated/FileSystemsListSamples.java | 4 +- .../generated/FileSystemsUpdateSamples.java | 4 +- .../generated/OperationsListSamples.java | 4 +- .../tsp-location.yaml | 2 +- 15 files changed, 92 insertions(+), 41 deletions(-) diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index 62711bd793fc..68683ff49c50 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -494,7 +494,7 @@ com.azure.resourcemanager:azure-resourcemanager-lambdatesthyperexecute;1.0.0;1.1 com.azure.resourcemanager:azure-resourcemanager-onlineexperimentation;1.0.0-beta.1;1.0.0-beta.2 com.azure.resourcemanager:azure-resourcemanager-secretsstoreextension;1.0.0-beta.1;1.0.0-beta.2 com.azure.resourcemanager:azure-resourcemanager-programmableconnectivity;1.0.0-beta.1;1.0.0-beta.1 -com.azure.resourcemanager:azure-resourcemanager-dell-storage;1.0.0-beta.1;1.0.0-beta.2 +com.azure.resourcemanager:azure-resourcemanager-dell-storage;1.0.0-beta.1;1.0.0 com.azure.resourcemanager:azure-resourcemanager-sitemanager;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-mongodbatlas;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-purestorageblock;1.0.0;1.1.0-beta.1 diff --git a/sdk/dell/azure-resourcemanager-dell-storage/CHANGELOG.md b/sdk/dell/azure-resourcemanager-dell-storage/CHANGELOG.md index e9928f0a30e0..9354c57301d4 100644 --- a/sdk/dell/azure-resourcemanager-dell-storage/CHANGELOG.md +++ b/sdk/dell/azure-resourcemanager-dell-storage/CHANGELOG.md @@ -1,14 +1,66 @@ # Release History -## 1.0.0-beta.2 (Unreleased) +## 1.0.0 (2025-12-29) -### Features Added +- Azure Resource Manager Dell Storage client library for Java. This package contains Microsoft Azure SDK for Dell Storage Management SDK. Dell Storage service. Package api-version 2025-03-21. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). ### Breaking Changes -### Bugs Fixed +#### `models.UserDetails` was modified + +* `validate()` was removed + +#### `models.EncryptionIdentityUpdateProperties` was modified + +* `validate()` was removed + +#### `models.EncryptionIdentityProperties` was modified + +* `validate()` was removed + +#### `models.EncryptionProperties` was modified + +* `validate()` was removed + +#### `models.UserAssignedIdentity` was modified + +* `validate()` was removed + +#### `models.Capacity` was modified + +* `validate()` was removed + +#### `models.FileSystemResourceProperties` was modified + +* `validate()` was removed + +#### `models.MarketplaceDetails` was modified + +* `validate()` was removed + +#### `models.FileSystemResourceUpdateProperties` was modified + +* `validate()` was removed + +#### `models.ManagedServiceIdentityUpdate` was modified + +* `validate()` was removed + +#### `models.ManagedServiceIdentity` was modified + +* `validate()` was removed + +#### `models.OperationDisplay` was modified + +* `validate()` was removed + +#### `models.EncryptionUpdateProperties` was modified + +* `validate()` was removed + +#### `models.FileSystemResourceUpdate` was modified -### Other Changes +* `validate()` was removed ## 1.0.0-beta.1 (2025-05-08) diff --git a/sdk/dell/azure-resourcemanager-dell-storage/README.md b/sdk/dell/azure-resourcemanager-dell-storage/README.md index 8035c6717772..d9e72bfaaf22 100644 --- a/sdk/dell/azure-resourcemanager-dell-storage/README.md +++ b/sdk/dell/azure-resourcemanager-dell-storage/README.md @@ -2,7 +2,7 @@ Azure Resource Manager Dell Storage client library for Java. -This package contains Microsoft Azure SDK for Dell Storage Management SDK. Dell Storage service. Package api-version 2025-03-21-preview. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). +This package contains Microsoft Azure SDK for Dell Storage Management SDK. Dell Storage service. Package api-version 2025-03-21. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). ## We'd love to hear your feedback @@ -32,7 +32,7 @@ Various documentation is available to help you get started com.azure.resourcemanager azure-resourcemanager-dell-storage - 1.0.0-beta.1 + 1.0.0 ``` [//]: # ({x-version-update-end}) diff --git a/sdk/dell/azure-resourcemanager-dell-storage/SAMPLE.md b/sdk/dell/azure-resourcemanager-dell-storage/SAMPLE.md index 52e621b4ff51..c71276c82ce3 100644 --- a/sdk/dell/azure-resourcemanager-dell-storage/SAMPLE.md +++ b/sdk/dell/azure-resourcemanager-dell-storage/SAMPLE.md @@ -34,7 +34,7 @@ import java.util.Map; */ public final class FileSystemsCreateOrUpdateSamples { /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_CreateOrUpdate_MaximumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_CreateOrUpdate_MaximumSet_Gen.json */ /** * Sample code: FileSystems_CreateOrUpdate_MaximumSet_Gen. @@ -74,7 +74,7 @@ public final class FileSystemsCreateOrUpdateSamples { } /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_CreateOrUpdate_MinimumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_CreateOrUpdate_MinimumSet_Gen.json */ /** * Sample code: FileSystems_CreateOrUpdate_MinimumSet_Gen. @@ -124,7 +124,7 @@ public final class FileSystemsCreateOrUpdateSamples { */ public final class FileSystemsDeleteSamples { /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_Delete_MaximumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_Delete_MaximumSet_Gen.json */ /** * Sample code: FileSystems_Delete_MaximumSet_Gen. @@ -137,7 +137,7 @@ public final class FileSystemsDeleteSamples { } /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_Delete_MinimumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_Delete_MinimumSet_Gen.json */ /** * Sample code: FileSystems_Delete_MinimumSet_Gen. @@ -159,7 +159,7 @@ public final class FileSystemsDeleteSamples { */ public final class FileSystemsGetByResourceGroupSamples { /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_Get_MaximumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_Get_MaximumSet_Gen.json */ /** * Sample code: FileSystems_Get_MaximumSet_Gen. @@ -171,7 +171,7 @@ public final class FileSystemsGetByResourceGroupSamples { } /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_Get_MinimumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_Get_MinimumSet_Gen.json */ /** * Sample code: FileSystems_Get_MinimumSet_Gen. @@ -192,7 +192,7 @@ public final class FileSystemsGetByResourceGroupSamples { */ public final class FileSystemsListSamples { /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_ListBySubscription_MinimumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_ListBySubscription_MinimumSet_Gen.json */ /** * Sample code: FileSystems_ListBySubscription_MinimumSet_Gen. @@ -205,7 +205,7 @@ public final class FileSystemsListSamples { } /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_ListBySubscription_MaximumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_ListBySubscription_MaximumSet_Gen.json */ /** * Sample code: FileSystems_ListBySubscription_MaximumSet_Gen. @@ -227,7 +227,7 @@ public final class FileSystemsListSamples { */ public final class FileSystemsListByResourceGroupSamples { /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_ListByResourceGroup_MaximumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_ListByResourceGroup_MaximumSet_Gen.json */ /** * Sample code: FileSystems_ListByResourceGroup_MaximumSet_Gen. @@ -240,7 +240,7 @@ public final class FileSystemsListByResourceGroupSamples { } /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_ListByResourceGroup_MinimumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_ListByResourceGroup_MinimumSet_Gen.json */ /** * Sample code: FileSystems_ListByResourceGroup_MinimumSet_Gen. @@ -275,7 +275,7 @@ import java.util.Map; */ public final class FileSystemsUpdateSamples { /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_Update_MinimumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_Update_MinimumSet_Gen.json */ /** * Sample code: FileSystems_Update_MinimumSet_Gen. @@ -295,7 +295,7 @@ public final class FileSystemsUpdateSamples { } /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_Update_MaximumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_Update_MaximumSet_Gen.json */ /** * Sample code: FileSystems_Update_MaximumSet_Gen. @@ -346,7 +346,7 @@ public final class FileSystemsUpdateSamples { */ public final class OperationsListSamples { /* - * x-ms-original-file: 2025-03-21-preview/Operations_List_MinimumSet_Gen.json + * x-ms-original-file: 2025-03-21/Operations_List_MinimumSet_Gen.json */ /** * Sample code: Operations_List_MinimumSet_Gen. @@ -358,7 +358,7 @@ public final class OperationsListSamples { } /* - * x-ms-original-file: 2025-03-21-preview/Operations_List_MaximumSet_Gen.json + * x-ms-original-file: 2025-03-21/Operations_List_MaximumSet_Gen.json */ /** * Sample code: Operations_List_MaximumSet_Gen. diff --git a/sdk/dell/azure-resourcemanager-dell-storage/pom.xml b/sdk/dell/azure-resourcemanager-dell-storage/pom.xml index 99174032ed27..fefdd33b8978 100644 --- a/sdk/dell/azure-resourcemanager-dell-storage/pom.xml +++ b/sdk/dell/azure-resourcemanager-dell-storage/pom.xml @@ -14,11 +14,11 @@ com.azure.resourcemanager azure-resourcemanager-dell-storage - 1.0.0-beta.2 + 1.0.0 jar Microsoft Azure SDK for Dell Storage Management - This package contains Microsoft Azure SDK for Dell Storage Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. Dell Storage service. Package api-version 2025-03-21-preview. + This package contains Microsoft Azure SDK for Dell Storage Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. Dell Storage service. Package api-version 2025-03-21. https://github.com/Azure/azure-sdk-for-java @@ -45,7 +45,6 @@ UTF-8 0 0 - true diff --git a/sdk/dell/azure-resourcemanager-dell-storage/src/main/java/com/azure/resourcemanager/dell/storage/implementation/DellStorageMgmtClientImpl.java b/sdk/dell/azure-resourcemanager-dell-storage/src/main/java/com/azure/resourcemanager/dell/storage/implementation/DellStorageMgmtClientImpl.java index 374fc2854554..ba2132f88eb8 100644 --- a/sdk/dell/azure-resourcemanager-dell-storage/src/main/java/com/azure/resourcemanager/dell/storage/implementation/DellStorageMgmtClientImpl.java +++ b/sdk/dell/azure-resourcemanager-dell-storage/src/main/java/com/azure/resourcemanager/dell/storage/implementation/DellStorageMgmtClientImpl.java @@ -172,7 +172,7 @@ public FileSystemsClient getFileSystems() { this.defaultPollInterval = defaultPollInterval; this.endpoint = endpoint; this.subscriptionId = subscriptionId; - this.apiVersion = "2025-03-21-preview"; + this.apiVersion = "2025-03-21"; this.operations = new OperationsClientImpl(this); this.fileSystems = new FileSystemsClientImpl(this); } diff --git a/sdk/dell/azure-resourcemanager-dell-storage/src/main/resources/META-INF/azure-resourcemanager-dell-storage_metadata.json b/sdk/dell/azure-resourcemanager-dell-storage/src/main/resources/META-INF/azure-resourcemanager-dell-storage_metadata.json index 8b670fa0e87d..dc76c185ff41 100644 --- a/sdk/dell/azure-resourcemanager-dell-storage/src/main/resources/META-INF/azure-resourcemanager-dell-storage_metadata.json +++ b/sdk/dell/azure-resourcemanager-dell-storage/src/main/resources/META-INF/azure-resourcemanager-dell-storage_metadata.json @@ -1 +1 @@ -{"flavor":"azure","apiVersion":"2025-03-21-preview","crossLanguageDefinitions":{"com.azure.resourcemanager.dell.storage.fluent.DellStorageMgmtClient":"Dell.Storage","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient":"Dell.Storage.FileSystems","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.beginCreateOrUpdate":"Dell.Storage.FileSystems.createOrUpdate","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.beginDelete":"Dell.Storage.FileSystems.delete","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.createOrUpdate":"Dell.Storage.FileSystems.createOrUpdate","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.delete":"Dell.Storage.FileSystems.delete","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.getByResourceGroup":"Dell.Storage.FileSystems.get","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.getByResourceGroupWithResponse":"Dell.Storage.FileSystems.get","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.list":"Dell.Storage.FileSystems.listBySubscription","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.listByResourceGroup":"Dell.Storage.FileSystems.listByResourceGroup","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.update":"Dell.Storage.FileSystems.update","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.updateWithResponse":"Dell.Storage.FileSystems.update","com.azure.resourcemanager.dell.storage.fluent.OperationsClient":"Dell.Storage.Operations","com.azure.resourcemanager.dell.storage.fluent.OperationsClient.list":"Azure.ResourceManager.Operations.list","com.azure.resourcemanager.dell.storage.fluent.models.FileSystemResourceInner":"LiftrBase.Storage.FileSystemResource","com.azure.resourcemanager.dell.storage.fluent.models.OperationInner":"Azure.ResourceManager.CommonTypes.Operation","com.azure.resourcemanager.dell.storage.implementation.DellStorageMgmtClientBuilder":"Dell.Storage","com.azure.resourcemanager.dell.storage.implementation.models.FileSystemResourceListResult":"Azure.ResourceManager.ResourceListResult","com.azure.resourcemanager.dell.storage.implementation.models.OperationListResult":"Azure.ResourceManager.CommonTypes.OperationListResult","com.azure.resourcemanager.dell.storage.models.ActionType":"Azure.ResourceManager.CommonTypes.ActionType","com.azure.resourcemanager.dell.storage.models.Capacity":"LiftrBase.Storage.Capacity","com.azure.resourcemanager.dell.storage.models.EncryptionIdentityProperties":"LiftrBase.EncryptionIdentityProperties","com.azure.resourcemanager.dell.storage.models.EncryptionIdentityType":"LiftrBase.EncryptionIdentityType","com.azure.resourcemanager.dell.storage.models.EncryptionIdentityUpdateProperties":"LiftrBase.EncryptionIdentityUpdateProperties","com.azure.resourcemanager.dell.storage.models.EncryptionProperties":"LiftrBase.EncryptionProperties","com.azure.resourcemanager.dell.storage.models.EncryptionUpdateProperties":"LiftrBase.EncryptionUpdateProperties","com.azure.resourcemanager.dell.storage.models.FileSystemResourceProperties":"LiftrBase.Storage.FileSystemResourceProperties","com.azure.resourcemanager.dell.storage.models.FileSystemResourceUpdate":"LiftrBase.Storage.FileSystemResourceUpdate","com.azure.resourcemanager.dell.storage.models.FileSystemResourceUpdateProperties":"LiftrBase.Storage.FileSystemResourceUpdateProperties","com.azure.resourcemanager.dell.storage.models.ManagedServiceIdentity":"Azure.ResourceManager.CommonTypes.ManagedServiceIdentity","com.azure.resourcemanager.dell.storage.models.ManagedServiceIdentityType":"Azure.ResourceManager.CommonTypes.ManagedServiceIdentityType","com.azure.resourcemanager.dell.storage.models.ManagedServiceIdentityUpdate":"LiftrBase.Storage.ManagedServiceIdentityUpdate","com.azure.resourcemanager.dell.storage.models.MarketplaceDetails":"LiftrBase.MarketplaceDetails","com.azure.resourcemanager.dell.storage.models.MarketplaceSubscriptionStatus":"LiftrBase.MarketplaceSubscriptionStatus","com.azure.resourcemanager.dell.storage.models.OperationDisplay":"Azure.ResourceManager.CommonTypes.OperationDisplay","com.azure.resourcemanager.dell.storage.models.Origin":"Azure.ResourceManager.CommonTypes.Origin","com.azure.resourcemanager.dell.storage.models.ProvisioningState":"LiftrBase.ProvisioningState","com.azure.resourcemanager.dell.storage.models.ResourceEncryptionType":"LiftrBase.ResourceEncryptionType","com.azure.resourcemanager.dell.storage.models.UserAssignedIdentity":"Azure.ResourceManager.CommonTypes.UserAssignedIdentity","com.azure.resourcemanager.dell.storage.models.UserDetails":"LiftrBase.UserDetails"},"generatedFiles":["src/main/java/com/azure/resourcemanager/dell/storage/DellStorageManager.java","src/main/java/com/azure/resourcemanager/dell/storage/fluent/DellStorageMgmtClient.java","src/main/java/com/azure/resourcemanager/dell/storage/fluent/FileSystemsClient.java","src/main/java/com/azure/resourcemanager/dell/storage/fluent/OperationsClient.java","src/main/java/com/azure/resourcemanager/dell/storage/fluent/models/FileSystemResourceInner.java","src/main/java/com/azure/resourcemanager/dell/storage/fluent/models/OperationInner.java","src/main/java/com/azure/resourcemanager/dell/storage/fluent/models/package-info.java","src/main/java/com/azure/resourcemanager/dell/storage/fluent/package-info.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/DellStorageMgmtClientBuilder.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/DellStorageMgmtClientImpl.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/FileSystemResourceImpl.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/FileSystemsClientImpl.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/FileSystemsImpl.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/OperationImpl.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/OperationsClientImpl.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/OperationsImpl.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/ResourceManagerUtils.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/models/FileSystemResourceListResult.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/models/OperationListResult.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/package-info.java","src/main/java/com/azure/resourcemanager/dell/storage/models/ActionType.java","src/main/java/com/azure/resourcemanager/dell/storage/models/Capacity.java","src/main/java/com/azure/resourcemanager/dell/storage/models/EncryptionIdentityProperties.java","src/main/java/com/azure/resourcemanager/dell/storage/models/EncryptionIdentityType.java","src/main/java/com/azure/resourcemanager/dell/storage/models/EncryptionIdentityUpdateProperties.java","src/main/java/com/azure/resourcemanager/dell/storage/models/EncryptionProperties.java","src/main/java/com/azure/resourcemanager/dell/storage/models/EncryptionUpdateProperties.java","src/main/java/com/azure/resourcemanager/dell/storage/models/FileSystemResource.java","src/main/java/com/azure/resourcemanager/dell/storage/models/FileSystemResourceProperties.java","src/main/java/com/azure/resourcemanager/dell/storage/models/FileSystemResourceUpdate.java","src/main/java/com/azure/resourcemanager/dell/storage/models/FileSystemResourceUpdateProperties.java","src/main/java/com/azure/resourcemanager/dell/storage/models/FileSystems.java","src/main/java/com/azure/resourcemanager/dell/storage/models/ManagedServiceIdentity.java","src/main/java/com/azure/resourcemanager/dell/storage/models/ManagedServiceIdentityType.java","src/main/java/com/azure/resourcemanager/dell/storage/models/ManagedServiceIdentityUpdate.java","src/main/java/com/azure/resourcemanager/dell/storage/models/MarketplaceDetails.java","src/main/java/com/azure/resourcemanager/dell/storage/models/MarketplaceSubscriptionStatus.java","src/main/java/com/azure/resourcemanager/dell/storage/models/Operation.java","src/main/java/com/azure/resourcemanager/dell/storage/models/OperationDisplay.java","src/main/java/com/azure/resourcemanager/dell/storage/models/Operations.java","src/main/java/com/azure/resourcemanager/dell/storage/models/Origin.java","src/main/java/com/azure/resourcemanager/dell/storage/models/ProvisioningState.java","src/main/java/com/azure/resourcemanager/dell/storage/models/ResourceEncryptionType.java","src/main/java/com/azure/resourcemanager/dell/storage/models/UserAssignedIdentity.java","src/main/java/com/azure/resourcemanager/dell/storage/models/UserDetails.java","src/main/java/com/azure/resourcemanager/dell/storage/models/package-info.java","src/main/java/com/azure/resourcemanager/dell/storage/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file +{"flavor":"azure","apiVersion":"2025-03-21","crossLanguageDefinitions":{"com.azure.resourcemanager.dell.storage.fluent.DellStorageMgmtClient":"Dell.Storage","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient":"Dell.Storage.FileSystems","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.beginCreateOrUpdate":"Dell.Storage.FileSystems.createOrUpdate","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.beginDelete":"Dell.Storage.FileSystems.delete","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.createOrUpdate":"Dell.Storage.FileSystems.createOrUpdate","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.delete":"Dell.Storage.FileSystems.delete","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.getByResourceGroup":"Dell.Storage.FileSystems.get","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.getByResourceGroupWithResponse":"Dell.Storage.FileSystems.get","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.list":"Dell.Storage.FileSystems.listBySubscription","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.listByResourceGroup":"Dell.Storage.FileSystems.listByResourceGroup","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.update":"Dell.Storage.FileSystems.update","com.azure.resourcemanager.dell.storage.fluent.FileSystemsClient.updateWithResponse":"Dell.Storage.FileSystems.update","com.azure.resourcemanager.dell.storage.fluent.OperationsClient":"Dell.Storage.Operations","com.azure.resourcemanager.dell.storage.fluent.OperationsClient.list":"Azure.ResourceManager.Operations.list","com.azure.resourcemanager.dell.storage.fluent.models.FileSystemResourceInner":"LiftrBase.Storage.FileSystemResource","com.azure.resourcemanager.dell.storage.fluent.models.OperationInner":"Azure.ResourceManager.CommonTypes.Operation","com.azure.resourcemanager.dell.storage.implementation.DellStorageMgmtClientBuilder":"Dell.Storage","com.azure.resourcemanager.dell.storage.implementation.models.FileSystemResourceListResult":"Azure.ResourceManager.ResourceListResult","com.azure.resourcemanager.dell.storage.implementation.models.OperationListResult":"Azure.ResourceManager.CommonTypes.OperationListResult","com.azure.resourcemanager.dell.storage.models.ActionType":"Azure.ResourceManager.CommonTypes.ActionType","com.azure.resourcemanager.dell.storage.models.Capacity":"LiftrBase.Storage.Capacity","com.azure.resourcemanager.dell.storage.models.EncryptionIdentityProperties":"LiftrBase.EncryptionIdentityProperties","com.azure.resourcemanager.dell.storage.models.EncryptionIdentityType":"LiftrBase.EncryptionIdentityType","com.azure.resourcemanager.dell.storage.models.EncryptionIdentityUpdateProperties":"LiftrBase.EncryptionIdentityUpdateProperties","com.azure.resourcemanager.dell.storage.models.EncryptionProperties":"LiftrBase.EncryptionProperties","com.azure.resourcemanager.dell.storage.models.EncryptionUpdateProperties":"LiftrBase.EncryptionUpdateProperties","com.azure.resourcemanager.dell.storage.models.FileSystemResourceProperties":"LiftrBase.Storage.FileSystemResourceProperties","com.azure.resourcemanager.dell.storage.models.FileSystemResourceUpdate":"LiftrBase.Storage.FileSystemResourceUpdate","com.azure.resourcemanager.dell.storage.models.FileSystemResourceUpdateProperties":"LiftrBase.Storage.FileSystemResourceUpdateProperties","com.azure.resourcemanager.dell.storage.models.ManagedServiceIdentity":"Azure.ResourceManager.CommonTypes.ManagedServiceIdentity","com.azure.resourcemanager.dell.storage.models.ManagedServiceIdentityType":"Azure.ResourceManager.CommonTypes.ManagedServiceIdentityType","com.azure.resourcemanager.dell.storage.models.ManagedServiceIdentityUpdate":"LiftrBase.Storage.ManagedServiceIdentityUpdate","com.azure.resourcemanager.dell.storage.models.MarketplaceDetails":"LiftrBase.MarketplaceDetails","com.azure.resourcemanager.dell.storage.models.MarketplaceSubscriptionStatus":"LiftrBase.MarketplaceSubscriptionStatus","com.azure.resourcemanager.dell.storage.models.OperationDisplay":"Azure.ResourceManager.CommonTypes.OperationDisplay","com.azure.resourcemanager.dell.storage.models.Origin":"Azure.ResourceManager.CommonTypes.Origin","com.azure.resourcemanager.dell.storage.models.ProvisioningState":"LiftrBase.ProvisioningState","com.azure.resourcemanager.dell.storage.models.ResourceEncryptionType":"LiftrBase.ResourceEncryptionType","com.azure.resourcemanager.dell.storage.models.UserAssignedIdentity":"Azure.ResourceManager.CommonTypes.UserAssignedIdentity","com.azure.resourcemanager.dell.storage.models.UserDetails":"LiftrBase.UserDetails"},"generatedFiles":["src/main/java/com/azure/resourcemanager/dell/storage/DellStorageManager.java","src/main/java/com/azure/resourcemanager/dell/storage/fluent/DellStorageMgmtClient.java","src/main/java/com/azure/resourcemanager/dell/storage/fluent/FileSystemsClient.java","src/main/java/com/azure/resourcemanager/dell/storage/fluent/OperationsClient.java","src/main/java/com/azure/resourcemanager/dell/storage/fluent/models/FileSystemResourceInner.java","src/main/java/com/azure/resourcemanager/dell/storage/fluent/models/OperationInner.java","src/main/java/com/azure/resourcemanager/dell/storage/fluent/models/package-info.java","src/main/java/com/azure/resourcemanager/dell/storage/fluent/package-info.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/DellStorageMgmtClientBuilder.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/DellStorageMgmtClientImpl.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/FileSystemResourceImpl.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/FileSystemsClientImpl.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/FileSystemsImpl.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/OperationImpl.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/OperationsClientImpl.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/OperationsImpl.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/ResourceManagerUtils.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/models/FileSystemResourceListResult.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/models/OperationListResult.java","src/main/java/com/azure/resourcemanager/dell/storage/implementation/package-info.java","src/main/java/com/azure/resourcemanager/dell/storage/models/ActionType.java","src/main/java/com/azure/resourcemanager/dell/storage/models/Capacity.java","src/main/java/com/azure/resourcemanager/dell/storage/models/EncryptionIdentityProperties.java","src/main/java/com/azure/resourcemanager/dell/storage/models/EncryptionIdentityType.java","src/main/java/com/azure/resourcemanager/dell/storage/models/EncryptionIdentityUpdateProperties.java","src/main/java/com/azure/resourcemanager/dell/storage/models/EncryptionProperties.java","src/main/java/com/azure/resourcemanager/dell/storage/models/EncryptionUpdateProperties.java","src/main/java/com/azure/resourcemanager/dell/storage/models/FileSystemResource.java","src/main/java/com/azure/resourcemanager/dell/storage/models/FileSystemResourceProperties.java","src/main/java/com/azure/resourcemanager/dell/storage/models/FileSystemResourceUpdate.java","src/main/java/com/azure/resourcemanager/dell/storage/models/FileSystemResourceUpdateProperties.java","src/main/java/com/azure/resourcemanager/dell/storage/models/FileSystems.java","src/main/java/com/azure/resourcemanager/dell/storage/models/ManagedServiceIdentity.java","src/main/java/com/azure/resourcemanager/dell/storage/models/ManagedServiceIdentityType.java","src/main/java/com/azure/resourcemanager/dell/storage/models/ManagedServiceIdentityUpdate.java","src/main/java/com/azure/resourcemanager/dell/storage/models/MarketplaceDetails.java","src/main/java/com/azure/resourcemanager/dell/storage/models/MarketplaceSubscriptionStatus.java","src/main/java/com/azure/resourcemanager/dell/storage/models/Operation.java","src/main/java/com/azure/resourcemanager/dell/storage/models/OperationDisplay.java","src/main/java/com/azure/resourcemanager/dell/storage/models/Operations.java","src/main/java/com/azure/resourcemanager/dell/storage/models/Origin.java","src/main/java/com/azure/resourcemanager/dell/storage/models/ProvisioningState.java","src/main/java/com/azure/resourcemanager/dell/storage/models/ResourceEncryptionType.java","src/main/java/com/azure/resourcemanager/dell/storage/models/UserAssignedIdentity.java","src/main/java/com/azure/resourcemanager/dell/storage/models/UserDetails.java","src/main/java/com/azure/resourcemanager/dell/storage/models/package-info.java","src/main/java/com/azure/resourcemanager/dell/storage/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsCreateOrUpdateSamples.java b/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsCreateOrUpdateSamples.java index 6e19b44fcbc6..30e5c0d0559f 100644 --- a/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsCreateOrUpdateSamples.java +++ b/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsCreateOrUpdateSamples.java @@ -22,7 +22,7 @@ */ public final class FileSystemsCreateOrUpdateSamples { /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_CreateOrUpdate_MaximumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_CreateOrUpdate_MaximumSet_Gen.json */ /** * Sample code: FileSystems_CreateOrUpdate_MaximumSet_Gen. @@ -62,7 +62,7 @@ public final class FileSystemsCreateOrUpdateSamples { } /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_CreateOrUpdate_MinimumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_CreateOrUpdate_MinimumSet_Gen.json */ /** * Sample code: FileSystems_CreateOrUpdate_MinimumSet_Gen. diff --git a/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsDeleteSamples.java b/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsDeleteSamples.java index f4a48916b339..6e7a6e74b427 100644 --- a/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsDeleteSamples.java +++ b/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsDeleteSamples.java @@ -9,7 +9,7 @@ */ public final class FileSystemsDeleteSamples { /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_Delete_MaximumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_Delete_MaximumSet_Gen.json */ /** * Sample code: FileSystems_Delete_MaximumSet_Gen. @@ -22,7 +22,7 @@ public final class FileSystemsDeleteSamples { } /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_Delete_MinimumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_Delete_MinimumSet_Gen.json */ /** * Sample code: FileSystems_Delete_MinimumSet_Gen. diff --git a/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsGetByResourceGroupSamples.java b/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsGetByResourceGroupSamples.java index 656812d8b172..743c9263f76b 100644 --- a/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsGetByResourceGroupSamples.java +++ b/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsGetByResourceGroupSamples.java @@ -9,7 +9,7 @@ */ public final class FileSystemsGetByResourceGroupSamples { /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_Get_MaximumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_Get_MaximumSet_Gen.json */ /** * Sample code: FileSystems_Get_MaximumSet_Gen. @@ -21,7 +21,7 @@ public static void fileSystemsGetMaximumSetGen(com.azure.resourcemanager.dell.st } /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_Get_MinimumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_Get_MinimumSet_Gen.json */ /** * Sample code: FileSystems_Get_MinimumSet_Gen. diff --git a/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsListByResourceGroupSamples.java b/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsListByResourceGroupSamples.java index 88f8c901d212..0a9df004ca34 100644 --- a/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsListByResourceGroupSamples.java +++ b/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsListByResourceGroupSamples.java @@ -9,7 +9,7 @@ */ public final class FileSystemsListByResourceGroupSamples { /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_ListByResourceGroup_MaximumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_ListByResourceGroup_MaximumSet_Gen.json */ /** * Sample code: FileSystems_ListByResourceGroup_MaximumSet_Gen. @@ -22,7 +22,7 @@ public final class FileSystemsListByResourceGroupSamples { } /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_ListByResourceGroup_MinimumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_ListByResourceGroup_MinimumSet_Gen.json */ /** * Sample code: FileSystems_ListByResourceGroup_MinimumSet_Gen. diff --git a/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsListSamples.java b/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsListSamples.java index 6ea214321c38..8df2e72bfc7c 100644 --- a/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsListSamples.java +++ b/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsListSamples.java @@ -9,7 +9,7 @@ */ public final class FileSystemsListSamples { /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_ListBySubscription_MinimumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_ListBySubscription_MinimumSet_Gen.json */ /** * Sample code: FileSystems_ListBySubscription_MinimumSet_Gen. @@ -22,7 +22,7 @@ public final class FileSystemsListSamples { } /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_ListBySubscription_MaximumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_ListBySubscription_MaximumSet_Gen.json */ /** * Sample code: FileSystems_ListBySubscription_MaximumSet_Gen. diff --git a/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsUpdateSamples.java b/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsUpdateSamples.java index 67191d5f5329..2aedffcaa5c8 100644 --- a/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsUpdateSamples.java +++ b/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/FileSystemsUpdateSamples.java @@ -22,7 +22,7 @@ */ public final class FileSystemsUpdateSamples { /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_Update_MinimumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_Update_MinimumSet_Gen.json */ /** * Sample code: FileSystems_Update_MinimumSet_Gen. @@ -42,7 +42,7 @@ public final class FileSystemsUpdateSamples { } /* - * x-ms-original-file: 2025-03-21-preview/FileSystems_Update_MaximumSet_Gen.json + * x-ms-original-file: 2025-03-21/FileSystems_Update_MaximumSet_Gen.json */ /** * Sample code: FileSystems_Update_MaximumSet_Gen. diff --git a/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/OperationsListSamples.java b/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/OperationsListSamples.java index 8385144a2cde..48c9ca64c4f5 100644 --- a/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/OperationsListSamples.java +++ b/sdk/dell/azure-resourcemanager-dell-storage/src/samples/java/com/azure/resourcemanager/dell/storage/generated/OperationsListSamples.java @@ -9,7 +9,7 @@ */ public final class OperationsListSamples { /* - * x-ms-original-file: 2025-03-21-preview/Operations_List_MinimumSet_Gen.json + * x-ms-original-file: 2025-03-21/Operations_List_MinimumSet_Gen.json */ /** * Sample code: Operations_List_MinimumSet_Gen. @@ -21,7 +21,7 @@ public static void operationsListMinimumSetGen(com.azure.resourcemanager.dell.st } /* - * x-ms-original-file: 2025-03-21-preview/Operations_List_MaximumSet_Gen.json + * x-ms-original-file: 2025-03-21/Operations_List_MaximumSet_Gen.json */ /** * Sample code: Operations_List_MaximumSet_Gen. diff --git a/sdk/dell/azure-resourcemanager-dell-storage/tsp-location.yaml b/sdk/dell/azure-resourcemanager-dell-storage/tsp-location.yaml index f79001aaae5d..6de6e549130d 100644 --- a/sdk/dell/azure-resourcemanager-dell-storage/tsp-location.yaml +++ b/sdk/dell/azure-resourcemanager-dell-storage/tsp-location.yaml @@ -1,4 +1,4 @@ directory: specification/dell/Dell.Storage.Management -commit: 6267b64842af3d744c5b092a3f3beef49729ad6d +commit: be36de931322b23890d3353e06bcc6ad34212877 repo: Azure/azure-rest-api-specs additionalDirectories: From 45192a2c3c272ad6e6508f4a6d0d3b227486391e Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Sun, 4 Jan 2026 21:46:10 -0800 Subject: [PATCH 14/41] [Automation] Generate Fluent Lite from Swagger specification/operationalinsights/resource-manager/Microsoft.OperationalInsights/OperationalInsights/readme.md#package-2025-07-01 (#47617) --- eng/versioning/version_client.txt | 2 +- .../CHANGELOG.md | 10 +++++----- .../azure-resourcemanager-loganalytics/README.md | 2 +- .../azure-resourcemanager-loganalytics/SAMPLE.md | 3 ++- .../azure-resourcemanager-loganalytics/pom.xml | 3 +-- .../loganalytics/models/RuleDefinition.java | 12 ++++++++++++ .../SummaryLogsOperationCreateOrUpdateSamples.java | 3 ++- .../generated/AccessRulePropertiesTests.java | 14 +++++++------- .../loganalytics/generated/AccessRuleTests.java | 14 +++++++------- .../generated/AssociatedWorkspaceTests.java | 2 +- .../generated/ManagedServiceIdentityTests.java | 2 +- ...rkSecurityPerimeterConfigurationInnerTests.java | 8 ++++---- ...urityPerimeterConfigurationListResultTests.java | 12 ++++++------ ...urityPerimeterConfigurationPropertiesTests.java | 8 ++++---- .../generated/NetworkSecurityPerimeterTests.java | 8 ++++---- .../generated/NetworkSecurityProfileTests.java | 14 +++++++------- .../ProvisioningIssuePropertiesTests.java | 2 +- .../generated/RuleDefinitionTests.java | 5 ++++- .../generated/UserAssignedIdentityTests.java | 2 +- .../WorkspacesGetNspWithResponseMockTests.java | 4 ++-- .../generated/WorkspacesListNspMockTests.java | 4 ++-- 21 files changed, 75 insertions(+), 59 deletions(-) diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index 68683ff49c50..aaf7a9f2613b 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -307,7 +307,7 @@ com.azure.resourcemanager:azure-resourcemanager-relay;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-costmanagement;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-recoveryservices;1.5.0;1.6.0 com.azure.resourcemanager:azure-resourcemanager-kusto;1.2.0;1.3.0-beta.1 -com.azure.resourcemanager:azure-resourcemanager-loganalytics;2.0.0;2.1.0-beta.1 +com.azure.resourcemanager:azure-resourcemanager-loganalytics;2.0.0;2.1.0 com.azure.resourcemanager:azure-resourcemanager-eventgrid;1.2.0;1.3.0-beta.2 com.azure.resourcemanager:azure-resourcemanager-healthbot;1.1.0;1.2.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-confluent;1.2.0;1.3.0-beta.1 diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md b/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md index a9d24659a7fb..81ceb2d4eaaf 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md @@ -1,14 +1,14 @@ # Release History -## 2.1.0-beta.1 (Unreleased) +## 2.1.0 (2026-01-05) -### Features Added +- Azure Resource Manager LogAnalytics client library for Java. This package contains Microsoft Azure SDK for LogAnalytics Management SDK. Operational Insights Client. Package tag package-2025-07-01. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). -### Breaking Changes +### Features Added -### Bugs Fixed +#### `models.RuleDefinition` was modified -### Other Changes +* `withDestinationTable(java.lang.String)` was added ## 2.0.0 (2025-12-22) diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/README.md b/sdk/loganalytics/azure-resourcemanager-loganalytics/README.md index 2d6a5400ad82..93f9f6139e3f 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/README.md +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/README.md @@ -32,7 +32,7 @@ Various documentation is available to help you get started com.azure.resourcemanager azure-resourcemanager-loganalytics - 2.0.0 + 2.1.0 ``` [//]: # ({x-version-update-end}) diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/SAMPLE.md b/sdk/loganalytics/azure-resourcemanager-loganalytics/SAMPLE.md index b42d29de4b1f..794a73c07638 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/SAMPLE.md +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/SAMPLE.md @@ -1798,7 +1798,8 @@ public final class SummaryLogsOperationCreateOrUpdateSamples { .withRuleDefinition(new RuleDefinition().withQuery("MyTable_CL") .withBinSize(180) .withBinDelay(10) - .withBinStartTime(OffsetDateTime.parse("2020-02-03T04:05:06Z"))) + .withBinStartTime(OffsetDateTime.parse("2020-02-03T04:05:06Z")) + .withDestinationTable("MyDestinationTable_CL")) .create(); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml b/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml index ea4331971cab..087d76484f9e 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml @@ -14,7 +14,7 @@ com.azure.resourcemanager azure-resourcemanager-loganalytics - 2.1.0-beta.1 + 2.1.0 jar Microsoft Azure SDK for LogAnalytics Management @@ -45,7 +45,6 @@ UTF-8 0 0 - true diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/RuleDefinition.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/RuleDefinition.java index aa6a607c3036..e75c4689d31c 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/RuleDefinition.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/main/java/com/azure/resourcemanager/loganalytics/models/RuleDefinition.java @@ -164,6 +164,17 @@ public String destinationTable() { return this.destinationTable; } + /** + * Set the destinationTable property: The destination table used for the Summary rule results. + * + * @param destinationTable the destinationTable value to set. + * @return the RuleDefinition object itself. + */ + public RuleDefinition withDestinationTable(String destinationTable) { + this.destinationTable = destinationTable; + return this; + } + /** * Validates the instance. * @@ -184,6 +195,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStringField("binStartTime", this.binStartTime == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.binStartTime)); jsonWriter.writeStringField("timeSelector", this.timeSelector == null ? null : this.timeSelector.toString()); + jsonWriter.writeStringField("destinationTable", this.destinationTable); return jsonWriter.writeEndObject(); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationCreateOrUpdateSamples.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationCreateOrUpdateSamples.java index b902ab163ad7..540d72ef73fe 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationCreateOrUpdateSamples.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/samples/java/com/azure/resourcemanager/loganalytics/generated/SummaryLogsOperationCreateOrUpdateSamples.java @@ -30,7 +30,8 @@ public static void summaryLogsUpsert(com.azure.resourcemanager.loganalytics.LogA .withRuleDefinition(new RuleDefinition().withQuery("MyTable_CL") .withBinSize(180) .withBinDelay(10) - .withBinStartTime(OffsetDateTime.parse("2020-02-03T04:05:06Z"))) + .withBinStartTime(OffsetDateTime.parse("2020-02-03T04:05:06Z")) + .withDestinationTable("MyDestinationTable_CL")) .create(); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRulePropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRulePropertiesTests.java index ef4918aed685..7a5c3b15c1a5 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRulePropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRulePropertiesTests.java @@ -17,13 +17,13 @@ public final class AccessRulePropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { AccessRuleProperties model = BinaryData.fromString( - "{\"direction\":\"Outbound\",\"addressPrefixes\":[\"ywuhpsvfuur\",\"tlwexxwlalniexz\",\"rzpgep\"],\"subscriptions\":[{\"id\":\"bwwpgdakchzy\"}],\"networkSecurityPerimeters\":[{\"id\":\"q\",\"perimeterGuid\":\"93bc26fc-f9fb-4e69-9852-158903792b58\",\"location\":\"cxkjibnxmysuxswq\"},{\"id\":\"tvlwijpsttexoq\",\"perimeterGuid\":\"4eded75f-0555-44c1-944a-0d0074ddf66e\",\"location\":\"cyyufmh\"},{\"id\":\"nc\",\"perimeterGuid\":\"344e5ead-a6e5-4329-9351-1a3ed62f4f98\",\"location\":\"qspkcdqzhlctd\"},{\"id\":\"nqndyfpchrqbn\",\"perimeterGuid\":\"de737e0c-b524-425d-b66b-095fab635f9c\",\"location\":\"cgegydcwbo\"}],\"fullyQualifiedDomainNames\":[\"mvqqolih\"],\"emailAddresses\":[\"iouaubrjt\",\"oq\",\"fuojrngif\"],\"phoneNumbers\":[\"pasccbi\"]}") + "{\"direction\":\"Outbound\",\"addressPrefixes\":[\"ywuhpsvfuur\",\"tlwexxwlalniexz\",\"rzpgep\"],\"subscriptions\":[{\"id\":\"bwwpgdakchzy\"}],\"networkSecurityPerimeters\":[{\"id\":\"q\",\"perimeterGuid\":\"fcdf021f-cddf-4ed2-9e35-35a95af5df26\",\"location\":\"cxkjibnxmysuxswq\"},{\"id\":\"tvlwijpsttexoq\",\"perimeterGuid\":\"8237a725-6bb9-4eb9-986a-ba9c33d7a075\",\"location\":\"cyyufmh\"},{\"id\":\"nc\",\"perimeterGuid\":\"4afd3e24-43f2-4eb4-95b1-9cda16e7448c\",\"location\":\"qspkcdqzhlctd\"},{\"id\":\"nqndyfpchrqbn\",\"perimeterGuid\":\"c5688b78-39bc-4c74-bbff-74cd364f3c29\",\"location\":\"cgegydcwbo\"}],\"fullyQualifiedDomainNames\":[\"mvqqolih\"],\"emailAddresses\":[\"iouaubrjt\",\"oq\",\"fuojrngif\"],\"phoneNumbers\":[\"pasccbi\"]}") .toObject(AccessRuleProperties.class); Assertions.assertEquals(AccessRuleDirection.OUTBOUND, model.direction()); Assertions.assertEquals("ywuhpsvfuur", model.addressPrefixes().get(0)); Assertions.assertEquals("bwwpgdakchzy", model.subscriptions().get(0).id()); Assertions.assertEquals("q", model.networkSecurityPerimeters().get(0).id()); - Assertions.assertEquals(UUID.fromString("93bc26fc-f9fb-4e69-9852-158903792b58"), + Assertions.assertEquals(UUID.fromString("fcdf021f-cddf-4ed2-9e35-35a95af5df26"), model.networkSecurityPerimeters().get(0).perimeterGuid()); Assertions.assertEquals("cxkjibnxmysuxswq", model.networkSecurityPerimeters().get(0).location()); Assertions.assertEquals("mvqqolih", model.fullyQualifiedDomainNames().get(0)); @@ -38,16 +38,16 @@ public void testSerialize() throws Exception { .withSubscriptions(Arrays.asList(new AccessRulePropertiesSubscriptionsItem().withId("bwwpgdakchzy"))) .withNetworkSecurityPerimeters(Arrays.asList( new NetworkSecurityPerimeter().withId("q") - .withPerimeterGuid(UUID.fromString("93bc26fc-f9fb-4e69-9852-158903792b58")) + .withPerimeterGuid(UUID.fromString("fcdf021f-cddf-4ed2-9e35-35a95af5df26")) .withLocation("cxkjibnxmysuxswq"), new NetworkSecurityPerimeter().withId("tvlwijpsttexoq") - .withPerimeterGuid(UUID.fromString("4eded75f-0555-44c1-944a-0d0074ddf66e")) + .withPerimeterGuid(UUID.fromString("8237a725-6bb9-4eb9-986a-ba9c33d7a075")) .withLocation("cyyufmh"), new NetworkSecurityPerimeter().withId("nc") - .withPerimeterGuid(UUID.fromString("344e5ead-a6e5-4329-9351-1a3ed62f4f98")) + .withPerimeterGuid(UUID.fromString("4afd3e24-43f2-4eb4-95b1-9cda16e7448c")) .withLocation("qspkcdqzhlctd"), new NetworkSecurityPerimeter().withId("nqndyfpchrqbn") - .withPerimeterGuid(UUID.fromString("de737e0c-b524-425d-b66b-095fab635f9c")) + .withPerimeterGuid(UUID.fromString("c5688b78-39bc-4c74-bbff-74cd364f3c29")) .withLocation("cgegydcwbo"))) .withFullyQualifiedDomainNames(Arrays.asList("mvqqolih")) .withEmailAddresses(Arrays.asList("iouaubrjt", "oq", "fuojrngif")) @@ -57,7 +57,7 @@ public void testSerialize() throws Exception { Assertions.assertEquals("ywuhpsvfuur", model.addressPrefixes().get(0)); Assertions.assertEquals("bwwpgdakchzy", model.subscriptions().get(0).id()); Assertions.assertEquals("q", model.networkSecurityPerimeters().get(0).id()); - Assertions.assertEquals(UUID.fromString("93bc26fc-f9fb-4e69-9852-158903792b58"), + Assertions.assertEquals(UUID.fromString("fcdf021f-cddf-4ed2-9e35-35a95af5df26"), model.networkSecurityPerimeters().get(0).perimeterGuid()); Assertions.assertEquals("cxkjibnxmysuxswq", model.networkSecurityPerimeters().get(0).location()); Assertions.assertEquals("mvqqolih", model.fullyQualifiedDomainNames().get(0)); diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRuleTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRuleTests.java index 3bf48de73d63..7627bb861e93 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRuleTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AccessRuleTests.java @@ -18,14 +18,14 @@ public final class AccessRuleTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { AccessRule model = BinaryData.fromString( - "{\"name\":\"yrxpdlcgqls\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"rddga\",\"quhiosrsjuivf\",\"disyirnxz\",\"czexrxzbujrtrhqv\"],\"subscriptions\":[{\"id\":\"khgn\"}],\"networkSecurityPerimeters\":[{\"id\":\"nzlrpiqywncvjt\",\"perimeterGuid\":\"da835f74-0b91-40ea-b2cb-eb01d99bf24d\",\"location\":\"ofizehtdhgbj\"},{\"id\":\"reljeamur\",\"perimeterGuid\":\"214214b7-277e-49e9-9256-f50f7ae9cacc\",\"location\":\"lovuana\"},{\"id\":\"cxlpmjerb\",\"perimeterGuid\":\"3dbe07f2-7712-4b46-8c7a-50c7f90f2469\",\"location\":\"lvidizozs\"},{\"id\":\"ccxjm\",\"perimeterGuid\":\"86b2dc0b-6721-48cf-9996-5475b5828c29\",\"location\":\"dgnwncypuuwwlt\"}],\"fullyQualifiedDomainNames\":[\"jctzenkei\",\"zzhmkd\",\"svflyhbxcudch\"],\"emailAddresses\":[\"rb\",\"ldforobwj\",\"vizbfhfo\"],\"phoneNumbers\":[\"cqpbtuo\",\"xesz\",\"bbelawumuaslzk\",\"rrwoycqucwyhahn\"]}}") + "{\"name\":\"yrxpdlcgqls\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"rddga\",\"quhiosrsjuivf\",\"disyirnxz\",\"czexrxzbujrtrhqv\"],\"subscriptions\":[{\"id\":\"khgn\"}],\"networkSecurityPerimeters\":[{\"id\":\"nzlrpiqywncvjt\",\"perimeterGuid\":\"bbdc99ed-04bf-44a9-bcce-e0e5e32f2675\",\"location\":\"ofizehtdhgbj\"},{\"id\":\"reljeamur\",\"perimeterGuid\":\"35ed2012-51db-4e82-9308-ff8bd4f8b868\",\"location\":\"lovuana\"},{\"id\":\"cxlpmjerb\",\"perimeterGuid\":\"8a369177-ebd3-4583-b465-eafb572e3f34\",\"location\":\"lvidizozs\"},{\"id\":\"ccxjm\",\"perimeterGuid\":\"6b1215e4-8788-4ec0-9135-19bbe112ee85\",\"location\":\"dgnwncypuuwwlt\"}],\"fullyQualifiedDomainNames\":[\"jctzenkei\",\"zzhmkd\",\"svflyhbxcudch\"],\"emailAddresses\":[\"rb\",\"ldforobwj\",\"vizbfhfo\"],\"phoneNumbers\":[\"cqpbtuo\",\"xesz\",\"bbelawumuaslzk\",\"rrwoycqucwyhahn\"]}}") .toObject(AccessRule.class); Assertions.assertEquals("yrxpdlcgqls", model.name()); Assertions.assertEquals(AccessRuleDirection.OUTBOUND, model.properties().direction()); Assertions.assertEquals("rddga", model.properties().addressPrefixes().get(0)); Assertions.assertEquals("khgn", model.properties().subscriptions().get(0).id()); Assertions.assertEquals("nzlrpiqywncvjt", model.properties().networkSecurityPerimeters().get(0).id()); - Assertions.assertEquals(UUID.fromString("da835f74-0b91-40ea-b2cb-eb01d99bf24d"), + Assertions.assertEquals(UUID.fromString("bbdc99ed-04bf-44a9-bcce-e0e5e32f2675"), model.properties().networkSecurityPerimeters().get(0).perimeterGuid()); Assertions.assertEquals("ofizehtdhgbj", model.properties().networkSecurityPerimeters().get(0).location()); Assertions.assertEquals("jctzenkei", model.properties().fullyQualifiedDomainNames().get(0)); @@ -41,16 +41,16 @@ public void testSerialize() throws Exception { .withSubscriptions(Arrays.asList(new AccessRulePropertiesSubscriptionsItem().withId("khgn"))) .withNetworkSecurityPerimeters(Arrays.asList( new NetworkSecurityPerimeter().withId("nzlrpiqywncvjt") - .withPerimeterGuid(UUID.fromString("da835f74-0b91-40ea-b2cb-eb01d99bf24d")) + .withPerimeterGuid(UUID.fromString("bbdc99ed-04bf-44a9-bcce-e0e5e32f2675")) .withLocation("ofizehtdhgbj"), new NetworkSecurityPerimeter().withId("reljeamur") - .withPerimeterGuid(UUID.fromString("214214b7-277e-49e9-9256-f50f7ae9cacc")) + .withPerimeterGuid(UUID.fromString("35ed2012-51db-4e82-9308-ff8bd4f8b868")) .withLocation("lovuana"), new NetworkSecurityPerimeter().withId("cxlpmjerb") - .withPerimeterGuid(UUID.fromString("3dbe07f2-7712-4b46-8c7a-50c7f90f2469")) + .withPerimeterGuid(UUID.fromString("8a369177-ebd3-4583-b465-eafb572e3f34")) .withLocation("lvidizozs"), new NetworkSecurityPerimeter().withId("ccxjm") - .withPerimeterGuid(UUID.fromString("86b2dc0b-6721-48cf-9996-5475b5828c29")) + .withPerimeterGuid(UUID.fromString("6b1215e4-8788-4ec0-9135-19bbe112ee85")) .withLocation("dgnwncypuuwwlt"))) .withFullyQualifiedDomainNames(Arrays.asList("jctzenkei", "zzhmkd", "svflyhbxcudch")) .withEmailAddresses(Arrays.asList("rb", "ldforobwj", "vizbfhfo")) @@ -61,7 +61,7 @@ public void testSerialize() throws Exception { Assertions.assertEquals("rddga", model.properties().addressPrefixes().get(0)); Assertions.assertEquals("khgn", model.properties().subscriptions().get(0).id()); Assertions.assertEquals("nzlrpiqywncvjt", model.properties().networkSecurityPerimeters().get(0).id()); - Assertions.assertEquals(UUID.fromString("da835f74-0b91-40ea-b2cb-eb01d99bf24d"), + Assertions.assertEquals(UUID.fromString("bbdc99ed-04bf-44a9-bcce-e0e5e32f2675"), model.properties().networkSecurityPerimeters().get(0).perimeterGuid()); Assertions.assertEquals("ofizehtdhgbj", model.properties().networkSecurityPerimeters().get(0).location()); Assertions.assertEquals("jctzenkei", model.properties().fullyQualifiedDomainNames().get(0)); diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AssociatedWorkspaceTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AssociatedWorkspaceTests.java index 76f9fa64d04b..6ef22fcc5837 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AssociatedWorkspaceTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/AssociatedWorkspaceTests.java @@ -11,7 +11,7 @@ public final class AssociatedWorkspaceTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { AssociatedWorkspace model = BinaryData.fromString( - "{\"workspaceId\":\"a86d2e6d-74b6-4e05-a0b9-c41d1cdb673b\",\"workspaceName\":\"cqhsm\",\"resourceId\":\"rkdtmlxh\",\"associateDate\":\"2021-09-14T21:41:32Z\"}") + "{\"workspaceId\":\"d4467277-9932-4ff4-9713-ca5858c7d9fc\",\"workspaceName\":\"cqhsm\",\"resourceId\":\"rkdtmlxh\",\"associateDate\":\"2021-09-14T21:41:32Z\"}") .toObject(AssociatedWorkspace.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagedServiceIdentityTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagedServiceIdentityTests.java index ade4f7073fbe..0d55022b9927 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagedServiceIdentityTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ManagedServiceIdentityTests.java @@ -16,7 +16,7 @@ public final class ManagedServiceIdentityTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { ManagedServiceIdentity model = BinaryData.fromString( - "{\"principalId\":\"4f489df3-8016-476b-8e91-c04b1f58e415\",\"tenantId\":\"42e608e0-f5a7-4847-a317-9f231b68adfa\",\"type\":\"SystemAssigned\",\"userAssignedIdentities\":{\"f\":{\"principalId\":\"e3f04b40-47a8-4323-8155-b654561a6e5d\",\"clientId\":\"ad28cede-46a0-4859-b5a6-fd978dadf090\"},\"rvktsi\":{\"principalId\":\"9b2c09be-ae3e-489c-a76a-522e98790141\",\"clientId\":\"c6139a3e-11c3-4025-b8af-8c1aba50601f\"},\"ocipaouajpsqucm\":{\"principalId\":\"a3b1ce65-9f5a-471b-b615-d8104f9cf738\",\"clientId\":\"b61166de-704d-4a8d-85a3-a06d54506119\"}}}") + "{\"principalId\":\"f80856e4-8dd6-4dcb-a8e6-9e199e7016b5\",\"tenantId\":\"50c95719-87cb-4144-a84e-fead5df80792\",\"type\":\"SystemAssigned\",\"userAssignedIdentities\":{\"f\":{\"principalId\":\"6b97a81c-8a15-43bb-980b-543e3276cc55\",\"clientId\":\"87125785-d13b-4908-bbb7-f7be7e48f54c\"},\"rvktsi\":{\"principalId\":\"31ca72c9-7606-4d97-bce6-ed7144757fe3\",\"clientId\":\"dfab8ca2-46b9-43d2-a899-9e1ad2f128e9\"},\"ocipaouajpsqucm\":{\"principalId\":\"9e6a81ea-e769-4d67-a5a0-184e9029ac3a\",\"clientId\":\"f749d11d-d88e-464b-9e82-1fa51f02e65f\"}}}") .toObject(ManagedServiceIdentity.class); Assertions.assertEquals(ManagedServiceIdentityType.SYSTEM_ASSIGNED, model.type()); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationInnerTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationInnerTests.java index a85ef70a72ba..67d4c726b26b 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationInnerTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationInnerTests.java @@ -23,10 +23,10 @@ public final class NetworkSecurityPerimeterConfigurationInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { NetworkSecurityPerimeterConfigurationInner model = BinaryData.fromString( - "{\"properties\":{\"provisioningState\":\"Failed\",\"provisioningIssues\":[{\"name\":\"iglaecx\",\"properties\":{\"issueType\":\"ConfigurationPropagationFailure\",\"severity\":\"Warning\",\"description\":\"pvz\",\"suggestedResourceIds\":[\"t\",\"ld\"],\"suggestedAccessRules\":[{},{},{}]}}],\"networkSecurityPerimeter\":{\"id\":\"irclnpk\",\"perimeterGuid\":\"fa0916ff-3ecd-4956-b4d5-c41b1b8fe746\",\"location\":\"yzriykhy\"},\"resourceAssociation\":{\"name\":\"vjlboxqvk\",\"accessMode\":\"Enforced\"},\"profile\":{\"name\":\"omdynhdwdigum\",\"accessRulesVersion\":1924046982,\"accessRules\":[{\"name\":\"zzp\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"dz\",\"ezwwv\"],\"subscriptions\":[{},{},{}],\"networkSecurityPerimeters\":[{},{}],\"fullyQualifiedDomainNames\":[\"fonkphhqyikvyla\",\"yavluwmncstt\",\"jfybvpoekrsgsgb\",\"huzqgn\"],\"emailAddresses\":[\"kynscliqhzv\",\"xnkomtkubo\",\"ppnvdxz\"],\"phoneNumbers\":[\"hfrbbc\",\"vqagtltdhlf\",\"qojpy\"]}},{\"name\":\"gtrd\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"zsdymbrnysuxmpra\",\"wgck\"],\"subscriptions\":[{},{},{},{}],\"networkSecurityPerimeters\":[{}],\"fullyQualifiedDomainNames\":[\"ffwafq\",\"oudaspavehhrvk\",\"unzo\",\"ud\"],\"emailAddresses\":[\"gkmoyxcdyuibhmfd\"],\"phoneNumbers\":[\"ydvfvfcjnae\",\"isrvhm\"]}},{\"name\":\"r\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"cvwmzhwplefa\",\"vxilcbt\",\"nhnzeyqxt\"],\"subscriptions\":[{},{},{}],\"networkSecurityPerimeters\":[{},{},{}],\"fullyQualifiedDomainNames\":[\"hycav\",\"dggxdbeesmi\",\"knlrariaawiuagy\",\"wqfbylyrfgiagt\"],\"emailAddresses\":[\"ocqwogfnzjvus\",\"zldmozuxy\",\"fsbtkad\",\"ysownbtgkbug\"],\"phoneNumbers\":[\"cto\",\"cmisofie\",\"pe\"]}}],\"diagnosticSettingsVersion\":419692653,\"enabledLogCategories\":[\"dh\",\"u\"]}},\"id\":\"cp\",\"name\":\"cwkhihi\",\"type\":\"lhzdsqtzb\"}") + "{\"properties\":{\"provisioningState\":\"Failed\",\"provisioningIssues\":[{\"name\":\"iglaecx\",\"properties\":{\"issueType\":\"ConfigurationPropagationFailure\",\"severity\":\"Warning\",\"description\":\"pvz\",\"suggestedResourceIds\":[\"t\",\"ld\"],\"suggestedAccessRules\":[{},{},{}]}}],\"networkSecurityPerimeter\":{\"id\":\"irclnpk\",\"perimeterGuid\":\"fd6fe512-283f-438e-a8dc-e4e919074990\",\"location\":\"yzriykhy\"},\"resourceAssociation\":{\"name\":\"vjlboxqvk\",\"accessMode\":\"Enforced\"},\"profile\":{\"name\":\"omdynhdwdigum\",\"accessRulesVersion\":1924046982,\"accessRules\":[{\"name\":\"zzp\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"dz\",\"ezwwv\"],\"subscriptions\":[{},{},{}],\"networkSecurityPerimeters\":[{},{}],\"fullyQualifiedDomainNames\":[\"fonkphhqyikvyla\",\"yavluwmncstt\",\"jfybvpoekrsgsgb\",\"huzqgn\"],\"emailAddresses\":[\"kynscliqhzv\",\"xnkomtkubo\",\"ppnvdxz\"],\"phoneNumbers\":[\"hfrbbc\",\"vqagtltdhlf\",\"qojpy\"]}},{\"name\":\"gtrd\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"zsdymbrnysuxmpra\",\"wgck\"],\"subscriptions\":[{},{},{},{}],\"networkSecurityPerimeters\":[{}],\"fullyQualifiedDomainNames\":[\"ffwafq\",\"oudaspavehhrvk\",\"unzo\",\"ud\"],\"emailAddresses\":[\"gkmoyxcdyuibhmfd\"],\"phoneNumbers\":[\"ydvfvfcjnae\",\"isrvhm\"]}},{\"name\":\"r\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"cvwmzhwplefa\",\"vxilcbt\",\"nhnzeyqxt\"],\"subscriptions\":[{},{},{}],\"networkSecurityPerimeters\":[{},{},{}],\"fullyQualifiedDomainNames\":[\"hycav\",\"dggxdbeesmi\",\"knlrariaawiuagy\",\"wqfbylyrfgiagt\"],\"emailAddresses\":[\"ocqwogfnzjvus\",\"zldmozuxy\",\"fsbtkad\",\"ysownbtgkbug\"],\"phoneNumbers\":[\"cto\",\"cmisofie\",\"pe\"]}}],\"diagnosticSettingsVersion\":419692653,\"enabledLogCategories\":[\"dh\",\"u\"]}},\"id\":\"cp\",\"name\":\"cwkhihi\",\"type\":\"lhzdsqtzb\"}") .toObject(NetworkSecurityPerimeterConfigurationInner.class); Assertions.assertEquals("irclnpk", model.properties().networkSecurityPerimeter().id()); - Assertions.assertEquals(UUID.fromString("fa0916ff-3ecd-4956-b4d5-c41b1b8fe746"), + Assertions.assertEquals(UUID.fromString("fd6fe512-283f-438e-a8dc-e4e919074990"), model.properties().networkSecurityPerimeter().perimeterGuid()); Assertions.assertEquals("yzriykhy", model.properties().networkSecurityPerimeter().location()); Assertions.assertEquals("vjlboxqvk", model.properties().resourceAssociation().name()); @@ -54,7 +54,7 @@ public void testSerialize() throws Exception { NetworkSecurityPerimeterConfigurationInner model = new NetworkSecurityPerimeterConfigurationInner() .withProperties(new NetworkSecurityPerimeterConfigurationProperties() .withNetworkSecurityPerimeter(new NetworkSecurityPerimeter().withId("irclnpk") - .withPerimeterGuid(UUID.fromString("fa0916ff-3ecd-4956-b4d5-c41b1b8fe746")) + .withPerimeterGuid(UUID.fromString("fd6fe512-283f-438e-a8dc-e4e919074990")) .withLocation("yzriykhy")) .withResourceAssociation(new ResourceAssociation().withName("vjlboxqvk") .withAccessMode(ResourceAssociationAccessMode.ENFORCED)) @@ -101,7 +101,7 @@ public void testSerialize() throws Exception { .withEnabledLogCategories(Arrays.asList("dh", "u")))); model = BinaryData.fromObject(model).toObject(NetworkSecurityPerimeterConfigurationInner.class); Assertions.assertEquals("irclnpk", model.properties().networkSecurityPerimeter().id()); - Assertions.assertEquals(UUID.fromString("fa0916ff-3ecd-4956-b4d5-c41b1b8fe746"), + Assertions.assertEquals(UUID.fromString("fd6fe512-283f-438e-a8dc-e4e919074990"), model.properties().networkSecurityPerimeter().perimeterGuid()); Assertions.assertEquals("yzriykhy", model.properties().networkSecurityPerimeter().location()); Assertions.assertEquals("vjlboxqvk", model.properties().resourceAssociation().name()); diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationListResultTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationListResultTests.java index b42919cd7469..8f6c8ee1048d 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationListResultTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationListResultTests.java @@ -21,10 +21,10 @@ public final class NetworkSecurityPerimeterConfigurationListResultTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { NetworkSecurityPerimeterConfigurationListResult model = BinaryData.fromString( - "{\"value\":[{\"properties\":{\"provisioningState\":\"Creating\",\"provisioningIssues\":[{\"name\":\"tcyohpfkyrk\",\"properties\":{}},{\"name\":\"giogsjkmnwqjno\",\"properties\":{}},{\"name\":\"yhddvia\",\"properties\":{}}],\"networkSecurityPerimeter\":{\"id\":\"n\",\"perimeterGuid\":\"e47dd61c-072b-4ddc-bb17-201fe9f3719e\",\"location\":\"fpmvmemfnczd\"},\"resourceAssociation\":{\"name\":\"b\",\"accessMode\":\"Learning\"},\"profile\":{\"name\":\"lchpodbzevwrdn\",\"accessRulesVersion\":1073149595,\"accessRules\":[{}],\"diagnosticSettingsVersion\":1934709471,\"enabledLogCategories\":[\"swsmys\",\"uluqypfc\",\"lerchpq\"]}},\"id\":\"f\",\"name\":\"jbabwidf\",\"type\":\"xsspuunnoxyhk\"},{\"properties\":{\"provisioningState\":\"Updating\",\"provisioningIssues\":[{\"name\":\"hp\",\"properties\":{}},{\"name\":\"qcaaewdaomdjvl\",\"properties\":{}}],\"networkSecurityPerimeter\":{\"id\":\"kzbrmsgeivsiy\",\"perimeterGuid\":\"2bb25110-24ce-4c40-b14b-d1550a07934e\",\"location\":\"dncj\"},\"resourceAssociation\":{\"name\":\"nbzoggcu\",\"accessMode\":\"Audit\"},\"profile\":{\"name\":\"y\",\"accessRulesVersion\":1152319383,\"accessRules\":[{},{}],\"diagnosticSettingsVersion\":902332511,\"enabledLogCategories\":[\"pnylb\",\"uajlyj\"]}},\"id\":\"vofqzhvfc\",\"name\":\"byfmowuxr\",\"type\":\"jpvd\"},{\"properties\":{\"provisioningState\":\"Succeeded\",\"provisioningIssues\":[{\"name\":\"vwzjbhyz\",\"properties\":{}},{\"name\":\"rkambt\",\"properties\":{}},{\"name\":\"gvmnvuqeq\",\"properties\":{}},{\"name\":\"spastjbkkdmf\",\"properties\":{}}],\"networkSecurityPerimeter\":{\"id\":\"tmjlx\",\"perimeterGuid\":\"3d5425f3-7ad7-44f9-97df-905f3d3bc5fc\",\"location\":\"lozapeewchpxlk\"},\"resourceAssociation\":{\"name\":\"uziycsl\",\"accessMode\":\"Audit\"},\"profile\":{\"name\":\"ztcktyh\",\"accessRulesVersion\":400720959,\"accessRules\":[{},{}],\"diagnosticSettingsVersion\":1002446412,\"enabledLogCategories\":[\"lwmmrqzzrrjv\"]}},\"id\":\"lydzgk\",\"name\":\"vqeevtoep\",\"type\":\"yutnwytpzdmov\"}],\"nextLink\":\"fvaawzqa\"}") + "{\"value\":[{\"properties\":{\"provisioningState\":\"Creating\",\"provisioningIssues\":[{\"name\":\"tcyohpfkyrk\",\"properties\":{}},{\"name\":\"giogsjkmnwqjno\",\"properties\":{}},{\"name\":\"yhddvia\",\"properties\":{}}],\"networkSecurityPerimeter\":{\"id\":\"n\",\"perimeterGuid\":\"2b8bcab4-d52c-4c6c-8613-5d5653a5376c\",\"location\":\"fpmvmemfnczd\"},\"resourceAssociation\":{\"name\":\"b\",\"accessMode\":\"Learning\"},\"profile\":{\"name\":\"lchpodbzevwrdn\",\"accessRulesVersion\":1073149595,\"accessRules\":[{}],\"diagnosticSettingsVersion\":1934709471,\"enabledLogCategories\":[\"swsmys\",\"uluqypfc\",\"lerchpq\"]}},\"id\":\"f\",\"name\":\"jbabwidf\",\"type\":\"xsspuunnoxyhk\"},{\"properties\":{\"provisioningState\":\"Updating\",\"provisioningIssues\":[{\"name\":\"hp\",\"properties\":{}},{\"name\":\"qcaaewdaomdjvl\",\"properties\":{}}],\"networkSecurityPerimeter\":{\"id\":\"kzbrmsgeivsiy\",\"perimeterGuid\":\"642c3ce5-05d9-4877-a0e0-b37d8749fb12\",\"location\":\"dncj\"},\"resourceAssociation\":{\"name\":\"nbzoggcu\",\"accessMode\":\"Audit\"},\"profile\":{\"name\":\"y\",\"accessRulesVersion\":1152319383,\"accessRules\":[{},{}],\"diagnosticSettingsVersion\":902332511,\"enabledLogCategories\":[\"pnylb\",\"uajlyj\"]}},\"id\":\"vofqzhvfc\",\"name\":\"byfmowuxr\",\"type\":\"jpvd\"},{\"properties\":{\"provisioningState\":\"Succeeded\",\"provisioningIssues\":[{\"name\":\"vwzjbhyz\",\"properties\":{}},{\"name\":\"rkambt\",\"properties\":{}},{\"name\":\"gvmnvuqeq\",\"properties\":{}},{\"name\":\"spastjbkkdmf\",\"properties\":{}}],\"networkSecurityPerimeter\":{\"id\":\"tmjlx\",\"perimeterGuid\":\"4aab6725-cbdf-4862-9d2c-0eb6e5ba1978\",\"location\":\"lozapeewchpxlk\"},\"resourceAssociation\":{\"name\":\"uziycsl\",\"accessMode\":\"Audit\"},\"profile\":{\"name\":\"ztcktyh\",\"accessRulesVersion\":400720959,\"accessRules\":[{},{}],\"diagnosticSettingsVersion\":1002446412,\"enabledLogCategories\":[\"lwmmrqzzrrjv\"]}},\"id\":\"lydzgk\",\"name\":\"vqeevtoep\",\"type\":\"yutnwytpzdmov\"}],\"nextLink\":\"fvaawzqa\"}") .toObject(NetworkSecurityPerimeterConfigurationListResult.class); Assertions.assertEquals("n", model.value().get(0).properties().networkSecurityPerimeter().id()); - Assertions.assertEquals(UUID.fromString("e47dd61c-072b-4ddc-bb17-201fe9f3719e"), + Assertions.assertEquals(UUID.fromString("2b8bcab4-d52c-4c6c-8613-5d5653a5376c"), model.value().get(0).properties().networkSecurityPerimeter().perimeterGuid()); Assertions.assertEquals("fpmvmemfnczd", model.value().get(0).properties().networkSecurityPerimeter().location()); @@ -49,7 +49,7 @@ public void testSerialize() throws Exception { .withProperties( new NetworkSecurityPerimeterConfigurationProperties() .withNetworkSecurityPerimeter(new NetworkSecurityPerimeter().withId("n") - .withPerimeterGuid(UUID.fromString("e47dd61c-072b-4ddc-bb17-201fe9f3719e")) + .withPerimeterGuid(UUID.fromString("2b8bcab4-d52c-4c6c-8613-5d5653a5376c")) .withLocation("fpmvmemfnczd")) .withResourceAssociation(new ResourceAssociation().withName("b") .withAccessMode(ResourceAssociationAccessMode.LEARNING)) @@ -63,7 +63,7 @@ public void testSerialize() throws Exception { new NetworkSecurityPerimeterConfigurationInner() .withProperties(new NetworkSecurityPerimeterConfigurationProperties() .withNetworkSecurityPerimeter(new NetworkSecurityPerimeter().withId("kzbrmsgeivsiy") - .withPerimeterGuid(UUID.fromString("2bb25110-24ce-4c40-b14b-d1550a07934e")) + .withPerimeterGuid(UUID.fromString("642c3ce5-05d9-4877-a0e0-b37d8749fb12")) .withLocation("dncj")) .withResourceAssociation(new ResourceAssociation().withName("nbzoggcu") .withAccessMode(ResourceAssociationAccessMode.AUDIT)) @@ -75,7 +75,7 @@ public void testSerialize() throws Exception { new NetworkSecurityPerimeterConfigurationInner() .withProperties(new NetworkSecurityPerimeterConfigurationProperties() .withNetworkSecurityPerimeter(new NetworkSecurityPerimeter().withId("tmjlx") - .withPerimeterGuid(UUID.fromString("3d5425f3-7ad7-44f9-97df-905f3d3bc5fc")) + .withPerimeterGuid(UUID.fromString("4aab6725-cbdf-4862-9d2c-0eb6e5ba1978")) .withLocation("lozapeewchpxlk")) .withResourceAssociation(new ResourceAssociation().withName("uziycsl") .withAccessMode(ResourceAssociationAccessMode.AUDIT)) @@ -87,7 +87,7 @@ public void testSerialize() throws Exception { .withNextLink("fvaawzqa"); model = BinaryData.fromObject(model).toObject(NetworkSecurityPerimeterConfigurationListResult.class); Assertions.assertEquals("n", model.value().get(0).properties().networkSecurityPerimeter().id()); - Assertions.assertEquals(UUID.fromString("e47dd61c-072b-4ddc-bb17-201fe9f3719e"), + Assertions.assertEquals(UUID.fromString("2b8bcab4-d52c-4c6c-8613-5d5653a5376c"), model.value().get(0).properties().networkSecurityPerimeter().perimeterGuid()); Assertions.assertEquals("fpmvmemfnczd", model.value().get(0).properties().networkSecurityPerimeter().location()); diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationPropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationPropertiesTests.java index 55bd440c1a0d..6560a84e4ac9 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationPropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterConfigurationPropertiesTests.java @@ -22,10 +22,10 @@ public final class NetworkSecurityPerimeterConfigurationPropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { NetworkSecurityPerimeterConfigurationProperties model = BinaryData.fromString( - "{\"provisioningState\":\"Canceled\",\"provisioningIssues\":[{\"name\":\"cjhfgmvecactxmw\",\"properties\":{\"issueType\":\"Unknown\",\"severity\":\"Error\",\"description\":\"luqovekqvg\",\"suggestedResourceIds\":[\"wifzmp\",\"wyivqikf\",\"cvhrfsp\"],\"suggestedAccessRules\":[{\"name\":\"rttikteusqc\",\"properties\":{}}]}}],\"networkSecurityPerimeter\":{\"id\":\"klxubyja\",\"perimeterGuid\":\"144b015c-170a-4060-be36-bdf1b0e5ee4e\",\"location\":\"mfblcqcuubg\"},\"resourceAssociation\":{\"name\":\"rtalmet\",\"accessMode\":\"Enforced\"},\"profile\":{\"name\":\"slqxi\",\"accessRulesVersion\":5802151,\"accessRules\":[{\"name\":\"i\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"xiutcx\",\"pzhyr\"],\"subscriptions\":[{},{},{}],\"networkSecurityPerimeters\":[{}],\"fullyQualifiedDomainNames\":[\"joxslhvnhla\",\"rqnkkzjcjbtr\"],\"emailAddresses\":[\"hvv\",\"brxjjsto\"],\"phoneNumbers\":[\"it\",\"kxzt\",\"oobklftidgfcwq\"]}},{\"name\":\"imaq\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"yhohujswtwkozzwc\",\"lkb\",\"wpfaj\",\"jwltlwtjjgu\"],\"subscriptions\":[{},{}],\"networkSecurityPerimeters\":[{},{},{}],\"fullyQualifiedDomainNames\":[\"vkcdmxzr\",\"oaimlnw\",\"aaomylweazu\"],\"emailAddresses\":[\"ethwwnpjhlfz\",\"wpchwahf\"],\"phoneNumbers\":[\"snfepgfewetwlyx\",\"ncxykxhdjhlimm\",\"cxfhbcporxv\"]}},{\"name\":\"jzh\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"xtgqscjavftjuh\",\"qaz\",\"mtggu\"],\"subscriptions\":[{}],\"networkSecurityPerimeters\":[{}],\"fullyQualifiedDomainNames\":[\"civmmg\",\"f\"],\"emailAddresses\":[\"wrxgkneuvy\",\"nzqodfvpg\"],\"phoneNumbers\":[\"xgsg\",\"p\",\"gzdjtxvzf\",\"bqvgaqv\"]}}],\"diagnosticSettingsVersion\":247476852,\"enabledLogCategories\":[\"qusrdvetnws\",\"tutnwlduycvuzhyr\"]}}") + "{\"provisioningState\":\"Canceled\",\"provisioningIssues\":[{\"name\":\"cjhfgmvecactxmw\",\"properties\":{\"issueType\":\"Unknown\",\"severity\":\"Error\",\"description\":\"luqovekqvg\",\"suggestedResourceIds\":[\"wifzmp\",\"wyivqikf\",\"cvhrfsp\"],\"suggestedAccessRules\":[{\"name\":\"rttikteusqc\",\"properties\":{}}]}}],\"networkSecurityPerimeter\":{\"id\":\"klxubyja\",\"perimeterGuid\":\"930005c2-8dba-4ead-93d7-e4d2e40bd7d2\",\"location\":\"mfblcqcuubg\"},\"resourceAssociation\":{\"name\":\"rtalmet\",\"accessMode\":\"Enforced\"},\"profile\":{\"name\":\"slqxi\",\"accessRulesVersion\":5802151,\"accessRules\":[{\"name\":\"i\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"xiutcx\",\"pzhyr\"],\"subscriptions\":[{},{},{}],\"networkSecurityPerimeters\":[{}],\"fullyQualifiedDomainNames\":[\"joxslhvnhla\",\"rqnkkzjcjbtr\"],\"emailAddresses\":[\"hvv\",\"brxjjsto\"],\"phoneNumbers\":[\"it\",\"kxzt\",\"oobklftidgfcwq\"]}},{\"name\":\"imaq\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"yhohujswtwkozzwc\",\"lkb\",\"wpfaj\",\"jwltlwtjjgu\"],\"subscriptions\":[{},{}],\"networkSecurityPerimeters\":[{},{},{}],\"fullyQualifiedDomainNames\":[\"vkcdmxzr\",\"oaimlnw\",\"aaomylweazu\"],\"emailAddresses\":[\"ethwwnpjhlfz\",\"wpchwahf\"],\"phoneNumbers\":[\"snfepgfewetwlyx\",\"ncxykxhdjhlimm\",\"cxfhbcporxv\"]}},{\"name\":\"jzh\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"xtgqscjavftjuh\",\"qaz\",\"mtggu\"],\"subscriptions\":[{}],\"networkSecurityPerimeters\":[{}],\"fullyQualifiedDomainNames\":[\"civmmg\",\"f\"],\"emailAddresses\":[\"wrxgkneuvy\",\"nzqodfvpg\"],\"phoneNumbers\":[\"xgsg\",\"p\",\"gzdjtxvzf\",\"bqvgaqv\"]}}],\"diagnosticSettingsVersion\":247476852,\"enabledLogCategories\":[\"qusrdvetnws\",\"tutnwlduycvuzhyr\"]}}") .toObject(NetworkSecurityPerimeterConfigurationProperties.class); Assertions.assertEquals("klxubyja", model.networkSecurityPerimeter().id()); - Assertions.assertEquals(UUID.fromString("144b015c-170a-4060-be36-bdf1b0e5ee4e"), + Assertions.assertEquals(UUID.fromString("930005c2-8dba-4ead-93d7-e4d2e40bd7d2"), model.networkSecurityPerimeter().perimeterGuid()); Assertions.assertEquals("mfblcqcuubg", model.networkSecurityPerimeter().location()); Assertions.assertEquals("rtalmet", model.resourceAssociation().name()); @@ -48,7 +48,7 @@ public void testDeserialize() throws Exception { public void testSerialize() throws Exception { NetworkSecurityPerimeterConfigurationProperties model = new NetworkSecurityPerimeterConfigurationProperties() .withNetworkSecurityPerimeter(new NetworkSecurityPerimeter().withId("klxubyja") - .withPerimeterGuid(UUID.fromString("144b015c-170a-4060-be36-bdf1b0e5ee4e")) + .withPerimeterGuid(UUID.fromString("930005c2-8dba-4ead-93d7-e4d2e40bd7d2")) .withLocation("mfblcqcuubg")) .withResourceAssociation( new ResourceAssociation().withName("rtalmet").withAccessMode(ResourceAssociationAccessMode.ENFORCED)) @@ -87,7 +87,7 @@ public void testSerialize() throws Exception { .withEnabledLogCategories(Arrays.asList("qusrdvetnws", "tutnwlduycvuzhyr"))); model = BinaryData.fromObject(model).toObject(NetworkSecurityPerimeterConfigurationProperties.class); Assertions.assertEquals("klxubyja", model.networkSecurityPerimeter().id()); - Assertions.assertEquals(UUID.fromString("144b015c-170a-4060-be36-bdf1b0e5ee4e"), + Assertions.assertEquals(UUID.fromString("930005c2-8dba-4ead-93d7-e4d2e40bd7d2"), model.networkSecurityPerimeter().perimeterGuid()); Assertions.assertEquals("mfblcqcuubg", model.networkSecurityPerimeter().location()); Assertions.assertEquals("rtalmet", model.resourceAssociation().name()); diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterTests.java index eaa666e46718..b74ca6b42ac2 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityPerimeterTests.java @@ -14,21 +14,21 @@ public final class NetworkSecurityPerimeterTests { public void testDeserialize() throws Exception { NetworkSecurityPerimeter model = BinaryData .fromString( - "{\"id\":\"fdvruz\",\"perimeterGuid\":\"acdb3fe4-f602-47bc-ae5f-06f025c74d7f\",\"location\":\"ojhp\"}") + "{\"id\":\"fdvruz\",\"perimeterGuid\":\"8a6215e5-b5c5-4c47-b2af-537d24ec44e7\",\"location\":\"ojhp\"}") .toObject(NetworkSecurityPerimeter.class); Assertions.assertEquals("fdvruz", model.id()); - Assertions.assertEquals(UUID.fromString("acdb3fe4-f602-47bc-ae5f-06f025c74d7f"), model.perimeterGuid()); + Assertions.assertEquals(UUID.fromString("8a6215e5-b5c5-4c47-b2af-537d24ec44e7"), model.perimeterGuid()); Assertions.assertEquals("ojhp", model.location()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { NetworkSecurityPerimeter model = new NetworkSecurityPerimeter().withId("fdvruz") - .withPerimeterGuid(UUID.fromString("acdb3fe4-f602-47bc-ae5f-06f025c74d7f")) + .withPerimeterGuid(UUID.fromString("8a6215e5-b5c5-4c47-b2af-537d24ec44e7")) .withLocation("ojhp"); model = BinaryData.fromObject(model).toObject(NetworkSecurityPerimeter.class); Assertions.assertEquals("fdvruz", model.id()); - Assertions.assertEquals(UUID.fromString("acdb3fe4-f602-47bc-ae5f-06f025c74d7f"), model.perimeterGuid()); + Assertions.assertEquals(UUID.fromString("8a6215e5-b5c5-4c47-b2af-537d24ec44e7"), model.perimeterGuid()); Assertions.assertEquals("ojhp", model.location()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityProfileTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityProfileTests.java index 354d5c426ba6..2838b2ae81e1 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityProfileTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/NetworkSecurityProfileTests.java @@ -19,7 +19,7 @@ public final class NetworkSecurityProfileTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { NetworkSecurityProfile model = BinaryData.fromString( - "{\"name\":\"ugeyzihgrkyuiza\",\"accessRulesVersion\":1192399452,\"accessRules\":[{\"name\":\"phojeevyhy\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"zbgomfgbeg\",\"qgleohibetnluank\",\"rfxeeebtij\"],\"subscriptions\":[{\"id\":\"bmqzbqqxlajrnwx\"},{\"id\":\"evehjkuyxoaf\"}],\"networkSecurityPerimeters\":[{\"id\":\"lt\",\"perimeterGuid\":\"cc01bf33-ad8d-4b13-8050-cf28e1d0b1d6\",\"location\":\"yl\"},{\"id\":\"mfgvxirpghriypo\",\"perimeterGuid\":\"01e0c3e3-1aee-4326-9024-494e3ab2d43f\",\"location\":\"hlqhykprlpy\"}],\"fullyQualifiedDomainNames\":[\"ciqdsme\",\"iitdfuxt\"],\"emailAddresses\":[\"iibmi\",\"bnn\",\"stgnl\",\"hnmgixhcm\"],\"phoneNumbers\":[\"qfoudorhcgyy\",\"rotwypundmbxhugc\",\"jkavl\"]}},{\"name\":\"rb\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"tzfjltf\",\"nzcyjtotp\",\"opv\",\"bdb\"],\"subscriptions\":[{\"id\":\"q\"},{\"id\":\"edsvqwthmk\"},{\"id\":\"bcysih\"}],\"networkSecurityPerimeters\":[{\"id\":\"wdhohsdtmcdzsu\",\"perimeterGuid\":\"cc5e625e-91c2-4e53-bd0f-2d47b117e538\",\"location\":\"hdxbzlm\"},{\"id\":\"uapcvhdbevwqqxe\",\"perimeterGuid\":\"6d6bf008-2b16-44a8-84c3-808f6ee860cf\",\"location\":\"onqzinkfkbgbzbow\"}],\"fullyQualifiedDomainNames\":[\"o\"],\"emailAddresses\":[\"mygvkzqkj\",\"eokbze\"],\"phoneNumbers\":[\"rx\",\"czurtlei\",\"q\"]}}],\"diagnosticSettingsVersion\":796775151,\"enabledLogCategories\":[\"zgnzv\"]}") + "{\"name\":\"ugeyzihgrkyuiza\",\"accessRulesVersion\":1192399452,\"accessRules\":[{\"name\":\"phojeevyhy\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"zbgomfgbeg\",\"qgleohibetnluank\",\"rfxeeebtij\"],\"subscriptions\":[{\"id\":\"bmqzbqqxlajrnwx\"},{\"id\":\"evehjkuyxoaf\"}],\"networkSecurityPerimeters\":[{\"id\":\"lt\",\"perimeterGuid\":\"5eee6773-30c2-41ee-8777-049b1ca9b5ca\",\"location\":\"yl\"},{\"id\":\"mfgvxirpghriypo\",\"perimeterGuid\":\"cf775843-639b-4af3-9d9d-173c1d94e988\",\"location\":\"hlqhykprlpy\"}],\"fullyQualifiedDomainNames\":[\"ciqdsme\",\"iitdfuxt\"],\"emailAddresses\":[\"iibmi\",\"bnn\",\"stgnl\",\"hnmgixhcm\"],\"phoneNumbers\":[\"qfoudorhcgyy\",\"rotwypundmbxhugc\",\"jkavl\"]}},{\"name\":\"rb\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"tzfjltf\",\"nzcyjtotp\",\"opv\",\"bdb\"],\"subscriptions\":[{\"id\":\"q\"},{\"id\":\"edsvqwthmk\"},{\"id\":\"bcysih\"}],\"networkSecurityPerimeters\":[{\"id\":\"wdhohsdtmcdzsu\",\"perimeterGuid\":\"b8ed1dac-0f55-475e-b9a4-dc4a83a5ba76\",\"location\":\"hdxbzlm\"},{\"id\":\"uapcvhdbevwqqxe\",\"perimeterGuid\":\"693cdddf-6e03-4e37-84ce-6d575fe9460f\",\"location\":\"onqzinkfkbgbzbow\"}],\"fullyQualifiedDomainNames\":[\"o\"],\"emailAddresses\":[\"mygvkzqkj\",\"eokbze\"],\"phoneNumbers\":[\"rx\",\"czurtlei\",\"q\"]}}],\"diagnosticSettingsVersion\":796775151,\"enabledLogCategories\":[\"zgnzv\"]}") .toObject(NetworkSecurityProfile.class); Assertions.assertEquals("ugeyzihgrkyuiza", model.name()); Assertions.assertEquals(1192399452, model.accessRulesVersion()); @@ -28,7 +28,7 @@ public void testDeserialize() throws Exception { Assertions.assertEquals("zbgomfgbeg", model.accessRules().get(0).properties().addressPrefixes().get(0)); Assertions.assertEquals("bmqzbqqxlajrnwx", model.accessRules().get(0).properties().subscriptions().get(0).id()); Assertions.assertEquals("lt", model.accessRules().get(0).properties().networkSecurityPerimeters().get(0).id()); - Assertions.assertEquals(UUID.fromString("cc01bf33-ad8d-4b13-8050-cf28e1d0b1d6"), + Assertions.assertEquals(UUID.fromString("5eee6773-30c2-41ee-8777-049b1ca9b5ca"), model.accessRules().get(0).properties().networkSecurityPerimeters().get(0).perimeterGuid()); Assertions.assertEquals("yl", model.accessRules().get(0).properties().networkSecurityPerimeters().get(0).location()); @@ -57,11 +57,11 @@ public void testSerialize() throws Exception { Arrays.asList( new NetworkSecurityPerimeter().withId("lt") .withPerimeterGuid( - UUID.fromString("cc01bf33-ad8d-4b13-8050-cf28e1d0b1d6")) + UUID.fromString("5eee6773-30c2-41ee-8777-049b1ca9b5ca")) .withLocation("yl"), new NetworkSecurityPerimeter().withId("mfgvxirpghriypo") .withPerimeterGuid( - UUID.fromString("01e0c3e3-1aee-4326-9024-494e3ab2d43f")) + UUID.fromString("cf775843-639b-4af3-9d9d-173c1d94e988")) .withLocation("hlqhykprlpy"))) .withFullyQualifiedDomainNames(Arrays.asList("ciqdsme", "iitdfuxt")) .withEmailAddresses(Arrays.asList("iibmi", "bnn", "stgnl", "hnmgixhcm")) @@ -77,11 +77,11 @@ public void testSerialize() throws Exception { .withNetworkSecurityPerimeters(Arrays.asList( new NetworkSecurityPerimeter().withId("wdhohsdtmcdzsu") .withPerimeterGuid( - UUID.fromString("cc5e625e-91c2-4e53-bd0f-2d47b117e538")) + UUID.fromString("b8ed1dac-0f55-475e-b9a4-dc4a83a5ba76")) .withLocation("hdxbzlm"), new NetworkSecurityPerimeter().withId("uapcvhdbevwqqxe") .withPerimeterGuid( - UUID.fromString("6d6bf008-2b16-44a8-84c3-808f6ee860cf")) + UUID.fromString("693cdddf-6e03-4e37-84ce-6d575fe9460f")) .withLocation("onqzinkfkbgbzbow"))) .withFullyQualifiedDomainNames(Arrays.asList("o")) .withEmailAddresses(Arrays.asList("mygvkzqkj", "eokbze")) @@ -96,7 +96,7 @@ public void testSerialize() throws Exception { Assertions.assertEquals("zbgomfgbeg", model.accessRules().get(0).properties().addressPrefixes().get(0)); Assertions.assertEquals("bmqzbqqxlajrnwx", model.accessRules().get(0).properties().subscriptions().get(0).id()); Assertions.assertEquals("lt", model.accessRules().get(0).properties().networkSecurityPerimeters().get(0).id()); - Assertions.assertEquals(UUID.fromString("cc01bf33-ad8d-4b13-8050-cf28e1d0b1d6"), + Assertions.assertEquals(UUID.fromString("5eee6773-30c2-41ee-8777-049b1ca9b5ca"), model.accessRules().get(0).properties().networkSecurityPerimeters().get(0).perimeterGuid()); Assertions.assertEquals("yl", model.accessRules().get(0).properties().networkSecurityPerimeters().get(0).location()); diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ProvisioningIssuePropertiesTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ProvisioningIssuePropertiesTests.java index 590d63691346..4b2e70bcacba 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ProvisioningIssuePropertiesTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/ProvisioningIssuePropertiesTests.java @@ -11,7 +11,7 @@ public final class ProvisioningIssuePropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { ProvisioningIssueProperties model = BinaryData.fromString( - "{\"issueType\":\"ConfigurationPropagationFailure\",\"severity\":\"Error\",\"description\":\"jjidjk\",\"suggestedResourceIds\":[\"kyxvxevblbjedn\",\"jlageu\",\"ulxunsmjbnkpp\"],\"suggestedAccessRules\":[{\"name\":\"nlsvxeiz\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"srmffeycxcktpiym\",\"rteeamm\",\"qiekkkzddrt\"],\"subscriptions\":[{\"id\":\"jbmxvavre\"}],\"networkSecurityPerimeters\":[{\"id\":\"svecuijpxtxs\",\"perimeterGuid\":\"adc52fcf-9956-4d7b-b885-5aa059cb79b8\",\"location\":\"rtujwsawddjibab\"},{\"id\":\"ititvtzeexavoxt\",\"perimeterGuid\":\"c8f16ee6-1657-4bf8-bb1f-7a971bba3367\",\"location\":\"ecdmdqbwpy\"}],\"fullyQualifiedDomainNames\":[\"gsfjac\",\"slhhxudbxv\"],\"emailAddresses\":[\"tnsi\",\"ud\"],\"phoneNumbers\":[\"mes\"]}},{\"name\":\"dlpagzrcxfail\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"boxdfgsftufq\",\"brjlnacgcckknhxk\",\"zvytnrzvuljraaer\",\"nok\"],\"subscriptions\":[{\"id\":\"kjq\"},{\"id\":\"broyla\"},{\"id\":\"ulcdisdosf\"},{\"id\":\"jsvg\"}],\"networkSecurityPerimeters\":[{\"id\":\"r\",\"perimeterGuid\":\"c2df6ff4-e0a7-439d-95d8-4f31eca1799f\",\"location\":\"cytdclxgccknfnwm\"},{\"id\":\"mvpdvjdhttzaef\",\"perimeterGuid\":\"72f9d23f-fe31-48a0-920c-847f5c621db6\",\"location\":\"ihchrphkmcrjdqn\"},{\"id\":\"fzpbgtgkyl\",\"perimeterGuid\":\"0966ae6c-c4d9-4729-b0ac-5ca57e868429\",\"location\":\"hrjeuutlw\"}],\"fullyQualifiedDomainNames\":[\"w\"],\"emailAddresses\":[\"kvbwnhhtqlgeh\",\"ppipifhpfeoa\",\"vgcxtx\",\"csheafidltugsr\"],\"phoneNumbers\":[\"kssjhoiftxfk\"]}},{\"name\":\"egprhptil\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"tgdqohmcwsldriz\",\"tpwb\",\"a\"],\"subscriptions\":[{\"id\":\"bphbqzmizakakank\"},{\"id\":\"dnjzh\"}],\"networkSecurityPerimeters\":[{\"id\":\"lhjlmuoyxprimr\",\"perimeterGuid\":\"b115af21-822a-496e-a1a4-18719c29d3b9\",\"location\":\"teecjmeislst\"},{\"id\":\"sylwxdzaumweooh\",\"perimeterGuid\":\"d109b4d6-3814-4e24-9057-c2d4006327a5\",\"location\":\"fuzboyjathwtzolb\"},{\"id\":\"mwmdxmebwjscjpa\",\"perimeterGuid\":\"20275b08-25e9-4438-9163-ba926dcda966\",\"location\":\"veabfqxnmwmqtib\"},{\"id\":\"ijddtvqc\",\"perimeterGuid\":\"8b3f4632-9d68-4176-bca0-f95e8827288a\",\"location\":\"dija\"}],\"fullyQualifiedDomainNames\":[\"mrsieekp\"],\"emailAddresses\":[\"aapm\",\"dqmeqwigpibudq\",\"yxeb\",\"ybpmzznrtffyaq\"],\"phoneNumbers\":[\"hheioqaqhvseuf\"]}}]}") + "{\"issueType\":\"ConfigurationPropagationFailure\",\"severity\":\"Error\",\"description\":\"jjidjk\",\"suggestedResourceIds\":[\"kyxvxevblbjedn\",\"jlageu\",\"ulxunsmjbnkpp\"],\"suggestedAccessRules\":[{\"name\":\"nlsvxeiz\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"srmffeycxcktpiym\",\"rteeamm\",\"qiekkkzddrt\"],\"subscriptions\":[{\"id\":\"jbmxvavre\"}],\"networkSecurityPerimeters\":[{\"id\":\"svecuijpxtxs\",\"perimeterGuid\":\"0888ade7-9e97-44f3-8fbc-ef9fff7091c1\",\"location\":\"rtujwsawddjibab\"},{\"id\":\"ititvtzeexavoxt\",\"perimeterGuid\":\"26df57b3-697b-46c1-8941-74b61b18ab53\",\"location\":\"ecdmdqbwpy\"}],\"fullyQualifiedDomainNames\":[\"gsfjac\",\"slhhxudbxv\"],\"emailAddresses\":[\"tnsi\",\"ud\"],\"phoneNumbers\":[\"mes\"]}},{\"name\":\"dlpagzrcxfail\",\"properties\":{\"direction\":\"Outbound\",\"addressPrefixes\":[\"boxdfgsftufq\",\"brjlnacgcckknhxk\",\"zvytnrzvuljraaer\",\"nok\"],\"subscriptions\":[{\"id\":\"kjq\"},{\"id\":\"broyla\"},{\"id\":\"ulcdisdosf\"},{\"id\":\"jsvg\"}],\"networkSecurityPerimeters\":[{\"id\":\"r\",\"perimeterGuid\":\"13dd419b-9823-4900-aa2a-c60009cd5ec1\",\"location\":\"cytdclxgccknfnwm\"},{\"id\":\"mvpdvjdhttzaef\",\"perimeterGuid\":\"a4b28acc-03b0-4e92-ac44-cd4e8f0b6239\",\"location\":\"ihchrphkmcrjdqn\"},{\"id\":\"fzpbgtgkyl\",\"perimeterGuid\":\"5a821df0-0c09-4e66-8d59-28631b348153\",\"location\":\"hrjeuutlw\"}],\"fullyQualifiedDomainNames\":[\"w\"],\"emailAddresses\":[\"kvbwnhhtqlgeh\",\"ppipifhpfeoa\",\"vgcxtx\",\"csheafidltugsr\"],\"phoneNumbers\":[\"kssjhoiftxfk\"]}},{\"name\":\"egprhptil\",\"properties\":{\"direction\":\"Inbound\",\"addressPrefixes\":[\"tgdqohmcwsldriz\",\"tpwb\",\"a\"],\"subscriptions\":[{\"id\":\"bphbqzmizakakank\"},{\"id\":\"dnjzh\"}],\"networkSecurityPerimeters\":[{\"id\":\"lhjlmuoyxprimr\",\"perimeterGuid\":\"95824214-f380-4d87-8e47-7eda5ebf0d01\",\"location\":\"teecjmeislst\"},{\"id\":\"sylwxdzaumweooh\",\"perimeterGuid\":\"4c9c2db2-5c35-4e99-8707-41f3d277d557\",\"location\":\"fuzboyjathwtzolb\"},{\"id\":\"mwmdxmebwjscjpa\",\"perimeterGuid\":\"31022458-bd5a-429f-ab1c-d4678c2f0b95\",\"location\":\"veabfqxnmwmqtib\"},{\"id\":\"ijddtvqc\",\"perimeterGuid\":\"d60506fe-97b9-4011-8367-88d41369b09c\",\"location\":\"dija\"}],\"fullyQualifiedDomainNames\":[\"mrsieekp\"],\"emailAddresses\":[\"aapm\",\"dqmeqwigpibudq\",\"yxeb\",\"ybpmzznrtffyaq\"],\"phoneNumbers\":[\"hheioqaqhvseuf\"]}}]}") .toObject(ProvisioningIssueProperties.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/RuleDefinitionTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/RuleDefinitionTests.java index c54c051e2f1d..58aab975fbdf 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/RuleDefinitionTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/RuleDefinitionTests.java @@ -21,6 +21,7 @@ public void testDeserialize() throws Exception { Assertions.assertEquals(36238226, model.binDelay()); Assertions.assertEquals(OffsetDateTime.parse("2021-06-22T19:10:38Z"), model.binStartTime()); Assertions.assertEquals(TimeSelectorEnum.TIME_GENERATED, model.timeSelector()); + Assertions.assertEquals("ubwefqs", model.destinationTable()); } @org.junit.jupiter.api.Test @@ -29,12 +30,14 @@ public void testSerialize() throws Exception { .withBinSize(1717475306) .withBinDelay(36238226) .withBinStartTime(OffsetDateTime.parse("2021-06-22T19:10:38Z")) - .withTimeSelector(TimeSelectorEnum.TIME_GENERATED); + .withTimeSelector(TimeSelectorEnum.TIME_GENERATED) + .withDestinationTable("ubwefqs"); model = BinaryData.fromObject(model).toObject(RuleDefinition.class); Assertions.assertEquals("hahzvechndbnwi", model.query()); Assertions.assertEquals(1717475306, model.binSize()); Assertions.assertEquals(36238226, model.binDelay()); Assertions.assertEquals(OffsetDateTime.parse("2021-06-22T19:10:38Z"), model.binStartTime()); Assertions.assertEquals(TimeSelectorEnum.TIME_GENERATED, model.timeSelector()); + Assertions.assertEquals("ubwefqs", model.destinationTable()); } } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UserAssignedIdentityTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UserAssignedIdentityTests.java index 749bf07a5750..8399d678232c 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UserAssignedIdentityTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/UserAssignedIdentityTests.java @@ -11,7 +11,7 @@ public final class UserAssignedIdentityTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { UserAssignedIdentity model = BinaryData.fromString( - "{\"principalId\":\"b09c35db-be66-4e95-8498-f542f93b2515\",\"clientId\":\"e882c946-e84d-4658-abe8-71db0e3cfdfc\"}") + "{\"principalId\":\"a2e47de8-c396-46a0-8fe5-8358df136d56\",\"clientId\":\"4d52d02f-e515-4f1f-94dd-463d488059fb\"}") .toObject(UserAssignedIdentity.class); } diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetNspWithResponseMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetNspWithResponseMockTests.java index 23aeb3cf2189..cfd8d9d65886 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetNspWithResponseMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesGetNspWithResponseMockTests.java @@ -23,7 +23,7 @@ public final class WorkspacesGetNspWithResponseMockTests { @Test public void testGetNspWithResponse() throws Exception { String responseStr - = "{\"properties\":{\"provisioningState\":\"Canceled\",\"provisioningIssues\":[{\"name\":\"qkaye\",\"properties\":{\"issueType\":\"MissingPerimeterConfiguration\",\"severity\":\"Error\",\"description\":\"lwfgziiu\",\"suggestedResourceIds\":[\"jceatlijjjrtva\",\"caszk\",\"xk\"],\"suggestedAccessRules\":[{},{},{},{}]}},{\"name\":\"etyvkunmignohi\",\"properties\":{\"issueType\":\"Unknown\",\"severity\":\"Warning\",\"description\":\"wpin\",\"suggestedResourceIds\":[\"vabbx\",\"hmedeilbjywfcfxz\",\"rzzihvwypus\",\"vjslczwcii\"],\"suggestedAccessRules\":[{},{},{},{}]}}],\"networkSecurityPerimeter\":{\"id\":\"fryvdmvxadqac\",\"perimeterGuid\":\"b2ab9a7a-0b15-4a2c-a582-6bbd6ffa49bb\",\"location\":\"naw\"},\"resourceAssociation\":{\"name\":\"gfbktyjmf\",\"accessMode\":\"Learning\"},\"profile\":{\"name\":\"yq\",\"accessRulesVersion\":988633110,\"accessRules\":[{\"name\":\"owoxqmj\",\"properties\":{}},{\"name\":\"cxn\",\"properties\":{}}],\"diagnosticSettingsVersion\":473965533,\"enabledLogCategories\":[\"usrvx\",\"simjceagbjqvlsu\"]}},\"id\":\"wzas\",\"name\":\"xgo\",\"type\":\"oyjfqipu\"}"; + = "{\"properties\":{\"provisioningState\":\"Canceled\",\"provisioningIssues\":[{\"name\":\"qkaye\",\"properties\":{\"issueType\":\"MissingPerimeterConfiguration\",\"severity\":\"Error\",\"description\":\"lwfgziiu\",\"suggestedResourceIds\":[\"jceatlijjjrtva\",\"caszk\",\"xk\"],\"suggestedAccessRules\":[{},{},{},{}]}},{\"name\":\"etyvkunmignohi\",\"properties\":{\"issueType\":\"Unknown\",\"severity\":\"Warning\",\"description\":\"wpin\",\"suggestedResourceIds\":[\"vabbx\",\"hmedeilbjywfcfxz\",\"rzzihvwypus\",\"vjslczwcii\"],\"suggestedAccessRules\":[{},{},{},{}]}}],\"networkSecurityPerimeter\":{\"id\":\"fryvdmvxadqac\",\"perimeterGuid\":\"9bde5da3-3ba4-4215-8b61-6e214c73bc9f\",\"location\":\"naw\"},\"resourceAssociation\":{\"name\":\"gfbktyjmf\",\"accessMode\":\"Learning\"},\"profile\":{\"name\":\"yq\",\"accessRulesVersion\":988633110,\"accessRules\":[{\"name\":\"owoxqmj\",\"properties\":{}},{\"name\":\"cxn\",\"properties\":{}}],\"diagnosticSettingsVersion\":473965533,\"enabledLogCategories\":[\"usrvx\",\"simjceagbjqvlsu\"]}},\"id\":\"wzas\",\"name\":\"xgo\",\"type\":\"oyjfqipu\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); @@ -37,7 +37,7 @@ public void testGetNspWithResponse() throws Exception { .getValue(); Assertions.assertEquals("fryvdmvxadqac", response.properties().networkSecurityPerimeter().id()); - Assertions.assertEquals(UUID.fromString("b2ab9a7a-0b15-4a2c-a582-6bbd6ffa49bb"), + Assertions.assertEquals(UUID.fromString("9bde5da3-3ba4-4215-8b61-6e214c73bc9f"), response.properties().networkSecurityPerimeter().perimeterGuid()); Assertions.assertEquals("naw", response.properties().networkSecurityPerimeter().location()); Assertions.assertEquals("gfbktyjmf", response.properties().resourceAssociation().name()); diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListNspMockTests.java b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListNspMockTests.java index 093c9ed124cb..f7ef055fa986 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListNspMockTests.java +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/src/test/java/com/azure/resourcemanager/loganalytics/generated/WorkspacesListNspMockTests.java @@ -24,7 +24,7 @@ public final class WorkspacesListNspMockTests { @Test public void testListNsp() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"provisioningState\":\"Updating\",\"provisioningIssues\":[{\"name\":\"kxyqvgxiaodetv\",\"properties\":{\"issueType\":\"MissingPerimeterConfiguration\",\"severity\":\"Warning\",\"description\":\"wsaifmcwno\",\"suggestedResourceIds\":[\"lehgcvkbc\",\"njolgjyyxpv\",\"lszerqzevx\",\"qe\"],\"suggestedAccessRules\":[{},{},{}]}},{\"name\":\"waljglzoblqwaaf\",\"properties\":{\"issueType\":\"Unknown\",\"severity\":\"Warning\",\"description\":\"yqbhd\",\"suggestedResourceIds\":[\"jrqpjiyrqjcrga\",\"wmzwdfkbnrzorpdl\",\"bqc\"],\"suggestedAccessRules\":[{},{},{}]}}],\"networkSecurityPerimeter\":{\"id\":\"xxsaetgz\",\"perimeterGuid\":\"7c25190c-b735-4965-9eab-ac58783e1b6a\",\"location\":\"pyigdaqqilzdc\"},\"resourceAssociation\":{\"name\":\"joedx\",\"accessMode\":\"Enforced\"},\"profile\":{\"name\":\"i\",\"accessRulesVersion\":652197370,\"accessRules\":[{\"name\":\"wgilfjqqac\",\"properties\":{}},{\"name\":\"xwxdcvjwc\",\"properties\":{}}],\"diagnosticSettingsVersion\":148579488,\"enabledLogCategories\":[\"ciqchxrtuicd\",\"iw\"]}},\"id\":\"m\",\"name\":\"p\",\"type\":\"hzzwvywrgyngy\"}]}"; + = "{\"value\":[{\"properties\":{\"provisioningState\":\"Updating\",\"provisioningIssues\":[{\"name\":\"kxyqvgxiaodetv\",\"properties\":{\"issueType\":\"MissingPerimeterConfiguration\",\"severity\":\"Warning\",\"description\":\"wsaifmcwno\",\"suggestedResourceIds\":[\"lehgcvkbc\",\"njolgjyyxpv\",\"lszerqzevx\",\"qe\"],\"suggestedAccessRules\":[{},{},{}]}},{\"name\":\"waljglzoblqwaaf\",\"properties\":{\"issueType\":\"Unknown\",\"severity\":\"Warning\",\"description\":\"yqbhd\",\"suggestedResourceIds\":[\"jrqpjiyrqjcrga\",\"wmzwdfkbnrzorpdl\",\"bqc\"],\"suggestedAccessRules\":[{},{},{}]}}],\"networkSecurityPerimeter\":{\"id\":\"xxsaetgz\",\"perimeterGuid\":\"356dc794-27de-474a-b01f-8e647225fb47\",\"location\":\"pyigdaqqilzdc\"},\"resourceAssociation\":{\"name\":\"joedx\",\"accessMode\":\"Enforced\"},\"profile\":{\"name\":\"i\",\"accessRulesVersion\":652197370,\"accessRules\":[{\"name\":\"wgilfjqqac\",\"properties\":{}},{\"name\":\"xwxdcvjwc\",\"properties\":{}}],\"diagnosticSettingsVersion\":148579488,\"enabledLogCategories\":[\"ciqchxrtuicd\",\"iw\"]}},\"id\":\"m\",\"name\":\"p\",\"type\":\"hzzwvywrgyngy\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); @@ -37,7 +37,7 @@ public void testListNsp() throws Exception { = manager.workspaces().listNsp("qicqchygt", "xbyja", com.azure.core.util.Context.NONE); Assertions.assertEquals("xxsaetgz", response.iterator().next().properties().networkSecurityPerimeter().id()); - Assertions.assertEquals(UUID.fromString("7c25190c-b735-4965-9eab-ac58783e1b6a"), + Assertions.assertEquals(UUID.fromString("356dc794-27de-474a-b01f-8e647225fb47"), response.iterator().next().properties().networkSecurityPerimeter().perimeterGuid()); Assertions.assertEquals("pyigdaqqilzdc", response.iterator().next().properties().networkSecurityPerimeter().location()); From c2bd66695ba7e9110e882cede76ee2c6b4c0ab5a Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Sun, 4 Jan 2026 23:17:28 -0800 Subject: [PATCH 15/41] Increment package versions for loganalytics releases (#47618) --- eng/versioning/version_client.txt | 2 +- .../azure-resourcemanager-applicationinsights/pom.xml | 2 +- .../azure-resourcemanager-loganalytics/CHANGELOG.md | 10 ++++++++++ .../azure-resourcemanager-loganalytics/pom.xml | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index aaf7a9f2613b..87d37e0121a6 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -307,7 +307,7 @@ com.azure.resourcemanager:azure-resourcemanager-relay;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-costmanagement;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-recoveryservices;1.5.0;1.6.0 com.azure.resourcemanager:azure-resourcemanager-kusto;1.2.0;1.3.0-beta.1 -com.azure.resourcemanager:azure-resourcemanager-loganalytics;2.0.0;2.1.0 +com.azure.resourcemanager:azure-resourcemanager-loganalytics;2.1.0;2.2.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-eventgrid;1.2.0;1.3.0-beta.2 com.azure.resourcemanager:azure-resourcemanager-healthbot;1.1.0;1.2.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-confluent;1.2.0;1.3.0-beta.1 diff --git a/sdk/applicationinsights/azure-resourcemanager-applicationinsights/pom.xml b/sdk/applicationinsights/azure-resourcemanager-applicationinsights/pom.xml index d3a63cf0b0cf..20679e04f43a 100644 --- a/sdk/applicationinsights/azure-resourcemanager-applicationinsights/pom.xml +++ b/sdk/applicationinsights/azure-resourcemanager-applicationinsights/pom.xml @@ -98,7 +98,7 @@ com.azure.resourcemanager azure-resourcemanager-loganalytics - 2.0.0 + 2.1.0 test diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md b/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md index 81ceb2d4eaaf..15ece4ee2c48 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/CHANGELOG.md @@ -1,5 +1,15 @@ # Release History +## 2.2.0-beta.1 (Unreleased) + +### Features Added + +### Breaking Changes + +### Bugs Fixed + +### Other Changes + ## 2.1.0 (2026-01-05) - Azure Resource Manager LogAnalytics client library for Java. This package contains Microsoft Azure SDK for LogAnalytics Management SDK. Operational Insights Client. Package tag package-2025-07-01. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml b/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml index 087d76484f9e..c65a79733b28 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml @@ -14,7 +14,7 @@ com.azure.resourcemanager azure-resourcemanager-loganalytics - 2.1.0 + 2.2.0-beta.1 jar Microsoft Azure SDK for LogAnalytics Management From f32dbc752a8b67775c0a163712e2ac0175adc8f0 Mon Sep 17 00:00:00 2001 From: Tomas Varon <70857381+tvaron3@users.noreply.github.com> Date: Mon, 5 Jan 2026 14:28:08 -0500 Subject: [PATCH 16/41] Fix Unsafe Deserialization (#47594) * Fix unsafe deserialization * add changelog * revert changes * revert changes * change Allowed Classes to not be hard coded strings * fix tests and filter on byte array as well * fix indentation * react to comments --- .../azure-cosmos-kafka-connect/CHANGELOG.md | 1 + .../implementation/KafkaCosmosUtils.java | 22 ++++++++- .../connect/CosmosSinkConnectorTest.java | 46 +++++++++++++++++++ 3 files changed, 67 insertions(+), 2 deletions(-) diff --git a/sdk/cosmos/azure-cosmos-kafka-connect/CHANGELOG.md b/sdk/cosmos/azure-cosmos-kafka-connect/CHANGELOG.md index 40d044cf49ec..c0b94149aec9 100644 --- a/sdk/cosmos/azure-cosmos-kafka-connect/CHANGELOG.md +++ b/sdk/cosmos/azure-cosmos-kafka-connect/CHANGELOG.md @@ -7,6 +7,7 @@ #### Breaking Changes #### Bugs Fixed +* Added filtering to deserialization of `"azure.cosmos.client.metadata.caches.snapshot"` - See [PR 47594](https://github.com/Azure/azure-sdk-for-java/pull/47594) #### Other Changes diff --git a/sdk/cosmos/azure-cosmos-kafka-connect/src/main/java/com/azure/cosmos/kafka/connect/implementation/KafkaCosmosUtils.java b/sdk/cosmos/azure-cosmos-kafka-connect/src/main/java/com/azure/cosmos/kafka/connect/implementation/KafkaCosmosUtils.java index 6009821ea188..6246b9a4566c 100644 --- a/sdk/cosmos/azure-cosmos-kafka-connect/src/main/java/com/azure/cosmos/kafka/connect/implementation/KafkaCosmosUtils.java +++ b/sdk/cosmos/azure-cosmos-kafka-connect/src/main/java/com/azure/cosmos/kafka/connect/implementation/KafkaCosmosUtils.java @@ -12,19 +12,37 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.InvalidClassException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; +import java.io.ObjectStreamClass; import java.util.Base64; +import java.util.HashSet; +import java.util.Set; public class KafkaCosmosUtils { private static final Logger LOGGER = LoggerFactory.getLogger(KafkaCosmosUtils.class); + private static final Set ALLOWED_CLASSES = new HashSet<>(); + static { + ALLOWED_CLASSES.add(CosmosClientMetadataCachesSnapshot.class.getName()); + ALLOWED_CLASSES.add(byte[].class.getName()); + } public static CosmosClientMetadataCachesSnapshot getCosmosClientMetadataFromString(String metadataCacheString) { if (StringUtils.isNotEmpty(metadataCacheString)) { byte[] inputByteArray = Base64.getDecoder().decode(metadataCacheString); try (ObjectInputStream objectInputStream = - new ObjectInputStream(new ByteArrayInputStream(inputByteArray))) { - + new ObjectInputStream(new ByteArrayInputStream(inputByteArray)) { + @Override + protected Class resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException { + // Whitelist only allowed classes to prevent rce from arbitrary classes + if (!ALLOWED_CLASSES.contains(desc.getName())) { + LOGGER.error("Invalid class type for deserialization {}", desc.getName()); + throw new InvalidClassException("Unauthorized deserialization attempt", desc.getName()); + } + return super.resolveClass(desc); + } + }) { return (CosmosClientMetadataCachesSnapshot) objectInputStream.readObject(); } catch (IOException | ClassNotFoundException e) { LOGGER.warn("Failed to deserialize cosmos client metadata cache snapshot"); diff --git a/sdk/cosmos/azure-cosmos-kafka-connect/src/test/java/com/azure/cosmos/kafka/connect/CosmosSinkConnectorTest.java b/sdk/cosmos/azure-cosmos-kafka-connect/src/test/java/com/azure/cosmos/kafka/connect/CosmosSinkConnectorTest.java index 5782819f79a5..e4488339a55c 100644 --- a/sdk/cosmos/azure-cosmos-kafka-connect/src/test/java/com/azure/cosmos/kafka/connect/CosmosSinkConnectorTest.java +++ b/sdk/cosmos/azure-cosmos-kafka-connect/src/test/java/com/azure/cosmos/kafka/connect/CosmosSinkConnectorTest.java @@ -29,14 +29,21 @@ import org.testng.annotations.Test; import reactor.core.publisher.Mono; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; +import java.util.Base64; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; @@ -214,6 +221,23 @@ public void taskConfigsForClientMetadataCachesSnapshot() { } } + @Test(groups = "unit") + public void evilDeserializationIsBlocked() throws Exception { + AtomicReference payload = new AtomicReference<>("Test RCE payload"); + Evil evil = new Evil(payload); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (ObjectOutputStream oos = new ObjectOutputStream(baos)) { + oos.writeObject(evil); + } + String evilBase64 = Base64.getEncoder().encodeToString(baos.toByteArray()); + + // Through KafkaCosmosUtils: should be blocked and return null + CosmosClientMetadataCachesSnapshot snapshot = + KafkaCosmosUtils.getCosmosClientMetadataFromString(evilBase64); + assertThat(snapshot).isNull(); + assertThat(payload.get()).isEqualTo("Test RCE payload"); + } + @Test(groups = "unit") public void misFormattedConfig() { CosmosSinkConnector sinkConnector = new CosmosSinkConnector(); @@ -471,4 +495,26 @@ public static class SinkConfigs { true) ); } + + public static class Evil implements Serializable { + private static final long serialVersionUID = 1L; + + private final AtomicReference payload; + + public Evil(AtomicReference payload) { + this.payload = payload; + } + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + System.out.println("Payload executed"); + payload.set("Payload executed"); + } + + @Override + public String toString() { + return "Evil{payload='" + payload.get() + "'}"; + } + } + } From 0acab42587dae4fb4ee9cc8dbd350a49d7dfd040 Mon Sep 17 00:00:00 2001 From: amber-yujueWang Date: Mon, 5 Jan 2026 11:57:16 -0800 Subject: [PATCH 17/41] update changelog (#47626) --- sdk/transcription/azure-ai-speech-transcription/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/transcription/azure-ai-speech-transcription/CHANGELOG.md b/sdk/transcription/azure-ai-speech-transcription/CHANGELOG.md index e62d01580eee..4e51b29bcff6 100644 --- a/sdk/transcription/azure-ai-speech-transcription/CHANGELOG.md +++ b/sdk/transcription/azure-ai-speech-transcription/CHANGELOG.md @@ -1,6 +1,6 @@ # Release History -## 1.0.0-beta.1 (2025-12-19) +## 1.0.0-beta.1 (2026-01-05) ### Features Added From 19953ace508d6af16374d84e2884ae0953bbb85e Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Tue, 6 Jan 2026 00:52:06 -0800 Subject: [PATCH 18/41] [AutoPR azure-resourcemanager-healthbot]-generated-from-SDK Generation - Java-5709943 (#47613) * Configurations: 'specification/healthbot/HealthBot.Management/tspconfig.yaml', API Version: 2025-11-01, SDK Release Type: stable, and CommitSHA: '16c5a93d4e3e6d4cec95c969991fd65cb3458327' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=5709943 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release. * Update pom.xml * Configurations: 'specification/healthbot/HealthBot.Management/tspconfig.yaml', API Version: 2025-11-01, SDK Release Type: stable, and CommitSHA: '53d56e4ec74156c450d1e51745a971d3f2031dd7' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=5717194 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release. * Update pom.xml --------- Co-authored-by: Weidong Xu --- eng/versioning/version_client.txt | 2 +- .../CHANGELOG.md | 45 +- .../azure-resourcemanager-healthbot/README.md | 4 +- .../azure-resourcemanager-healthbot/SAMPLE.md | 31 +- .../azure-resourcemanager-healthbot/pom.xml | 7 +- .../healthbot/HealthbotManager.java | 46 +- .../healthbot/fluent/BotsClient.java | 178 +-- ...nt.java => HealthbotManagementClient.java} | 36 +- .../healthbot/fluent/OperationsClient.java | 2 +- .../fluent/models/HealthBotInner.java | 85 +- .../fluent/models/HealthBotKeyInner.java | 38 +- .../models/HealthBotKeysResponseInner.java | 30 +- .../fluent/models/OperationDetailInner.java | 74 +- .../healthbot/fluent/models/package-info.java | 4 +- .../healthbot/fluent/package-info.java | 4 +- .../implementation/BotsClientImpl.java | 1129 ++++++----------- .../healthbot/implementation/BotsImpl.java | 42 +- .../implementation/HealthBotImpl.java | 22 +- .../implementation/HealthBotKeyImpl.java | 2 +- .../HealthBotKeysResponseImpl.java | 2 +- ... => HealthbotManagementClientBuilder.java} | 62 +- ...ava => HealthbotManagementClientImpl.java} | 88 +- .../implementation/OperationDetailImpl.java | 2 +- .../implementation/OperationsClientImpl.java | 66 +- .../implementation/OperationsImpl.java | 2 +- .../implementation/ResourceManagerUtils.java | 2 +- .../models/AvailableOperations.java | 47 +- .../models/BotResponseList.java | 43 +- .../implementation/package-info.java | 4 +- .../healthbot/models/Bots.java | 90 +- .../healthbot/models/HealthBot.java | 42 +- .../healthbot/models/HealthBotKey.java | 2 +- .../models/HealthBotKeysResponse.java | 2 +- .../healthbot/models/HealthBotProperties.java | 15 +- .../models/HealthBotUpdateParameters.java | 19 +- .../healthbot/models/Identity.java | 17 +- .../healthbot/models/KeyVaultProperties.java | 21 +- .../healthbot/models/OperationDetail.java | 2 +- .../healthbot/models/OperationDisplay.java | 60 +- .../healthbot/models/Operations.java | 2 +- .../models/ResourceIdentityType.java | 2 +- .../resourcemanager/healthbot/models/Sku.java | 16 +- .../healthbot/models/SkuName.java | 7 +- .../models/UserAssignedIdentity.java | 10 +- .../healthbot/models/package-info.java | 4 +- .../healthbot/package-info.java | 4 +- .../src/main/java/module-info.java | 3 +- ...emanager-healthbot_apiview_properties.json | 39 + ...re-resourcemanager-healthbot_metadata.json | 1 + .../generated/BotsCreateSamples.java | 5 +- .../generated/BotsDeleteSamples.java | 6 +- .../BotsGetByResourceGroupSamples.java | 5 +- .../BotsListByResourceGroupSamples.java | 6 +- .../healthbot/generated/BotsListSamples.java | 6 +- .../generated/BotsListSecretsSamples.java | 5 +- .../BotsRegenerateApiJwtSecretSamples.java | 6 +- .../generated/BotsUpdateSamples.java | 5 +- .../generated/OperationsListSamples.java | 5 +- .../generated/AvailableOperationsTests.java | 64 +- .../generated/BotsDeleteMockTests.java | 4 +- .../healthbot/generated/IdentityTests.java | 7 +- .../generated/OperationDetailInnerTests.java | 37 +- .../generated/OperationDisplayTests.java | 28 +- .../generated/OperationsListMockTests.java | 16 +- .../healthbot/generated/SkuTests.java | 2 +- .../generated/UserAssignedIdentityTests.java | 7 +- .../tsp-location.yaml | 4 + 67 files changed, 939 insertions(+), 1736 deletions(-) rename sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/{HealthbotClient.java => HealthbotManagementClient.java} (79%) rename sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/{HealthbotClientBuilder.java => HealthbotManagementClientBuilder.java} (63%) rename sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/{HealthbotClientImpl.java => HealthbotManagementClientImpl.java} (90%) rename sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/{ => implementation}/models/AvailableOperations.java (71%) rename sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/{ => implementation}/models/BotResponseList.java (74%) create mode 100644 sdk/healthbot/azure-resourcemanager-healthbot/src/main/resources/META-INF/azure-resourcemanager-healthbot_apiview_properties.json create mode 100644 sdk/healthbot/azure-resourcemanager-healthbot/src/main/resources/META-INF/azure-resourcemanager-healthbot_metadata.json create mode 100644 sdk/healthbot/azure-resourcemanager-healthbot/tsp-location.yaml diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index 87d37e0121a6..d639b9a6d86a 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -309,7 +309,7 @@ com.azure.resourcemanager:azure-resourcemanager-recoveryservices;1.5.0;1.6.0 com.azure.resourcemanager:azure-resourcemanager-kusto;1.2.0;1.3.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-loganalytics;2.1.0;2.2.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-eventgrid;1.2.0;1.3.0-beta.2 -com.azure.resourcemanager:azure-resourcemanager-healthbot;1.1.0;1.2.0-beta.1 +com.azure.resourcemanager:azure-resourcemanager-healthbot;1.1.0;1.2.0 com.azure.resourcemanager:azure-resourcemanager-confluent;1.2.0;1.3.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-digitaltwins;1.3.0;1.4.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-netapp;2.0.0;2.1.0-beta.2 diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/CHANGELOG.md b/sdk/healthbot/azure-resourcemanager-healthbot/CHANGELOG.md index 50f9f53217ff..f09ee0a33054 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/CHANGELOG.md +++ b/sdk/healthbot/azure-resourcemanager-healthbot/CHANGELOG.md @@ -1,14 +1,51 @@ # Release History -## 1.2.0-beta.1 (Unreleased) +## 1.2.0 (2026-01-05) -### Features Added +- Azure Resource Manager Healthbot client library for Java. This package contains Microsoft Azure SDK for Healthbot Management SDK. Azure Health Bot is a cloud platform that empowers developers in Healthcare organizations to build and deploy their compliant, AI-powered virtual health assistants and health bots, that help them improve processes and reduce costs. Package api-version 2025-11-01. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). ### Breaking Changes -### Bugs Fixed +#### `models.BotResponseList` was removed -### Other Changes +#### `models.AvailableOperations` was removed + +#### `models.UserAssignedIdentity` was modified + +* `validate()` was removed + +#### `models.HealthBotUpdateParameters` was modified + +* `validate()` was removed + +#### `models.Identity` was modified + +* `validate()` was removed + +#### `models.KeyVaultProperties` was modified + +* `validate()` was removed + +#### `models.HealthBotProperties` was modified + +* `validate()` was removed + +#### `HealthbotManager` was modified + +* `fluent.HealthbotClient serviceClient()` -> `fluent.HealthbotManagementClient serviceClient()` + +#### `models.Sku` was modified + +* `validate()` was removed + +#### `models.OperationDisplay` was modified + +* `OperationDisplay()` was changed to private access +* `withProvider(java.lang.String)` was removed +* `withDescription(java.lang.String)` was removed +* `withResource(java.lang.String)` was removed +* `validate()` was removed +* `withOperation(java.lang.String)` was removed ## 1.1.0 (2025-07-21) diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/README.md b/sdk/healthbot/azure-resourcemanager-healthbot/README.md index f9ab87654b13..c53b96e2ec53 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/README.md +++ b/sdk/healthbot/azure-resourcemanager-healthbot/README.md @@ -2,7 +2,7 @@ Azure Resource Manager Healthbot client library for Java. -This package contains Microsoft Azure SDK for Healthbot Management SDK. Azure Health Bot is a cloud platform that empowers developers in Healthcare organizations to build and deploy their compliant, AI-powered virtual health assistants and health bots, that help them improve processes and reduce costs. Package tag package-2025-05-25. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). +This package contains Microsoft Azure SDK for Healthbot Management SDK. Azure Health Bot is a cloud platform that empowers developers in Healthcare organizations to build and deploy their compliant, AI-powered virtual health assistants and health bots, that help them improve processes and reduce costs. Package api-version 2025-11-01. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). ## We'd love to hear your feedback @@ -32,7 +32,7 @@ Various documentation is available to help you get started com.azure.resourcemanager azure-resourcemanager-healthbot - 1.1.0 + 1.2.0 ``` [//]: # ({x-version-update-end}) diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/SAMPLE.md b/sdk/healthbot/azure-resourcemanager-healthbot/SAMPLE.md index e1852b12f880..468bb6466b28 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/SAMPLE.md +++ b/sdk/healthbot/azure-resourcemanager-healthbot/SAMPLE.md @@ -31,8 +31,7 @@ import java.util.Map; */ public final class BotsCreateSamples { /* - * x-ms-original-file: - * specification/healthbot/resource-manager/Microsoft.HealthBot/stable/2025-05-25/examples/ResourceCreationPut.json + * x-ms-original-file: 2025-11-01/ResourceCreationPut.json */ /** * Sample code: BotCreate. @@ -76,9 +75,7 @@ public final class BotsCreateSamples { */ public final class BotsDeleteSamples { /* - * x-ms-original-file: - * specification/healthbot/resource-manager/Microsoft.HealthBot/stable/2025-05-25/examples/ResourceDeletionDelete. - * json + * x-ms-original-file: 2025-11-01/ResourceDeletionDelete.json */ /** * Sample code: BotDelete. @@ -99,8 +96,7 @@ public final class BotsDeleteSamples { */ public final class BotsGetByResourceGroupSamples { /* - * x-ms-original-file: - * specification/healthbot/resource-manager/Microsoft.HealthBot/stable/2025-05-25/examples/ResourceInfoGet.json + * x-ms-original-file: 2025-11-01/ResourceInfoGet.json */ /** * Sample code: ResourceInfoGet. @@ -122,9 +118,7 @@ public final class BotsGetByResourceGroupSamples { */ public final class BotsListSamples { /* - * x-ms-original-file: - * specification/healthbot/resource-manager/Microsoft.HealthBot/stable/2025-05-25/examples/ListBotsBySubscription. - * json + * x-ms-original-file: 2025-11-01/ListBotsBySubscription.json */ /** * Sample code: List Bots by Subscription. @@ -145,9 +139,7 @@ public final class BotsListSamples { */ public final class BotsListByResourceGroupSamples { /* - * x-ms-original-file: - * specification/healthbot/resource-manager/Microsoft.HealthBot/stable/2025-05-25/examples/ListBotsByResourceGroup. - * json + * x-ms-original-file: 2025-11-01/ListBotsByResourceGroup.json */ /** * Sample code: List Bots by Resource Group. @@ -168,8 +160,7 @@ public final class BotsListByResourceGroupSamples { */ public final class BotsListSecretsSamples { /* - * x-ms-original-file: - * specification/healthbot/resource-manager/Microsoft.HealthBot/stable/2025-05-25/examples/ListSecrets.json + * x-ms-original-file: 2025-11-01/ListSecrets.json */ /** * Sample code: Bot List Secrets. @@ -190,9 +181,7 @@ public final class BotsListSecretsSamples { */ public final class BotsRegenerateApiJwtSecretSamples { /* - * x-ms-original-file: - * specification/healthbot/resource-manager/Microsoft.HealthBot/stable/2025-05-25/examples/RegenerateApiJwtSecret. - * json + * x-ms-original-file: 2025-11-01/RegenerateApiJwtSecret.json */ /** * Sample code: Bot Regenerate API JWT Secret. @@ -218,8 +207,7 @@ import com.azure.resourcemanager.healthbot.models.SkuName; */ public final class BotsUpdateSamples { /* - * x-ms-original-file: - * specification/healthbot/resource-manager/Microsoft.HealthBot/stable/2025-05-25/examples/ResourceUpdatePatch.json + * x-ms-original-file: 2025-11-01/ResourceUpdatePatch.json */ /** * Sample code: BotUpdate. @@ -243,8 +231,7 @@ public final class BotsUpdateSamples { */ public final class OperationsListSamples { /* - * x-ms-original-file: - * specification/healthbot/resource-manager/Microsoft.HealthBot/stable/2025-05-25/examples/GetOperations.json + * x-ms-original-file: 2025-11-01/GetOperations.json */ /** * Sample code: Get Operations. diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/pom.xml b/sdk/healthbot/azure-resourcemanager-healthbot/pom.xml index 1441ff51c97f..4505e1187c77 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/pom.xml +++ b/sdk/healthbot/azure-resourcemanager-healthbot/pom.xml @@ -1,7 +1,7 @@ 4.0.0 @@ -14,11 +14,11 @@ com.azure.resourcemanager azure-resourcemanager-healthbot - 1.2.0-beta.1 + 1.2.0 jar Microsoft Azure SDK for Healthbot Management - This package contains Microsoft Azure SDK for Healthbot Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. Azure Health Bot is a cloud platform that empowers developers in Healthcare organizations to build and deploy their compliant, AI-powered virtual health assistants and health bots, that help them improve processes and reduce costs. Package tag package-2025-05-25. + This package contains Microsoft Azure SDK for Healthbot Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. Azure Health Bot is a cloud platform that empowers developers in Healthcare organizations to build and deploy their compliant, AI-powered virtual health assistants and health bots, that help them improve processes and reduce costs. Package api-version 2025-11-01. https://github.com/Azure/azure-sdk-for-java @@ -45,6 +45,7 @@ UTF-8 0 0 + true diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/HealthbotManager.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/HealthbotManager.java index e43b654f0e7f..47f2afaa7732 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/HealthbotManager.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/HealthbotManager.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot; @@ -24,9 +24,9 @@ import com.azure.core.util.Configuration; import com.azure.core.util.CoreUtils; import com.azure.core.util.logging.ClientLogger; -import com.azure.resourcemanager.healthbot.fluent.HealthbotClient; +import com.azure.resourcemanager.healthbot.fluent.HealthbotManagementClient; import com.azure.resourcemanager.healthbot.implementation.BotsImpl; -import com.azure.resourcemanager.healthbot.implementation.HealthbotClientBuilder; +import com.azure.resourcemanager.healthbot.implementation.HealthbotManagementClientBuilder; import com.azure.resourcemanager.healthbot.implementation.OperationsImpl; import com.azure.resourcemanager.healthbot.models.Bots; import com.azure.resourcemanager.healthbot.models.Operations; @@ -44,16 +44,16 @@ * compliant, AI-powered virtual health assistants and health bots, that help them improve processes and reduce costs. */ public final class HealthbotManager { - private Bots bots; - private Operations operations; - private final HealthbotClient clientObject; + private Bots bots; + + private final HealthbotManagementClient clientObject; private HealthbotManager(HttpPipeline httpPipeline, AzureProfile profile, Duration defaultPollInterval) { Objects.requireNonNull(httpPipeline, "'httpPipeline' cannot be null."); Objects.requireNonNull(profile, "'profile' cannot be null."); - this.clientObject = new HealthbotClientBuilder().pipeline(httpPipeline) + this.clientObject = new HealthbotManagementClientBuilder().pipeline(httpPipeline) .endpoint(profile.getEnvironment().getResourceManagerEndpoint()) .subscriptionId(profile.getSubscriptionId()) .defaultPollInterval(defaultPollInterval) @@ -263,18 +263,6 @@ public HealthbotManager authenticate(TokenCredential credential, AzureProfile pr } } - /** - * Gets the resource collection API of Bots. It manages HealthBot. - * - * @return Resource collection API of Bots. - */ - public Bots bots() { - if (this.bots == null) { - this.bots = new BotsImpl(clientObject.getBots(), this); - } - return bots; - } - /** * Gets the resource collection API of Operations. * @@ -288,12 +276,24 @@ public Operations operations() { } /** - * Gets wrapped service client HealthbotClient providing direct access to the underlying auto-generated API - * implementation, based on Azure REST API. + * Gets the resource collection API of Bots. It manages HealthBot. + * + * @return Resource collection API of Bots. + */ + public Bots bots() { + if (this.bots == null) { + this.bots = new BotsImpl(clientObject.getBots(), this); + } + return bots; + } + + /** + * Gets wrapped service client HealthbotManagementClient providing direct access to the underlying auto-generated + * API implementation, based on Azure REST API. * - * @return Wrapped service client HealthbotClient. + * @return Wrapped service client HealthbotManagementClient. */ - public HealthbotClient serviceClient() { + public HealthbotManagementClient serviceClient() { return this.clientObject; } } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/BotsClient.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/BotsClient.java index ea4c07e35f66..4f080b31e0a9 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/BotsClient.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/BotsClient.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.fluent; @@ -20,10 +20,37 @@ * An instance of this class provides access to all the operations defined in BotsClient. */ public interface BotsClient { + /** + * Get a HealthBot. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a HealthBot along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Response getByResourceGroupWithResponse(String resourceGroupName, String botName, Context context); + + /** + * Get a HealthBot. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a HealthBot. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + HealthBotInner getByResourceGroup(String resourceGroupName, String botName); + /** * Create a new Azure Health Bot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the created Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -38,7 +65,7 @@ SyncPoller, HealthBotInner> beginCreate(String resour /** * Create a new Azure Health Bot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the created Azure Health Bot. * @param context The context to associate with this operation. @@ -54,7 +81,7 @@ SyncPoller, HealthBotInner> beginCreate(String resour /** * Create a new Azure Health Bot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the created Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -68,7 +95,7 @@ SyncPoller, HealthBotInner> beginCreate(String resour /** * Create a new Azure Health Bot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the created Azure Health Bot. * @param context The context to associate with this operation. @@ -80,37 +107,10 @@ SyncPoller, HealthBotInner> beginCreate(String resour @ServiceMethod(returns = ReturnType.SINGLE) HealthBotInner create(String resourceGroupName, String botName, HealthBotInner parameters, Context context); - /** - * Get a HealthBot. - * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a HealthBot along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - Response getByResourceGroupWithResponse(String resourceGroupName, String botName, Context context); - - /** - * Get a HealthBot. - * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a HealthBot. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - HealthBotInner getByResourceGroup(String resourceGroupName, String botName); - /** * Patch a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the required Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -125,7 +125,7 @@ SyncPoller, HealthBotInner> beginUpdate(String resour /** * Patch a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the required Azure Health Bot. * @param context The context to associate with this operation. @@ -141,7 +141,7 @@ SyncPoller, HealthBotInner> beginUpdate(String resour /** * Patch a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the required Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -155,7 +155,7 @@ SyncPoller, HealthBotInner> beginUpdate(String resour /** * Patch a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the required Azure Health Bot. * @param context The context to associate with this operation. @@ -171,7 +171,7 @@ HealthBotInner update(String resourceGroupName, String botName, HealthBotUpdateP /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. @@ -184,7 +184,7 @@ HealthBotInner update(String resourceGroupName, String botName, HealthBotUpdateP /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -198,7 +198,7 @@ HealthBotInner update(String resourceGroupName, String botName, HealthBotUpdateP /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. @@ -210,7 +210,7 @@ HealthBotInner update(String resourceGroupName, String botName, HealthBotUpdateP /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -221,105 +221,105 @@ HealthBotInner update(String resourceGroupName, String botName, HealthBotUpdateP void delete(String resourceGroupName, String botName, Context context); /** - * List all secrets of a HealthBot. + * Returns all the resources of a particular type belonging to a resource group. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. - * @param context The context to associate with this operation. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return health Bot Keys Response along with {@link Response}. + * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - Response listSecretsWithResponse(String resourceGroupName, String botName, - Context context); + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable listByResourceGroup(String resourceGroupName); /** - * List all secrets of a HealthBot. + * Returns all the resources of a particular type belonging to a resource group. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return health Bot Keys Response. + * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - HealthBotKeysResponseInner listSecrets(String resourceGroupName, String botName); + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable listByResourceGroup(String resourceGroupName, Context context); /** - * Regenerate the API JWT Secret of a HealthBot. + * Returns all the resources of a particular type belonging to a subscription. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an entry of HealthBotKeysResponse along with {@link Response}. + * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - Response regenerateApiJwtSecretWithResponse(String resourceGroupName, String botName, - Context context); + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable list(); /** - * Regenerate the API JWT Secret of a HealthBot. + * Returns all the resources of a particular type belonging to a subscription. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an entry of HealthBotKeysResponse. + * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - HealthBotKeyInner regenerateApiJwtSecret(String resourceGroupName, String botName); + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable list(Context context); /** - * Returns all the resources of a particular type belonging to a resource group. + * List all secrets of a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. + * @return health Bot Keys Response along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - PagedIterable listByResourceGroup(String resourceGroupName); + @ServiceMethod(returns = ReturnType.SINGLE) + Response listSecretsWithResponse(String resourceGroupName, String botName, + Context context); /** - * Returns all the resources of a particular type belonging to a resource group. + * List all secrets of a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param context The context to associate with this operation. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. + * @return health Bot Keys Response. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - PagedIterable listByResourceGroup(String resourceGroupName, Context context); + @ServiceMethod(returns = ReturnType.SINGLE) + HealthBotKeysResponseInner listSecrets(String resourceGroupName, String botName); /** - * Returns all the resources of a particular type belonging to a subscription. + * Regenerate the API JWT Secret of a HealthBot. * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. + * @return an entry of HealthBotKeysResponse along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - PagedIterable list(); + @ServiceMethod(returns = ReturnType.SINGLE) + Response regenerateApiJwtSecretWithResponse(String resourceGroupName, String botName, + Context context); /** - * Returns all the resources of a particular type belonging to a subscription. + * Regenerate the API JWT Secret of a HealthBot. * - * @param context The context to associate with this operation. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. + * @return an entry of HealthBotKeysResponse. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - PagedIterable list(Context context); + @ServiceMethod(returns = ReturnType.SINGLE) + HealthBotKeyInner regenerateApiJwtSecret(String resourceGroupName, String botName); } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/HealthbotClient.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/HealthbotManagementClient.java similarity index 79% rename from sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/HealthbotClient.java rename to sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/HealthbotManagementClient.java index 8e3431b9b3e4..46f826c5c5f2 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/HealthbotClient.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/HealthbotManagementClient.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.fluent; @@ -8,30 +8,30 @@ import java.time.Duration; /** - * The interface for HealthbotClient class. + * The interface for HealthbotManagementClient class. */ -public interface HealthbotClient { +public interface HealthbotManagementClient { /** - * Gets Azure Subscription ID. - * - * @return the subscriptionId value. - */ - String getSubscriptionId(); - - /** - * Gets server parameter. + * Gets Service host. * * @return the endpoint value. */ String getEndpoint(); /** - * Gets Api Version. + * Gets Version parameter. * * @return the apiVersion value. */ String getApiVersion(); + /** + * Gets The ID of the target subscription. The value must be an UUID. + * + * @return the subscriptionId value. + */ + String getSubscriptionId(); + /** * Gets The HTTP pipeline to send requests through. * @@ -47,16 +47,16 @@ public interface HealthbotClient { Duration getDefaultPollInterval(); /** - * Gets the BotsClient object to access its operations. + * Gets the OperationsClient object to access its operations. * - * @return the BotsClient object. + * @return the OperationsClient object. */ - BotsClient getBots(); + OperationsClient getOperations(); /** - * Gets the OperationsClient object to access its operations. + * Gets the BotsClient object to access its operations. * - * @return the OperationsClient object. + * @return the BotsClient object. */ - OperationsClient getOperations(); + BotsClient getBots(); } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/OperationsClient.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/OperationsClient.java index f115cb7a7bfb..960479c6b996 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/OperationsClient.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/OperationsClient.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.fluent; diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/models/HealthBotInner.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/models/HealthBotInner.java index 7f6bc2a18077..7a0252308876 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/models/HealthBotInner.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/models/HealthBotInner.java @@ -1,13 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.fluent.models; import com.azure.core.annotation.Fluent; import com.azure.core.management.Resource; import com.azure.core.management.SystemData; -import com.azure.core.util.logging.ClientLogger; import com.azure.json.JsonReader; import com.azure.json.JsonToken; import com.azure.json.JsonWriter; @@ -22,6 +21,11 @@ */ @Fluent public final class HealthBotInner extends Resource { + /* + * The set of properties specific to Azure Health Bot resource. + */ + private HealthBotProperties properties; + /* * SKU of the Azure Health Bot. */ @@ -33,12 +37,7 @@ public final class HealthBotInner extends Resource { private Identity identity; /* - * The set of properties specific to Azure Health Bot resource. - */ - private HealthBotProperties properties; - - /* - * Metadata pertaining to creation and last modification of the resource + * Azure Resource Manager metadata containing createdBy and modifiedBy information. */ private SystemData systemData; @@ -63,6 +62,26 @@ public final class HealthBotInner extends Resource { public HealthBotInner() { } + /** + * Get the properties property: The set of properties specific to Azure Health Bot resource. + * + * @return the properties value. + */ + public HealthBotProperties properties() { + return this.properties; + } + + /** + * Set the properties property: The set of properties specific to Azure Health Bot resource. + * + * @param properties the properties value to set. + * @return the HealthBotInner object itself. + */ + public HealthBotInner withProperties(HealthBotProperties properties) { + this.properties = properties; + return this; + } + /** * Get the sku property: SKU of the Azure Health Bot. * @@ -104,27 +123,7 @@ public HealthBotInner withIdentity(Identity identity) { } /** - * Get the properties property: The set of properties specific to Azure Health Bot resource. - * - * @return the properties value. - */ - public HealthBotProperties properties() { - return this.properties; - } - - /** - * Set the properties property: The set of properties specific to Azure Health Bot resource. - * - * @param properties the properties value to set. - * @return the HealthBotInner object itself. - */ - public HealthBotInner withProperties(HealthBotProperties properties) { - this.properties = properties; - return this; - } - - /** - * Get the systemData property: Metadata pertaining to creation and last modification of the resource. + * Get the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information. * * @return the systemData value. */ @@ -180,28 +179,6 @@ public HealthBotInner withTags(Map tags) { return this; } - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - if (sku() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Missing required property sku in model HealthBotInner")); - } else { - sku().validate(); - } - if (identity() != null) { - identity().validate(); - } - if (properties() != null) { - properties().validate(); - } - } - - private static final ClientLogger LOGGER = new ClientLogger(HealthBotInner.class); - /** * {@inheritDoc} */ @@ -211,8 +188,8 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStringField("location", location()); jsonWriter.writeMapField("tags", tags(), (writer, element) -> writer.writeString(element)); jsonWriter.writeJsonField("sku", this.sku); - jsonWriter.writeJsonField("identity", this.identity); jsonWriter.writeJsonField("properties", this.properties); + jsonWriter.writeJsonField("identity", this.identity); return jsonWriter.writeEndObject(); } @@ -245,10 +222,10 @@ public static HealthBotInner fromJson(JsonReader jsonReader) throws IOException deserializedHealthBotInner.withTags(tags); } else if ("sku".equals(fieldName)) { deserializedHealthBotInner.sku = Sku.fromJson(reader); - } else if ("identity".equals(fieldName)) { - deserializedHealthBotInner.identity = Identity.fromJson(reader); } else if ("properties".equals(fieldName)) { deserializedHealthBotInner.properties = HealthBotProperties.fromJson(reader); + } else if ("identity".equals(fieldName)) { + deserializedHealthBotInner.identity = Identity.fromJson(reader); } else if ("systemData".equals(fieldName)) { deserializedHealthBotInner.systemData = SystemData.fromJson(reader); } else { diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/models/HealthBotKeyInner.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/models/HealthBotKeyInner.java index 0a60b570841b..611b317712d5 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/models/HealthBotKeyInner.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/models/HealthBotKeyInner.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.fluent.models; -import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Immutable; import com.azure.json.JsonReader; import com.azure.json.JsonSerializable; import com.azure.json.JsonToken; @@ -14,7 +14,7 @@ /** * An entry of HealthBotKeysResponse. */ -@Fluent +@Immutable public final class HealthBotKeyInner implements JsonSerializable { /* * The name of the key. @@ -29,7 +29,7 @@ public final class HealthBotKeyInner implements JsonSerializable { /* * Array of Azure Health Bot Secrets. @@ -25,7 +25,7 @@ public final class HealthBotKeysResponseInner implements JsonSerializable secrets() { return this.secrets; } - /** - * Set the secrets property: Array of Azure Health Bot Secrets. - * - * @param secrets the secrets value to set. - * @return the HealthBotKeysResponseInner object itself. - */ - public HealthBotKeysResponseInner withSecrets(List secrets) { - this.secrets = secrets; - return this; - } - - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - if (secrets() != null) { - secrets().forEach(e -> e.validate()); - } - } - /** * {@inheritDoc} */ diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/models/OperationDetailInner.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/models/OperationDetailInner.java index 2f1ecc5453dc..1832ded80a3a 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/models/OperationDetailInner.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/fluent/models/OperationDetailInner.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.fluent.models; -import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Immutable; import com.azure.json.JsonReader; import com.azure.json.JsonSerializable; import com.azure.json.JsonToken; @@ -15,7 +15,7 @@ /** * Operation detail payload. */ -@Fluent +@Immutable public final class OperationDetailInner implements JsonSerializable { /* * Name of the operation @@ -45,7 +45,7 @@ public final class OperationDetailInner implements JsonSerializable>> create(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, + Mono> getByResourceGroup(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, - @QueryParam("api-version") String apiVersion, @BodyParam("application/json") HealthBotInner parameters, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) - @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}") - @ExpectedResponses({ 200, 201 }) + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}") + @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Response createSync(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, + Response getByResourceGroupSync(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, - @QueryParam("api-version") String apiVersion, @BodyParam("application/json") HealthBotInner parameters, @HeaderParam("Accept") String accept, Context context); - @Headers({ "Content-Type: application/json" }) - @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}") - @ExpectedResponses({ 200 }) + @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}") + @ExpectedResponses({ 200, 201 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> getByResourceGroup(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, + Mono>> create(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") HealthBotInner parameters, Context context); - @Headers({ "Content-Type: application/json" }) - @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}") - @ExpectedResponses({ 200 }) + @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}") + @ExpectedResponses({ 200, 201 }) @UnexpectedResponseExceptionType(ManagementException.class) - Response getByResourceGroupSync(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, + Response createSync(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") HealthBotInner parameters, Context context); - @Headers({ "Content-Type: application/json" }) @Patch("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}") @ExpectedResponses({ 200, 201 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono>> update(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, + Mono>> update(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, - @QueryParam("api-version") String apiVersion, - @BodyParam("application/json") HealthBotUpdateParameters parameters, @HeaderParam("Accept") String accept, - Context context); + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") HealthBotUpdateParameters parameters, Context context); - @Headers({ "Content-Type: application/json" }) @Patch("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}") @ExpectedResponses({ 200, 201 }) @UnexpectedResponseExceptionType(ManagementException.class) - Response updateSync(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, + Response updateSync(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, - @QueryParam("api-version") String apiVersion, - @BodyParam("application/json") HealthBotUpdateParameters parameters, @HeaderParam("Accept") String accept, - Context context); + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") HealthBotUpdateParameters parameters, Context context); - @Headers({ "Content-Type: application/json" }) + @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) @Delete("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}") @ExpectedResponses({ 200, 202, 204 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono>> delete(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, + Mono>> delete(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + Context context); - @Headers({ "Content-Type: application/json" }) + @Headers({ "Accept: application/json;q=0.9", "Content-Type: application/json" }) @Delete("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}") @ExpectedResponses({ 200, 202, 204 }) @UnexpectedResponseExceptionType(ManagementException.class) - Response deleteSync(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, + Response deleteSync(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + Context context); @Headers({ "Content-Type: application/json" }) - @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}/listSecrets") + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> listSecrets(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, - @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + Mono> listByResourceGroup(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @HeaderParam("Accept") String accept, + Context context); @Headers({ "Content-Type: application/json" }) - @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}/listSecrets") + @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Response listSecretsSync(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, - @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + Response listByResourceGroupSync(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @HeaderParam("Accept") String accept, + Context context); @Headers({ "Content-Type: application/json" }) - @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}/regenerateApiJwtSecret") + @Get("/subscriptions/{subscriptionId}/providers/Microsoft.HealthBot/healthBots") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> regenerateApiJwtSecret(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, - @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + Mono> list(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) - @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}/regenerateApiJwtSecret") + @Get("/subscriptions/{subscriptionId}/providers/Microsoft.HealthBot/healthBots") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Response regenerateApiJwtSecretSync(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, - @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + Response listSync(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) - @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots") + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}/listSecrets") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> listByResourceGroup(@HostParam("$host") String endpoint, - @PathParam("resourceGroupName") String resourceGroupName, - @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + Mono> listSecrets(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) - @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots") + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}/listSecrets") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Response listByResourceGroupSync(@HostParam("$host") String endpoint, - @PathParam("resourceGroupName") String resourceGroupName, - @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + Response listSecretsSync(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) - @Get("/subscriptions/{subscriptionId}/providers/Microsoft.HealthBot/healthBots") + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}/regenerateApiJwtSecret") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> list(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + Mono> regenerateApiJwtSecret(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) - @Get("/subscriptions/{subscriptionId}/providers/Microsoft.HealthBot/healthBots") + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HealthBot/healthBots/{botName}/regenerateApiJwtSecret") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Response listSync(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + Response regenerateApiJwtSecretSync(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("botName") String botName, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) @@ -229,7 +222,7 @@ Response listSync(@HostParam("$host") String endpoint, @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) Mono> listByResourceGroupNext( - @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) @@ -237,7 +230,7 @@ Mono> listByResourceGroupNext( @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) Response listByResourceGroupNextSync( - @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) @@ -245,20 +238,90 @@ Response listByResourceGroupNextSync( @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) Mono> listNext(@PathParam(value = "nextLink", encoded = true) String nextLink, - @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) @Get("{nextLink}") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) Response listNextSync(@PathParam(value = "nextLink", encoded = true) String nextLink, - @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, Context context); + } + + /** + * Get a HealthBot. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a HealthBot along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> getByResourceGroupWithResponseAsync(String resourceGroupName, + String botName) { + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.getByResourceGroup(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Get a HealthBot. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a HealthBot on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono getByResourceGroupAsync(String resourceGroupName, String botName) { + return getByResourceGroupWithResponseAsync(resourceGroupName, botName) + .flatMap(res -> Mono.justOrEmpty(res.getValue())); + } + + /** + * Get a HealthBot. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a HealthBot along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getByResourceGroupWithResponse(String resourceGroupName, String botName, + Context context) { + final String accept = "application/json"; + return service.getByResourceGroupSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, accept, context); + } + + /** + * Get a HealthBot. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a HealthBot. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public HealthBotInner getByResourceGroup(String resourceGroupName, String botName) { + return getByResourceGroupWithResponse(resourceGroupName, botName, Context.NONE).getValue(); } /** * Create a new Azure Health Bot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the created Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -270,37 +333,18 @@ Response listNextSync(@PathParam(value = "nextLink", encoded = @ServiceMethod(returns = ReturnType.SINGLE) private Mono>> createWithResponseAsync(String resourceGroupName, String botName, HealthBotInner parameters) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - return Mono.error(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } - if (parameters == null) { - return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); - } else { - parameters.validate(); - } + final String contentType = "application/json"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.create(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, botName, this.client.getApiVersion(), parameters, accept, context)) + .withContext(context -> service.create(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, contentType, accept, parameters, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** * Create a new Azure Health Bot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the created Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -311,39 +355,16 @@ private Mono>> createWithResponseAsync(String resource @ServiceMethod(returns = ReturnType.SINGLE) private Response createWithResponse(String resourceGroupName, String botName, HealthBotInner parameters) { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } - if (parameters == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); - } else { - parameters.validate(); - } + final String contentType = "application/json"; final String accept = "application/json"; - return service.createSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - botName, this.client.getApiVersion(), parameters, accept, Context.NONE); + return service.createSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, contentType, accept, parameters, Context.NONE); } /** * Create a new Azure Health Bot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the created Azure Health Bot. * @param context The context to associate with this operation. @@ -355,39 +376,16 @@ private Response createWithResponse(String resourceGroupName, String @ServiceMethod(returns = ReturnType.SINGLE) private Response createWithResponse(String resourceGroupName, String botName, HealthBotInner parameters, Context context) { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } - if (parameters == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); - } else { - parameters.validate(); - } + final String contentType = "application/json"; final String accept = "application/json"; - return service.createSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - botName, this.client.getApiVersion(), parameters, accept, context); + return service.createSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, contentType, accept, parameters, context); } /** * Create a new Azure Health Bot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the created Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -406,7 +404,7 @@ private PollerFlux, HealthBotInner> beginCreateAsync( /** * Create a new Azure Health Bot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the created Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -425,7 +423,7 @@ public SyncPoller, HealthBotInner> beginCreate(String /** * Create a new Azure Health Bot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the created Azure Health Bot. * @param context The context to associate with this operation. @@ -445,7 +443,7 @@ public SyncPoller, HealthBotInner> beginCreate(String /** * Create a new Azure Health Bot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the created Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -462,7 +460,7 @@ private Mono createAsync(String resourceGroupName, String botNam /** * Create a new Azure Health Bot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the created Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -478,7 +476,7 @@ public HealthBotInner create(String resourceGroupName, String botName, HealthBot /** * Create a new Azure Health Bot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the created Azure Health Bot. * @param context The context to associate with this operation. @@ -492,114 +490,10 @@ public HealthBotInner create(String resourceGroupName, String botName, HealthBot return beginCreate(resourceGroupName, botName, parameters, context).getFinalResult(); } - /** - * Get a HealthBot. - * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a HealthBot along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getByResourceGroupWithResponseAsync(String resourceGroupName, - String botName) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - return Mono.error(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } - final String accept = "application/json"; - return FluxUtil - .withContext( - context -> service.getByResourceGroup(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, botName, this.client.getApiVersion(), accept, context)) - .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); - } - - /** - * Get a HealthBot. - * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a HealthBot on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono getByResourceGroupAsync(String resourceGroupName, String botName) { - return getByResourceGroupWithResponseAsync(resourceGroupName, botName) - .flatMap(res -> Mono.justOrEmpty(res.getValue())); - } - - /** - * Get a HealthBot. - * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a HealthBot along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response getByResourceGroupWithResponse(String resourceGroupName, String botName, - Context context) { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } - final String accept = "application/json"; - return service.getByResourceGroupSync(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, botName, this.client.getApiVersion(), accept, context); - } - - /** - * Get a HealthBot. - * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a HealthBot. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public HealthBotInner getByResourceGroup(String resourceGroupName, String botName) { - return getByResourceGroupWithResponse(resourceGroupName, botName, Context.NONE).getValue(); - } - /** * Patch a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the required Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -611,37 +505,18 @@ public HealthBotInner getByResourceGroup(String resourceGroupName, String botNam @ServiceMethod(returns = ReturnType.SINGLE) private Mono>> updateWithResponseAsync(String resourceGroupName, String botName, HealthBotUpdateParameters parameters) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - return Mono.error(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } - if (parameters == null) { - return Mono.error(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); - } else { - parameters.validate(); - } + final String contentType = "application/json"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, botName, this.client.getApiVersion(), parameters, accept, context)) + .withContext(context -> service.update(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, contentType, accept, parameters, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** * Patch a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the required Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -652,39 +527,16 @@ private Mono>> updateWithResponseAsync(String resource @ServiceMethod(returns = ReturnType.SINGLE) private Response updateWithResponse(String resourceGroupName, String botName, HealthBotUpdateParameters parameters) { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } - if (parameters == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); - } else { - parameters.validate(); - } + final String contentType = "application/json"; final String accept = "application/json"; - return service.updateSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - botName, this.client.getApiVersion(), parameters, accept, Context.NONE); + return service.updateSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, contentType, accept, parameters, Context.NONE); } /** * Patch a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the required Azure Health Bot. * @param context The context to associate with this operation. @@ -696,39 +548,16 @@ private Response updateWithResponse(String resourceGroupName, String @ServiceMethod(returns = ReturnType.SINGLE) private Response updateWithResponse(String resourceGroupName, String botName, HealthBotUpdateParameters parameters, Context context) { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } - if (parameters == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter parameters is required and cannot be null.")); - } else { - parameters.validate(); - } + final String contentType = "application/json"; final String accept = "application/json"; - return service.updateSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - botName, this.client.getApiVersion(), parameters, accept, context); + return service.updateSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, contentType, accept, parameters, context); } /** * Patch a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the required Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -747,7 +576,7 @@ private PollerFlux, HealthBotInner> beginUpdateAsync( /** * Patch a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the required Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -766,7 +595,7 @@ public SyncPoller, HealthBotInner> beginUpdate(String /** * Patch a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the required Azure Health Bot. * @param context The context to associate with this operation. @@ -786,7 +615,7 @@ public SyncPoller, HealthBotInner> beginUpdate(String /** * Patch a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the required Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -804,7 +633,7 @@ private Mono updateAsync(String resourceGroupName, String botNam /** * Patch a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the required Azure Health Bot. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -820,7 +649,7 @@ public HealthBotInner update(String resourceGroupName, String botName, HealthBot /** * Patch a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param parameters The parameters to provide for the required Azure Health Bot. * @param context The context to associate with this operation. @@ -838,7 +667,7 @@ public HealthBotInner update(String resourceGroupName, String botName, HealthBot /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -847,32 +676,16 @@ public HealthBotInner update(String resourceGroupName, String botName, HealthBot */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono>> deleteWithResponseAsync(String resourceGroupName, String botName) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - return Mono.error(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } - final String accept = "application/json"; return FluxUtil - .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, botName, this.client.getApiVersion(), accept, context)) + .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -881,33 +694,14 @@ private Mono>> deleteWithResponseAsync(String resource */ @ServiceMethod(returns = ReturnType.SINGLE) private Response deleteWithResponse(String resourceGroupName, String botName) { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } - final String accept = "application/json"; - return service.deleteSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - botName, this.client.getApiVersion(), accept, Context.NONE); + return service.deleteSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, Context.NONE); } /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -917,33 +711,14 @@ private Response deleteWithResponse(String resourceGroupName, String */ @ServiceMethod(returns = ReturnType.SINGLE) private Response deleteWithResponse(String resourceGroupName, String botName, Context context) { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } - final String accept = "application/json"; - return service.deleteSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - botName, this.client.getApiVersion(), accept, context); + return service.deleteSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, context); } /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -960,7 +735,7 @@ private PollerFlux, Void> beginDeleteAsync(String resourceGroup /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -976,7 +751,7 @@ public SyncPoller, Void> beginDelete(String resourceGroupName, /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -993,7 +768,7 @@ public SyncPoller, Void> beginDelete(String resourceGroupName, /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -1008,7 +783,7 @@ private Mono deleteAsync(String resourceGroupName, String botName) { /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -1022,7 +797,7 @@ public void delete(String resourceGroupName, String botName) { /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -1035,296 +810,159 @@ public void delete(String resourceGroupName, String botName, Context context) { } /** - * List all secrets of a HealthBot. + * Returns all the resources of a particular type belonging to a resource group. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return health Bot Keys Response along with {@link Response} on successful completion of {@link Mono}. + * @return the list of Azure Health Bot operation response along with {@link PagedResponse} on successful completion + * of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSecretsWithResponseAsync(String resourceGroupName, - String botName) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - return Mono.error(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } + private Mono> listByResourceGroupSinglePageAsync(String resourceGroupName) { final String accept = "application/json"; return FluxUtil - .withContext(context -> service.listSecrets(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, botName, this.client.getApiVersion(), accept, context)) + .withContext(context -> service.listByResourceGroup(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, accept, context)) + .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), + res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** - * List all secrets of a HealthBot. + * Returns all the resources of a particular type belonging to a resource group. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return health Bot Keys Response on successful completion of {@link Mono}. + * @return the list of Azure Health Bot operation response as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono listSecretsAsync(String resourceGroupName, String botName) { - return listSecretsWithResponseAsync(resourceGroupName, botName) - .flatMap(res -> Mono.justOrEmpty(res.getValue())); + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listByResourceGroupAsync(String resourceGroupName) { + return new PagedFlux<>(() -> listByResourceGroupSinglePageAsync(resourceGroupName), + nextLink -> listByResourceGroupNextSinglePageAsync(nextLink)); } /** - * List all secrets of a HealthBot. + * Returns all the resources of a particular type belonging to a resource group. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. - * @param context The context to associate with this operation. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return health Bot Keys Response along with {@link Response}. + * @return the list of Azure Health Bot operation response along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response listSecretsWithResponse(String resourceGroupName, String botName, - Context context) { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } + private PagedResponse listByResourceGroupSinglePage(String resourceGroupName) { final String accept = "application/json"; - return service.listSecretsSync(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - botName, this.client.getApiVersion(), accept, context); - } - - /** - * List all secrets of a HealthBot. - * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return health Bot Keys Response. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public HealthBotKeysResponseInner listSecrets(String resourceGroupName, String botName) { - return listSecretsWithResponse(resourceGroupName, botName, Context.NONE).getValue(); + Response res = service.listByResourceGroupSync(this.client.getEndpoint(), + this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** - * Regenerate the API JWT Secret of a HealthBot. + * Returns all the resources of a particular type belonging to a resource group. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an entry of HealthBotKeysResponse along with {@link Response} on successful completion of {@link Mono}. + * @return the list of Azure Health Bot operation response along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> regenerateApiJwtSecretWithResponseAsync(String resourceGroupName, - String botName) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - return Mono.error(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } + private PagedResponse listByResourceGroupSinglePage(String resourceGroupName, Context context) { final String accept = "application/json"; - return FluxUtil - .withContext( - context -> service.regenerateApiJwtSecret(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, botName, this.client.getApiVersion(), accept, context)) - .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + Response res = service.listByResourceGroupSync(this.client.getEndpoint(), + this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** - * Regenerate the API JWT Secret of a HealthBot. + * Returns all the resources of a particular type belonging to a resource group. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an entry of HealthBotKeysResponse on successful completion of {@link Mono}. + * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono regenerateApiJwtSecretAsync(String resourceGroupName, String botName) { - return regenerateApiJwtSecretWithResponseAsync(resourceGroupName, botName) - .flatMap(res -> Mono.justOrEmpty(res.getValue())); + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listByResourceGroup(String resourceGroupName) { + return new PagedIterable<>(() -> listByResourceGroupSinglePage(resourceGroupName), + nextLink -> listByResourceGroupNextSinglePage(nextLink)); } /** - * Regenerate the API JWT Secret of a HealthBot. + * Returns all the resources of a particular type belonging to a resource group. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an entry of HealthBotKeysResponse along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response regenerateApiJwtSecretWithResponse(String resourceGroupName, String botName, - Context context) { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (botName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter botName is required and cannot be null.")); - } - final String accept = "application/json"; - return service.regenerateApiJwtSecretSync(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, botName, this.client.getApiVersion(), accept, context); - } - - /** - * Regenerate the API JWT Secret of a HealthBot. - * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an entry of HealthBotKeysResponse. + * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - public HealthBotKeyInner regenerateApiJwtSecret(String resourceGroupName, String botName) { - return regenerateApiJwtSecretWithResponse(resourceGroupName, botName, Context.NONE).getValue(); + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listByResourceGroup(String resourceGroupName, Context context) { + return new PagedIterable<>(() -> listByResourceGroupSinglePage(resourceGroupName, context), + nextLink -> listByResourceGroupNextSinglePage(nextLink, context)); } /** - * Returns all the resources of a particular type belonging to a resource group. + * Returns all the resources of a particular type belonging to a subscription. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return the list of Azure Health Bot operation response along with {@link PagedResponse} on successful completion * of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listByResourceGroupSinglePageAsync(String resourceGroupName) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } + private Mono> listSinglePageAsync() { final String accept = "application/json"; return FluxUtil - .withContext(context -> service.listByResourceGroup(this.client.getEndpoint(), resourceGroupName, - this.client.getSubscriptionId(), this.client.getApiVersion(), accept, context)) + .withContext(context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** - * Returns all the resources of a particular type belonging to a resource group. + * Returns all the resources of a particular type belonging to a subscription. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return the list of Azure Health Bot operation response as paginated response with {@link PagedFlux}. */ @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listByResourceGroupAsync(String resourceGroupName) { - return new PagedFlux<>(() -> listByResourceGroupSinglePageAsync(resourceGroupName), - nextLink -> listByResourceGroupNextSinglePageAsync(nextLink)); + private PagedFlux listAsync() { + return new PagedFlux<>(() -> listSinglePageAsync(), nextLink -> listNextSinglePageAsync(nextLink)); } /** - * Returns all the resources of a particular type belonging to a resource group. + * Returns all the resources of a particular type belonging to a subscription. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return the list of Azure Health Bot operation response along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private PagedResponse listByResourceGroupSinglePage(String resourceGroupName) { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } + private PagedResponse listSinglePage() { final String accept = "application/json"; - Response res = service.listByResourceGroupSync(this.client.getEndpoint(), resourceGroupName, - this.client.getSubscriptionId(), this.client.getApiVersion(), accept, Context.NONE); + Response res = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, Context.NONE); return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null); } /** - * Returns all the resources of a particular type belonging to a resource group. + * Returns all the resources of a particular type belonging to a subscription. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -1332,47 +970,29 @@ private PagedResponse listByResourceGroupSinglePage(String resou * @return the list of Azure Health Bot operation response along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private PagedResponse listByResourceGroupSinglePage(String resourceGroupName, Context context) { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (resourceGroupName == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } + private PagedResponse listSinglePage(Context context) { final String accept = "application/json"; - Response res = service.listByResourceGroupSync(this.client.getEndpoint(), resourceGroupName, - this.client.getSubscriptionId(), this.client.getApiVersion(), accept, context); + Response res = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, context); return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null); } /** - * Returns all the resources of a particular type belonging to a resource group. + * Returns all the resources of a particular type belonging to a subscription. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. */ @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listByResourceGroup(String resourceGroupName) { - return new PagedIterable<>(() -> listByResourceGroupSinglePage(resourceGroupName), - nextLink -> listByResourceGroupNextSinglePage(nextLink)); + public PagedIterable list() { + return new PagedIterable<>(() -> listSinglePage(), nextLink -> listNextSinglePage(nextLink)); } /** - * Returns all the resources of a particular type belonging to a resource group. + * Returns all the resources of a particular type belonging to a subscription. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -1380,128 +1000,149 @@ public PagedIterable listByResourceGroup(String resourceGroupNam * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. */ @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listByResourceGroup(String resourceGroupName, Context context) { - return new PagedIterable<>(() -> listByResourceGroupSinglePage(resourceGroupName, context), - nextLink -> listByResourceGroupNextSinglePage(nextLink, context)); + public PagedIterable list(Context context) { + return new PagedIterable<>(() -> listSinglePage(context), nextLink -> listNextSinglePage(nextLink, context)); } /** - * Returns all the resources of a particular type belonging to a subscription. + * List all secrets of a HealthBot. * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list of Azure Health Bot operation response along with {@link PagedResponse} on successful completion - * of {@link Mono}. + * @return health Bot Keys Response along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSinglePageAsync() { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } + private Mono> listSecretsWithResponseAsync(String resourceGroupName, + String botName) { final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), this.client.getSubscriptionId(), - this.client.getApiVersion(), accept, context)) - .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), - res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) + .withContext(context -> service.listSecrets(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** - * Returns all the resources of a particular type belonging to a subscription. + * List all secrets of a HealthBot. * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list of Azure Health Bot operation response as paginated response with {@link PagedFlux}. + * @return health Bot Keys Response on successful completion of {@link Mono}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync() { - return new PagedFlux<>(() -> listSinglePageAsync(), nextLink -> listNextSinglePageAsync(nextLink)); + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono listSecretsAsync(String resourceGroupName, String botName) { + return listSecretsWithResponseAsync(resourceGroupName, botName) + .flatMap(res -> Mono.justOrEmpty(res.getValue())); } /** - * Returns all the resources of a particular type belonging to a subscription. + * List all secrets of a HealthBot. * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list of Azure Health Bot operation response along with {@link PagedResponse}. + * @return health Bot Keys Response along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private PagedResponse listSinglePage() { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } + public Response listSecretsWithResponse(String resourceGroupName, String botName, + Context context) { final String accept = "application/json"; - Response res = service.listSync(this.client.getEndpoint(), this.client.getSubscriptionId(), - this.client.getApiVersion(), accept, Context.NONE); - return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), - res.getValue().nextLink(), null); + return service.listSecretsSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, accept, context); } /** - * Returns all the resources of a particular type belonging to a subscription. + * List all secrets of a HealthBot. * - * @param context The context to associate with this operation. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list of Azure Health Bot operation response along with {@link PagedResponse}. + * @return health Bot Keys Response. */ @ServiceMethod(returns = ReturnType.SINGLE) - private PagedResponse listSinglePage(Context context) { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } + public HealthBotKeysResponseInner listSecrets(String resourceGroupName, String botName) { + return listSecretsWithResponse(resourceGroupName, botName, Context.NONE).getValue(); + } + + /** + * Regenerate the API JWT Secret of a HealthBot. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an entry of HealthBotKeysResponse along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> regenerateApiJwtSecretWithResponseAsync(String resourceGroupName, + String botName) { final String accept = "application/json"; - Response res = service.listSync(this.client.getEndpoint(), this.client.getSubscriptionId(), - this.client.getApiVersion(), accept, context); - return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), - res.getValue().nextLink(), null); + return FluxUtil + .withContext( + context -> service.regenerateApiJwtSecret(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** - * Returns all the resources of a particular type belonging to a subscription. + * Regenerate the API JWT Secret of a HealthBot. * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. + * @return an entry of HealthBotKeysResponse on successful completion of {@link Mono}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable list() { - return new PagedIterable<>(() -> listSinglePage(), nextLink -> listNextSinglePage(nextLink)); + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono regenerateApiJwtSecretAsync(String resourceGroupName, String botName) { + return regenerateApiJwtSecretWithResponseAsync(resourceGroupName, botName) + .flatMap(res -> Mono.justOrEmpty(res.getValue())); } /** - * Returns all the resources of a particular type belonging to a subscription. + * Regenerate the API JWT Secret of a HealthBot. * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. + * @return an entry of HealthBotKeysResponse along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable list(Context context) { - return new PagedIterable<>(() -> listSinglePage(context), nextLink -> listNextSinglePage(nextLink, context)); + @ServiceMethod(returns = ReturnType.SINGLE) + public Response regenerateApiJwtSecretWithResponse(String resourceGroupName, String botName, + Context context) { + final String accept = "application/json"; + return service.regenerateApiJwtSecretSync(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, botName, accept, context); + } + + /** + * Regenerate the API JWT Secret of a HealthBot. + * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an entry of HealthBotKeysResponse. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public HealthBotKeyInner regenerateApiJwtSecret(String resourceGroupName, String botName) { + return regenerateApiJwtSecretWithResponse(resourceGroupName, botName, Context.NONE).getValue(); } /** @@ -1516,13 +1157,6 @@ public PagedIterable list(Context context) { */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> listByResourceGroupNextSinglePageAsync(String nextLink) { - if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); - } - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } final String accept = "application/json"; return FluxUtil .withContext( @@ -1543,15 +1177,6 @@ private Mono> listByResourceGroupNextSinglePageAsy */ @ServiceMethod(returns = ReturnType.SINGLE) private PagedResponse listByResourceGroupNextSinglePage(String nextLink) { - if (nextLink == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); - } - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } final String accept = "application/json"; Response res = service.listByResourceGroupNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); @@ -1571,15 +1196,6 @@ private PagedResponse listByResourceGroupNextSinglePage(String n */ @ServiceMethod(returns = ReturnType.SINGLE) private PagedResponse listByResourceGroupNextSinglePage(String nextLink, Context context) { - if (nextLink == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); - } - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } final String accept = "application/json"; Response res = service.listByResourceGroupNextSync(nextLink, this.client.getEndpoint(), accept, context); @@ -1599,13 +1215,6 @@ private PagedResponse listByResourceGroupNextSinglePage(String n */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> listNextSinglePageAsync(String nextLink) { - if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); - } - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } final String accept = "application/json"; return FluxUtil.withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), @@ -1624,15 +1233,6 @@ private Mono> listNextSinglePageAsync(String nextL */ @ServiceMethod(returns = ReturnType.SINGLE) private PagedResponse listNextSinglePage(String nextLink) { - if (nextLink == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); - } - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } final String accept = "application/json"; Response res = service.listNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), @@ -1651,20 +1251,9 @@ private PagedResponse listNextSinglePage(String nextLink) { */ @ServiceMethod(returns = ReturnType.SINGLE) private PagedResponse listNextSinglePage(String nextLink, Context context) { - if (nextLink == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); - } - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } final String accept = "application/json"; Response res = service.listNextSync(nextLink, this.client.getEndpoint(), accept, context); return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null); } - - private static final ClientLogger LOGGER = new ClientLogger(BotsClientImpl.class); } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/BotsImpl.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/BotsImpl.java index 721301798b4d..9f0d202dc9d5 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/BotsImpl.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/BotsImpl.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.implementation; @@ -59,6 +59,26 @@ public void delete(String resourceGroupName, String botName, Context context) { this.serviceClient().delete(resourceGroupName, botName, context); } + public PagedIterable listByResourceGroup(String resourceGroupName) { + PagedIterable inner = this.serviceClient().listByResourceGroup(resourceGroupName); + return ResourceManagerUtils.mapPage(inner, inner1 -> new HealthBotImpl(inner1, this.manager())); + } + + public PagedIterable listByResourceGroup(String resourceGroupName, Context context) { + PagedIterable inner = this.serviceClient().listByResourceGroup(resourceGroupName, context); + return ResourceManagerUtils.mapPage(inner, inner1 -> new HealthBotImpl(inner1, this.manager())); + } + + public PagedIterable list() { + PagedIterable inner = this.serviceClient().list(); + return ResourceManagerUtils.mapPage(inner, inner1 -> new HealthBotImpl(inner1, this.manager())); + } + + public PagedIterable list(Context context) { + PagedIterable inner = this.serviceClient().list(context); + return ResourceManagerUtils.mapPage(inner, inner1 -> new HealthBotImpl(inner1, this.manager())); + } + public Response listSecretsWithResponse(String resourceGroupName, String botName, Context context) { Response inner @@ -101,26 +121,6 @@ public HealthBotKey regenerateApiJwtSecret(String resourceGroupName, String botN } } - public PagedIterable listByResourceGroup(String resourceGroupName) { - PagedIterable inner = this.serviceClient().listByResourceGroup(resourceGroupName); - return ResourceManagerUtils.mapPage(inner, inner1 -> new HealthBotImpl(inner1, this.manager())); - } - - public PagedIterable listByResourceGroup(String resourceGroupName, Context context) { - PagedIterable inner = this.serviceClient().listByResourceGroup(resourceGroupName, context); - return ResourceManagerUtils.mapPage(inner, inner1 -> new HealthBotImpl(inner1, this.manager())); - } - - public PagedIterable list() { - PagedIterable inner = this.serviceClient().list(); - return ResourceManagerUtils.mapPage(inner, inner1 -> new HealthBotImpl(inner1, this.manager())); - } - - public PagedIterable list(Context context) { - PagedIterable inner = this.serviceClient().list(context); - return ResourceManagerUtils.mapPage(inner, inner1 -> new HealthBotImpl(inner1, this.manager())); - } - public HealthBot getById(String id) { String resourceGroupName = ResourceManagerUtils.getValueFromIdByName(id, "resourceGroups"); if (resourceGroupName == null) { diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthBotImpl.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthBotImpl.java index f1c7f5559b66..52334c17117d 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthBotImpl.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthBotImpl.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.implementation; @@ -49,6 +49,10 @@ public Map tags() { } } + public HealthBotProperties properties() { + return this.innerModel().properties(); + } + public Sku sku() { return this.innerModel().sku(); } @@ -57,10 +61,6 @@ public Identity identity() { return this.innerModel().identity(); } - public HealthBotProperties properties() { - return this.innerModel().properties(); - } - public SystemData systemData() { return this.innerModel().systemData(); } @@ -202,22 +202,22 @@ public HealthBotImpl withTags(Map tags) { } } - public HealthBotImpl withIdentity(Identity identity) { + public HealthBotImpl withProperties(HealthBotProperties properties) { if (isInCreateMode()) { - this.innerModel().withIdentity(identity); + this.innerModel().withProperties(properties); return this; } else { - this.updateParameters.withIdentity(identity); + this.updateParameters.withProperties(properties); return this; } } - public HealthBotImpl withProperties(HealthBotProperties properties) { + public HealthBotImpl withIdentity(Identity identity) { if (isInCreateMode()) { - this.innerModel().withProperties(properties); + this.innerModel().withIdentity(identity); return this; } else { - this.updateParameters.withProperties(properties); + this.updateParameters.withIdentity(identity); return this; } } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthBotKeyImpl.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthBotKeyImpl.java index 06f8b9d56b9d..a1ce425218db 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthBotKeyImpl.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthBotKeyImpl.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.implementation; diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthBotKeysResponseImpl.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthBotKeysResponseImpl.java index 06d843b817cc..286663789eaf 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthBotKeysResponseImpl.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthBotKeysResponseImpl.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.implementation; diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthbotClientBuilder.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthbotManagementClientBuilder.java similarity index 63% rename from sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthbotClientBuilder.java rename to sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthbotManagementClientBuilder.java index 7d8818fba68e..71a1d1c6f7f9 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthbotClientBuilder.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthbotManagementClientBuilder.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.implementation; @@ -15,39 +15,39 @@ import java.time.Duration; /** - * A builder for creating a new instance of the HealthbotClientImpl type. + * A builder for creating a new instance of the HealthbotManagementClientImpl type. */ -@ServiceClientBuilder(serviceClients = { HealthbotClientImpl.class }) -public final class HealthbotClientBuilder { +@ServiceClientBuilder(serviceClients = { HealthbotManagementClientImpl.class }) +public final class HealthbotManagementClientBuilder { /* - * Azure Subscription ID. + * Service host */ - private String subscriptionId; + private String endpoint; /** - * Sets Azure Subscription ID. + * Sets Service host. * - * @param subscriptionId the subscriptionId value. - * @return the HealthbotClientBuilder. + * @param endpoint the endpoint value. + * @return the HealthbotManagementClientBuilder. */ - public HealthbotClientBuilder subscriptionId(String subscriptionId) { - this.subscriptionId = subscriptionId; + public HealthbotManagementClientBuilder endpoint(String endpoint) { + this.endpoint = endpoint; return this; } /* - * server parameter + * The ID of the target subscription. The value must be an UUID. */ - private String endpoint; + private String subscriptionId; /** - * Sets server parameter. + * Sets The ID of the target subscription. The value must be an UUID. * - * @param endpoint the endpoint value. - * @return the HealthbotClientBuilder. + * @param subscriptionId the subscriptionId value. + * @return the HealthbotManagementClientBuilder. */ - public HealthbotClientBuilder endpoint(String endpoint) { - this.endpoint = endpoint; + public HealthbotManagementClientBuilder subscriptionId(String subscriptionId) { + this.subscriptionId = subscriptionId; return this; } @@ -60,9 +60,9 @@ public HealthbotClientBuilder endpoint(String endpoint) { * Sets The environment to connect to. * * @param environment the environment value. - * @return the HealthbotClientBuilder. + * @return the HealthbotManagementClientBuilder. */ - public HealthbotClientBuilder environment(AzureEnvironment environment) { + public HealthbotManagementClientBuilder environment(AzureEnvironment environment) { this.environment = environment; return this; } @@ -76,9 +76,9 @@ public HealthbotClientBuilder environment(AzureEnvironment environment) { * Sets The HTTP pipeline to send requests through. * * @param pipeline the pipeline value. - * @return the HealthbotClientBuilder. + * @return the HealthbotManagementClientBuilder. */ - public HealthbotClientBuilder pipeline(HttpPipeline pipeline) { + public HealthbotManagementClientBuilder pipeline(HttpPipeline pipeline) { this.pipeline = pipeline; return this; } @@ -92,9 +92,9 @@ public HealthbotClientBuilder pipeline(HttpPipeline pipeline) { * Sets The default poll interval for long-running operation. * * @param defaultPollInterval the defaultPollInterval value. - * @return the HealthbotClientBuilder. + * @return the HealthbotManagementClientBuilder. */ - public HealthbotClientBuilder defaultPollInterval(Duration defaultPollInterval) { + public HealthbotManagementClientBuilder defaultPollInterval(Duration defaultPollInterval) { this.defaultPollInterval = defaultPollInterval; return this; } @@ -108,19 +108,19 @@ public HealthbotClientBuilder defaultPollInterval(Duration defaultPollInterval) * Sets The serializer to serialize an object into a string. * * @param serializerAdapter the serializerAdapter value. - * @return the HealthbotClientBuilder. + * @return the HealthbotManagementClientBuilder. */ - public HealthbotClientBuilder serializerAdapter(SerializerAdapter serializerAdapter) { + public HealthbotManagementClientBuilder serializerAdapter(SerializerAdapter serializerAdapter) { this.serializerAdapter = serializerAdapter; return this; } /** - * Builds an instance of HealthbotClientImpl with the provided parameters. + * Builds an instance of HealthbotManagementClientImpl with the provided parameters. * - * @return an instance of HealthbotClientImpl. + * @return an instance of HealthbotManagementClientImpl. */ - public HealthbotClientImpl buildClient() { + public HealthbotManagementClientImpl buildClient() { String localEndpoint = (endpoint != null) ? endpoint : "https://management.azure.com"; AzureEnvironment localEnvironment = (environment != null) ? environment : AzureEnvironment.AZURE; HttpPipeline localPipeline = (pipeline != null) @@ -131,8 +131,8 @@ public HealthbotClientImpl buildClient() { SerializerAdapter localSerializerAdapter = (serializerAdapter != null) ? serializerAdapter : SerializerFactory.createDefaultManagementSerializerAdapter(); - HealthbotClientImpl client = new HealthbotClientImpl(localPipeline, localSerializerAdapter, - localDefaultPollInterval, localEnvironment, this.subscriptionId, localEndpoint); + HealthbotManagementClientImpl client = new HealthbotManagementClientImpl(localPipeline, localSerializerAdapter, + localDefaultPollInterval, localEnvironment, localEndpoint, this.subscriptionId); return client; } } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthbotClientImpl.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthbotManagementClientImpl.java similarity index 90% rename from sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthbotClientImpl.java rename to sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthbotManagementClientImpl.java index b07aec2814aa..73561471376b 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthbotClientImpl.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/HealthbotManagementClientImpl.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.implementation; @@ -27,7 +27,7 @@ import com.azure.core.util.serializer.SerializerAdapter; import com.azure.core.util.serializer.SerializerEncoding; import com.azure.resourcemanager.healthbot.fluent.BotsClient; -import com.azure.resourcemanager.healthbot.fluent.HealthbotClient; +import com.azure.resourcemanager.healthbot.fluent.HealthbotManagementClient; import com.azure.resourcemanager.healthbot.fluent.OperationsClient; import java.io.IOException; import java.lang.reflect.Type; @@ -39,31 +39,17 @@ import reactor.core.publisher.Mono; /** - * Initializes a new instance of the HealthbotClientImpl type. + * Initializes a new instance of the HealthbotManagementClientImpl type. */ -@ServiceClient(builder = HealthbotClientBuilder.class) -public final class HealthbotClientImpl implements HealthbotClient { +@ServiceClient(builder = HealthbotManagementClientBuilder.class) +public final class HealthbotManagementClientImpl implements HealthbotManagementClient { /** - * Azure Subscription ID. - */ - private final String subscriptionId; - - /** - * Gets Azure Subscription ID. - * - * @return the subscriptionId value. - */ - public String getSubscriptionId() { - return this.subscriptionId; - } - - /** - * server parameter. + * Service host. */ private final String endpoint; /** - * Gets server parameter. + * Gets Service host. * * @return the endpoint value. */ @@ -72,12 +58,12 @@ public String getEndpoint() { } /** - * Api Version. + * Version parameter. */ private final String apiVersion; /** - * Gets Api Version. + * Gets Version parameter. * * @return the apiVersion value. */ @@ -85,6 +71,20 @@ public String getApiVersion() { return this.apiVersion; } + /** + * The ID of the target subscription. The value must be an UUID. + */ + private final String subscriptionId; + + /** + * Gets The ID of the target subscription. The value must be an UUID. + * + * @return the subscriptionId value. + */ + public String getSubscriptionId() { + return this.subscriptionId; + } + /** * The HTTP pipeline to send requests through. */ @@ -128,53 +128,53 @@ public Duration getDefaultPollInterval() { } /** - * The BotsClient object to access its operations. + * The OperationsClient object to access its operations. */ - private final BotsClient bots; + private final OperationsClient operations; /** - * Gets the BotsClient object to access its operations. + * Gets the OperationsClient object to access its operations. * - * @return the BotsClient object. + * @return the OperationsClient object. */ - public BotsClient getBots() { - return this.bots; + public OperationsClient getOperations() { + return this.operations; } /** - * The OperationsClient object to access its operations. + * The BotsClient object to access its operations. */ - private final OperationsClient operations; + private final BotsClient bots; /** - * Gets the OperationsClient object to access its operations. + * Gets the BotsClient object to access its operations. * - * @return the OperationsClient object. + * @return the BotsClient object. */ - public OperationsClient getOperations() { - return this.operations; + public BotsClient getBots() { + return this.bots; } /** - * Initializes an instance of HealthbotClient client. + * Initializes an instance of HealthbotManagementClient client. * * @param httpPipeline The HTTP pipeline to send requests through. * @param serializerAdapter The serializer to serialize an object into a string. * @param defaultPollInterval The default poll interval for long-running operation. * @param environment The Azure environment. - * @param subscriptionId Azure Subscription ID. - * @param endpoint server parameter. + * @param endpoint Service host. + * @param subscriptionId The ID of the target subscription. The value must be an UUID. */ - HealthbotClientImpl(HttpPipeline httpPipeline, SerializerAdapter serializerAdapter, Duration defaultPollInterval, - AzureEnvironment environment, String subscriptionId, String endpoint) { + HealthbotManagementClientImpl(HttpPipeline httpPipeline, SerializerAdapter serializerAdapter, + Duration defaultPollInterval, AzureEnvironment environment, String endpoint, String subscriptionId) { this.httpPipeline = httpPipeline; this.serializerAdapter = serializerAdapter; this.defaultPollInterval = defaultPollInterval; - this.subscriptionId = subscriptionId; this.endpoint = endpoint; - this.apiVersion = "2025-05-25"; - this.bots = new BotsClientImpl(this); + this.subscriptionId = subscriptionId; + this.apiVersion = "2025-11-01"; this.operations = new OperationsClientImpl(this); + this.bots = new BotsClientImpl(this); } /** @@ -320,5 +320,5 @@ public Mono getBodyAsString(Charset charset) { } } - private static final ClientLogger LOGGER = new ClientLogger(HealthbotClientImpl.class); + private static final ClientLogger LOGGER = new ClientLogger(HealthbotManagementClientImpl.class); } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/OperationDetailImpl.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/OperationDetailImpl.java index fb42dad0bbf5..4284d9af0042 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/OperationDetailImpl.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/OperationDetailImpl.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.implementation; diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/OperationsClientImpl.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/OperationsClientImpl.java index bb48662e5fdd..5ff53f29a8e9 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/OperationsClientImpl.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/OperationsClientImpl.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.implementation; @@ -25,10 +25,9 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; -import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.healthbot.fluent.OperationsClient; import com.azure.resourcemanager.healthbot.fluent.models.OperationDetailInner; -import com.azure.resourcemanager.healthbot.models.AvailableOperations; +import com.azure.resourcemanager.healthbot.implementation.models.AvailableOperations; import reactor.core.publisher.Mono; /** @@ -43,38 +42,38 @@ public final class OperationsClientImpl implements OperationsClient { /** * The service client containing this operation class. */ - private final HealthbotClientImpl client; + private final HealthbotManagementClientImpl client; /** * Initializes an instance of OperationsClientImpl. * * @param client the instance of the service client containing this operation class. */ - OperationsClientImpl(HealthbotClientImpl client) { + OperationsClientImpl(HealthbotManagementClientImpl client) { this.service = RestProxy.create(OperationsService.class, client.getHttpPipeline(), client.getSerializerAdapter()); this.client = client; } /** - * The interface defining all the services for HealthbotClientOperations to be used by the proxy service to perform - * REST calls. + * The interface defining all the services for HealthbotManagementClientOperations to be used by the proxy service + * to perform REST calls. */ - @Host("{$host}") - @ServiceInterface(name = "HealthbotClientOperations") + @Host("{endpoint}") + @ServiceInterface(name = "HealthbotManagementClientOperations") public interface OperationsService { @Headers({ "Content-Type: application/json" }) @Get("/providers/Microsoft.HealthBot/operations") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> list(@HostParam("$host") String endpoint, + Mono> list(@HostParam("endpoint") String endpoint, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) @Get("/providers/Microsoft.HealthBot/operations") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Response listSync(@HostParam("$host") String endpoint, + Response listSync(@HostParam("endpoint") String endpoint, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) @@ -82,14 +81,14 @@ Response listSync(@HostParam("$host") String endpoint, @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) Mono> listNext(@PathParam(value = "nextLink", encoded = true) String nextLink, - @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) @Get("{nextLink}") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) Response listNextSync(@PathParam(value = "nextLink", encoded = true) String nextLink, - @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, Context context); } /** @@ -102,10 +101,6 @@ Response listNextSync(@PathParam(value = "nextLink", encode */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> listSinglePageAsync() { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } final String accept = "application/json"; return FluxUtil .withContext( @@ -136,11 +131,6 @@ private PagedFlux listAsync() { */ @ServiceMethod(returns = ReturnType.SINGLE) private PagedResponse listSinglePage() { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } final String accept = "application/json"; Response res = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), accept, Context.NONE); @@ -159,11 +149,6 @@ private PagedResponse listSinglePage() { */ @ServiceMethod(returns = ReturnType.SINGLE) private PagedResponse listSinglePage(Context context) { - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } final String accept = "application/json"; Response res = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), accept, context); @@ -209,13 +194,6 @@ public PagedIterable list(Context context) { */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono> listNextSinglePageAsync(String nextLink) { - if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); - } - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } final String accept = "application/json"; return FluxUtil.withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), @@ -234,15 +212,6 @@ private Mono> listNextSinglePageAsync(String */ @ServiceMethod(returns = ReturnType.SINGLE) private PagedResponse listNextSinglePage(String nextLink) { - if (nextLink == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); - } - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } final String accept = "application/json"; Response res = service.listNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); @@ -262,20 +231,9 @@ private PagedResponse listNextSinglePage(String nextLink) */ @ServiceMethod(returns = ReturnType.SINGLE) private PagedResponse listNextSinglePage(String nextLink, Context context) { - if (nextLink == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); - } - if (this.client.getEndpoint() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException( - "Parameter this.client.getEndpoint() is required and cannot be null.")); - } final String accept = "application/json"; Response res = service.listNextSync(nextLink, this.client.getEndpoint(), accept, context); return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null); } - - private static final ClientLogger LOGGER = new ClientLogger(OperationsClientImpl.class); } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/OperationsImpl.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/OperationsImpl.java index 4debd161871e..c5588ae7e84d 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/OperationsImpl.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/OperationsImpl.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.implementation; diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/ResourceManagerUtils.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/ResourceManagerUtils.java index 0d785497dbcf..4136bed06dc8 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/ResourceManagerUtils.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/ResourceManagerUtils.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.implementation; diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/AvailableOperations.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/models/AvailableOperations.java similarity index 71% rename from sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/AvailableOperations.java rename to sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/models/AvailableOperations.java index e11f8241f6e4..0e2fd4268339 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/AvailableOperations.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/models/AvailableOperations.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. -package com.azure.resourcemanager.healthbot.models; +package com.azure.resourcemanager.healthbot.implementation.models; -import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Immutable; import com.azure.json.JsonReader; import com.azure.json.JsonSerializable; import com.azure.json.JsonToken; @@ -16,10 +16,10 @@ /** * Available operations of the service. */ -@Fluent +@Immutable public final class AvailableOperations implements JsonSerializable { /* - * Collection of available operation details + * Collection of available operation details. */ private List value; @@ -32,7 +32,7 @@ public final class AvailableOperations implements JsonSerializable value() { return this.value; } - /** - * Set the value property: Collection of available operation details. - * - * @param value the value value to set. - * @return the AvailableOperations object itself. - */ - public AvailableOperations withValue(List value) { - this.value = value; - return this; - } - /** * Get the nextLink property: URL client should use to fetch the next page (per server side paging). * It's null for now, added for future use. @@ -65,29 +54,6 @@ public String nextLink() { return this.nextLink; } - /** - * Set the nextLink property: URL client should use to fetch the next page (per server side paging). - * It's null for now, added for future use. - * - * @param nextLink the nextLink value to set. - * @return the AvailableOperations object itself. - */ - public AvailableOperations withNextLink(String nextLink) { - this.nextLink = nextLink; - return this; - } - - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - if (value() != null) { - value().forEach(e -> e.validate()); - } - } - /** * {@inheritDoc} */ @@ -105,6 +71,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { * @param jsonReader The JsonReader being read. * @return An instance of AvailableOperations if the JsonReader was pointing to an instance of it, or null if it was * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. * @throws IOException If an error occurs while reading the AvailableOperations. */ public static AvailableOperations fromJson(JsonReader jsonReader) throws IOException { diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/BotResponseList.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/models/BotResponseList.java similarity index 74% rename from sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/BotResponseList.java rename to sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/models/BotResponseList.java index 8dc65ca3fc69..e2b595ecef9f 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/BotResponseList.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/models/BotResponseList.java @@ -1,8 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. -package com.azure.resourcemanager.healthbot.models; +package com.azure.resourcemanager.healthbot.implementation.models; import com.azure.core.annotation.Immutable; import com.azure.json.JsonReader; @@ -19,32 +19,23 @@ @Immutable public final class BotResponseList implements JsonSerializable { /* - * The link used to get the next page of bot service resources. + * The HealthBot items on this page */ - private String nextLink; + private List value; /* - * Gets the list of Azure Health Bot results and their properties. + * The link to the next page of items */ - private List value; + private String nextLink; /** * Creates an instance of BotResponseList class. */ - public BotResponseList() { + private BotResponseList() { } /** - * Get the nextLink property: The link used to get the next page of bot service resources. - * - * @return the nextLink value. - */ - public String nextLink() { - return this.nextLink; - } - - /** - * Get the value property: Gets the list of Azure Health Bot results and their properties. + * Get the value property: The HealthBot items on this page. * * @return the value value. */ @@ -53,14 +44,12 @@ public List value() { } /** - * Validates the instance. + * Get the nextLink property: The link to the next page of items. * - * @throws IllegalArgumentException thrown if the instance is not valid. + * @return the nextLink value. */ - public void validate() { - if (value() != null) { - value().forEach(e -> e.validate()); - } + public String nextLink() { + return this.nextLink; } /** @@ -69,6 +58,7 @@ public void validate() { @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); + jsonWriter.writeStringField("nextLink", this.nextLink); return jsonWriter.writeEndObject(); } @@ -78,6 +68,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { * @param jsonReader The JsonReader being read. * @return An instance of BotResponseList if the JsonReader was pointing to an instance of it, or null if it was * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. * @throws IOException If an error occurs while reading the BotResponseList. */ public static BotResponseList fromJson(JsonReader jsonReader) throws IOException { @@ -87,11 +78,11 @@ public static BotResponseList fromJson(JsonReader jsonReader) throws IOException String fieldName = reader.getFieldName(); reader.nextToken(); - if ("nextLink".equals(fieldName)) { - deserializedBotResponseList.nextLink = reader.getString(); - } else if ("value".equals(fieldName)) { + if ("value".equals(fieldName)) { List value = reader.readArray(reader1 -> HealthBotInner.fromJson(reader1)); deserializedBotResponseList.value = value; + } else if ("nextLink".equals(fieldName)) { + deserializedBotResponseList.nextLink = reader.getString(); } else { reader.skipChildren(); } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/package-info.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/package-info.java index 49fb29b674c4..8cdb71eb9f9f 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/package-info.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/implementation/package-info.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. /** - * Package containing the implementations for HealthbotClient. + * Package containing the implementations for HealthbotManagementClient. * Azure Health Bot is a cloud platform that empowers developers in Healthcare organizations to build and deploy their * compliant, AI-powered virtual health assistants and health bots, that help them improve processes and reduce costs. */ diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/Bots.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/Bots.java index a6fce596ad43..f63da70468f3 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/Bots.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/Bots.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.models; @@ -15,7 +15,7 @@ public interface Bots { /** * Get a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -28,7 +28,7 @@ public interface Bots { /** * Get a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. @@ -40,7 +40,7 @@ public interface Bots { /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. @@ -51,7 +51,7 @@ public interface Bots { /** * Delete a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @param botName The name of the Bot resource. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -61,98 +61,98 @@ public interface Bots { void delete(String resourceGroupName, String botName, Context context); /** - * List all secrets of a HealthBot. + * Returns all the resources of a particular type belonging to a resource group. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. - * @param context The context to associate with this operation. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return health Bot Keys Response along with {@link Response}. + * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. */ - Response listSecretsWithResponse(String resourceGroupName, String botName, Context context); + PagedIterable listByResourceGroup(String resourceGroupName); /** - * List all secrets of a HealthBot. + * Returns all the resources of a particular type belonging to a resource group. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return health Bot Keys Response. + * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. */ - HealthBotKeysResponse listSecrets(String resourceGroupName, String botName); + PagedIterable listByResourceGroup(String resourceGroupName, Context context); /** - * Regenerate the API JWT Secret of a HealthBot. + * Returns all the resources of a particular type belonging to a subscription. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an entry of HealthBotKeysResponse along with {@link Response}. + * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. */ - Response regenerateApiJwtSecretWithResponse(String resourceGroupName, String botName, - Context context); + PagedIterable list(); /** - * Regenerate the API JWT Secret of a HealthBot. + * Returns all the resources of a particular type belonging to a subscription. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param botName The name of the Bot resource. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an entry of HealthBotKeysResponse. + * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. */ - HealthBotKey regenerateApiJwtSecret(String resourceGroupName, String botName); + PagedIterable list(Context context); /** - * Returns all the resources of a particular type belonging to a resource group. + * List all secrets of a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. + * @return health Bot Keys Response along with {@link Response}. */ - PagedIterable listByResourceGroup(String resourceGroupName); + Response listSecretsWithResponse(String resourceGroupName, String botName, Context context); /** - * Returns all the resources of a particular type belonging to a resource group. + * List all secrets of a HealthBot. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. - * @param context The context to associate with this operation. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. + * @return health Bot Keys Response. */ - PagedIterable listByResourceGroup(String resourceGroupName, Context context); + HealthBotKeysResponse listSecrets(String resourceGroupName, String botName); /** - * Returns all the resources of a particular type belonging to a subscription. + * Regenerate the API JWT Secret of a HealthBot. * + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. + * @return an entry of HealthBotKeysResponse along with {@link Response}. */ - PagedIterable list(); + Response regenerateApiJwtSecretWithResponse(String resourceGroupName, String botName, + Context context); /** - * Returns all the resources of a particular type belonging to a subscription. + * Regenerate the API JWT Secret of a HealthBot. * - * @param context The context to associate with this operation. + * @param resourceGroupName The name of the resource group. The name is case insensitive. + * @param botName The name of the Bot resource. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the list of Azure Health Bot operation response as paginated response with {@link PagedIterable}. + * @return an entry of HealthBotKeysResponse. */ - PagedIterable list(Context context); + HealthBotKey regenerateApiJwtSecret(String resourceGroupName, String botName); /** * Get a HealthBot. diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBot.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBot.java index 10d5cfc7eab4..cbbee588cff0 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBot.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBot.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.models; @@ -50,6 +50,13 @@ public interface HealthBot { */ Map tags(); + /** + * Gets the properties property: The set of properties specific to Azure Health Bot resource. + * + * @return the properties value. + */ + HealthBotProperties properties(); + /** * Gets the sku property: SKU of the Azure Health Bot. * @@ -65,14 +72,7 @@ public interface HealthBot { Identity identity(); /** - * Gets the properties property: The set of properties specific to Azure Health Bot resource. - * - * @return the properties value. - */ - HealthBotProperties properties(); - - /** - * Gets the systemData property: Metadata pertaining to creation and last modification of the resource. + * Gets the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information. * * @return the systemData value. */ @@ -151,7 +151,7 @@ interface WithResourceGroup { /** * Specifies resourceGroupName. * - * @param resourceGroupName The name of the Bot resource group in the user subscription. + * @param resourceGroupName The name of the resource group. The name is case insensitive. * @return the next definition stage. */ WithSku withExistingResourceGroup(String resourceGroupName); @@ -175,7 +175,7 @@ interface WithSku { * be created, but also allows for any other optional properties to be specified. */ interface WithCreate - extends DefinitionStages.WithTags, DefinitionStages.WithIdentity, DefinitionStages.WithProperties { + extends DefinitionStages.WithTags, DefinitionStages.WithProperties, DefinitionStages.WithIdentity { /** * Executes the create request. * @@ -206,29 +206,29 @@ interface WithTags { } /** - * The stage of the HealthBot definition allowing to specify identity. + * The stage of the HealthBot definition allowing to specify properties. */ - interface WithIdentity { + interface WithProperties { /** - * Specifies the identity property: The identity of the Azure Health Bot.. + * Specifies the properties property: The set of properties specific to Azure Health Bot resource.. * - * @param identity The identity of the Azure Health Bot. + * @param properties The set of properties specific to Azure Health Bot resource. * @return the next definition stage. */ - WithCreate withIdentity(Identity identity); + WithCreate withProperties(HealthBotProperties properties); } /** - * The stage of the HealthBot definition allowing to specify properties. + * The stage of the HealthBot definition allowing to specify identity. */ - interface WithProperties { + interface WithIdentity { /** - * Specifies the properties property: The set of properties specific to Azure Health Bot resource.. + * Specifies the identity property: The identity of the Azure Health Bot.. * - * @param properties The set of properties specific to Azure Health Bot resource. + * @param identity The identity of the Azure Health Bot. * @return the next definition stage. */ - WithCreate withProperties(HealthBotProperties properties); + WithCreate withIdentity(Identity identity); } } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotKey.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotKey.java index 0b4efacdc4ec..798afe4fbb0b 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotKey.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotKey.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.models; diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotKeysResponse.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotKeysResponse.java index 240722534efd..eab34beca5b3 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotKeysResponse.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotKeysResponse.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.models; diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotProperties.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotProperties.java index bf627845b0f9..5504984ece2b 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotProperties.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotProperties.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.models; @@ -12,8 +12,6 @@ import java.io.IOException; /** - * HealthBotProperties - * * The properties of a Azure Health Bot. The Health Bot Service is a cloud platform that empowers developers in * Healthcare organizations to build and deploy their compliant, AI-powered virtual health assistants and health bots, * that help them improve processes and reduce costs. @@ -93,17 +91,6 @@ public String accessControlMethod() { return this.accessControlMethod; } - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - if (keyVaultProperties() != null) { - keyVaultProperties().validate(); - } - } - /** * {@inheritDoc} */ diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotUpdateParameters.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotUpdateParameters.java index abde320c131e..cb8b320654f1 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotUpdateParameters.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/HealthBotUpdateParameters.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.models; @@ -148,23 +148,6 @@ public HealthBotUpdateParameters withLocation(String location) { return this; } - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - if (properties() != null) { - properties().validate(); - } - if (sku() != null) { - sku().validate(); - } - if (identity() != null) { - identity().validate(); - } - } - /** * {@inheritDoc} */ diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/Identity.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/Identity.java index 1de2a7925197..6f767a638016 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/Identity.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/Identity.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.models; @@ -115,21 +115,6 @@ public Identity withUserAssignedIdentities(Map use return this; } - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - if (userAssignedIdentities() != null) { - userAssignedIdentities().values().forEach(e -> { - if (e != null) { - e.validate(); - } - }); - } - } - /** * {@inheritDoc} */ diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/KeyVaultProperties.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/KeyVaultProperties.java index 8aeef2fd7a35..818ae7a357b4 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/KeyVaultProperties.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/KeyVaultProperties.java @@ -1,11 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.models; import com.azure.core.annotation.Fluent; -import com.azure.core.util.logging.ClientLogger; import com.azure.json.JsonReader; import com.azure.json.JsonSerializable; import com.azure.json.JsonToken; @@ -123,24 +122,6 @@ public KeyVaultProperties withUserIdentity(String userIdentity) { return this; } - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - if (keyName() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Missing required property keyName in model KeyVaultProperties")); - } - if (keyVaultUri() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Missing required property keyVaultUri in model KeyVaultProperties")); - } - } - - private static final ClientLogger LOGGER = new ClientLogger(KeyVaultProperties.class); - /** * {@inheritDoc} */ diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/OperationDetail.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/OperationDetail.java index f187c4cd5ab7..99ec1bac1ee7 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/OperationDetail.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/OperationDetail.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.models; diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/OperationDisplay.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/OperationDisplay.java index 983a3a7000c7..a81bed1abe4b 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/OperationDisplay.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/main/java/com/azure/resourcemanager/healthbot/models/OperationDisplay.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.models; -import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Immutable; import com.azure.json.JsonReader; import com.azure.json.JsonSerializable; import com.azure.json.JsonToken; @@ -14,7 +14,7 @@ /** * Operation display payload. */ -@Fluent +@Immutable public final class OperationDisplay implements JsonSerializable { /* * Resource provider of the operation @@ -39,7 +39,7 @@ public final class OperationDisplay implements JsonSerializable Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - manager.bots().delete("aozwyiftyhxhu", "okftyxolniwpwcuk", com.azure.core.util.Context.NONE); + manager.bots().delete("jbasvmsmjqulngs", "tnb", com.azure.core.util.Context.NONE); } } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/IdentityTests.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/IdentityTests.java index a4c6ea55d358..33048c1c2d4e 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/IdentityTests.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/IdentityTests.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.generated; @@ -16,7 +16,7 @@ public final class IdentityTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { Identity model = BinaryData.fromString( - "{\"principalId\":\"jnqglhqgnu\",\"tenantId\":\"oo\",\"type\":\"UserAssigned\",\"userAssignedIdentities\":{\"glzlhjxrifkwmrv\":{\"principalId\":\"qes\",\"clientId\":\"gdf\"},\"uajpsquc\":{\"principalId\":\"siznto\",\"clientId\":\"pa\"},\"knygjofjddeq\":{\"principalId\":\"o\",\"clientId\":\"dkfo\"},\"usarhmofc\":{\"principalId\":\"deupewnwrei\",\"clientId\":\"zyf\"}}}") + "{\"principalId\":\"s\",\"tenantId\":\"nyejhkryhtnap\",\"type\":\"UserAssigned\",\"userAssignedIdentities\":{\"nchgej\":{\"principalId\":\"jye\",\"clientId\":\"kvnipjoxz\"},\"wyahuxinpmqnja\":{\"principalId\":\"odmailzyd\",\"clientId\":\"o\"}}}") .toObject(Identity.class); Assertions.assertEquals(ResourceIdentityType.USER_ASSIGNED, model.type()); } @@ -25,8 +25,7 @@ public void testDeserialize() throws Exception { public void testSerialize() throws Exception { Identity model = new Identity().withType(ResourceIdentityType.USER_ASSIGNED) .withUserAssignedIdentities( - mapOf("glzlhjxrifkwmrv", new UserAssignedIdentity(), "uajpsquc", new UserAssignedIdentity(), - "knygjofjddeq", new UserAssignedIdentity(), "usarhmofc", new UserAssignedIdentity())); + mapOf("nchgej", new UserAssignedIdentity(), "wyahuxinpmqnja", new UserAssignedIdentity())); model = BinaryData.fromObject(model).toObject(Identity.class); Assertions.assertEquals(ResourceIdentityType.USER_ASSIGNED, model.type()); } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/OperationDetailInnerTests.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/OperationDetailInnerTests.java index f6d4e7a8a8df..d2794b3285c8 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/OperationDetailInnerTests.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/OperationDetailInnerTests.java @@ -1,46 +1,25 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.generated; import com.azure.core.util.BinaryData; import com.azure.resourcemanager.healthbot.fluent.models.OperationDetailInner; -import com.azure.resourcemanager.healthbot.models.OperationDisplay; import org.junit.jupiter.api.Assertions; public final class OperationDetailInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { OperationDetailInner model = BinaryData.fromString( - "{\"name\":\"ngbwjz\",\"isDataAction\":true,\"display\":{\"provider\":\"xgispemvtzfkufu\",\"resource\":\"jofxqe\",\"operation\":\"jaeq\",\"description\":\"qjbasvms\"},\"origin\":\"qulngsntnbybkzgc\",\"properties\":\"datawclxxwrl\"}") + "{\"name\":\"kuksjtxukcdm\",\"isDataAction\":true,\"display\":{\"provider\":\"y\",\"resource\":\"nzwuxzd\",\"operation\":\"a\",\"description\":\"lhmwhfpmrqobm\"},\"origin\":\"kknryrtihf\",\"properties\":\"dataijbpzvgnwzsymgl\"}") .toObject(OperationDetailInner.class); - Assertions.assertEquals("ngbwjz", model.name()); + Assertions.assertEquals("kuksjtxukcdm", model.name()); Assertions.assertTrue(model.isDataAction()); - Assertions.assertEquals("xgispemvtzfkufu", model.display().provider()); - Assertions.assertEquals("jofxqe", model.display().resource()); - Assertions.assertEquals("jaeq", model.display().operation()); - Assertions.assertEquals("qjbasvms", model.display().description()); - Assertions.assertEquals("qulngsntnbybkzgc", model.origin()); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - OperationDetailInner model = new OperationDetailInner().withName("ngbwjz") - .withIsDataAction(true) - .withDisplay(new OperationDisplay().withProvider("xgispemvtzfkufu") - .withResource("jofxqe") - .withOperation("jaeq") - .withDescription("qjbasvms")) - .withOrigin("qulngsntnbybkzgc") - .withProperties("datawclxxwrl"); - model = BinaryData.fromObject(model).toObject(OperationDetailInner.class); - Assertions.assertEquals("ngbwjz", model.name()); - Assertions.assertTrue(model.isDataAction()); - Assertions.assertEquals("xgispemvtzfkufu", model.display().provider()); - Assertions.assertEquals("jofxqe", model.display().resource()); - Assertions.assertEquals("jaeq", model.display().operation()); - Assertions.assertEquals("qjbasvms", model.display().description()); - Assertions.assertEquals("qulngsntnbybkzgc", model.origin()); + Assertions.assertEquals("y", model.display().provider()); + Assertions.assertEquals("nzwuxzd", model.display().resource()); + Assertions.assertEquals("a", model.display().operation()); + Assertions.assertEquals("lhmwhfpmrqobm", model.display().description()); + Assertions.assertEquals("kknryrtihf", model.origin()); } } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/OperationDisplayTests.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/OperationDisplayTests.java index c379ba23ddfa..b9b4e22cc85a 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/OperationDisplayTests.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/OperationDisplayTests.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.generated; @@ -11,25 +11,13 @@ public final class OperationDisplayTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - OperationDisplay model = BinaryData.fromString( - "{\"provider\":\"ouskcqvkocrc\",\"resource\":\"kwt\",\"operation\":\"xbnjbiksq\",\"description\":\"lssai\"}") + OperationDisplay model = BinaryData + .fromString( + "{\"provider\":\"fcyzkohdbihanufh\",\"resource\":\"bj\",\"operation\":\"a\",\"description\":\"th\"}") .toObject(OperationDisplay.class); - Assertions.assertEquals("ouskcqvkocrc", model.provider()); - Assertions.assertEquals("kwt", model.resource()); - Assertions.assertEquals("xbnjbiksq", model.operation()); - Assertions.assertEquals("lssai", model.description()); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - OperationDisplay model = new OperationDisplay().withProvider("ouskcqvkocrc") - .withResource("kwt") - .withOperation("xbnjbiksq") - .withDescription("lssai"); - model = BinaryData.fromObject(model).toObject(OperationDisplay.class); - Assertions.assertEquals("ouskcqvkocrc", model.provider()); - Assertions.assertEquals("kwt", model.resource()); - Assertions.assertEquals("xbnjbiksq", model.operation()); - Assertions.assertEquals("lssai", model.description()); + Assertions.assertEquals("fcyzkohdbihanufh", model.provider()); + Assertions.assertEquals("bj", model.resource()); + Assertions.assertEquals("a", model.operation()); + Assertions.assertEquals("th", model.description()); } } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/OperationsListMockTests.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/OperationsListMockTests.java index b3c59290a8d4..1b1ea6d3e13a 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/OperationsListMockTests.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/OperationsListMockTests.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.generated; @@ -22,7 +22,7 @@ public final class OperationsListMockTests { @Test public void testList() throws Exception { String responseStr - = "{\"value\":[{\"name\":\"u\",\"isDataAction\":true,\"display\":{\"provider\":\"khbzhfepgzg\",\"resource\":\"xzlocxscp\",\"operation\":\"erhhbcsglumm\",\"description\":\"tjaodxobnb\"},\"origin\":\"k\",\"properties\":\"dataxo\"}]}"; + = "{\"value\":[{\"name\":\"fsinzgvfcjrwzoxx\",\"isDataAction\":true,\"display\":{\"provider\":\"luwfzitonpeqfpjk\",\"resource\":\"xofpdvhpfxxypi\",\"operation\":\"nmayhuybb\",\"description\":\"odepoogin\"},\"origin\":\"amiheognarxz\",\"properties\":\"dataheotusiv\"}]}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); @@ -33,12 +33,12 @@ public void testList() throws Exception { PagedIterable response = manager.operations().list(com.azure.core.util.Context.NONE); - Assertions.assertEquals("u", response.iterator().next().name()); + Assertions.assertEquals("fsinzgvfcjrwzoxx", response.iterator().next().name()); Assertions.assertTrue(response.iterator().next().isDataAction()); - Assertions.assertEquals("khbzhfepgzg", response.iterator().next().display().provider()); - Assertions.assertEquals("xzlocxscp", response.iterator().next().display().resource()); - Assertions.assertEquals("erhhbcsglumm", response.iterator().next().display().operation()); - Assertions.assertEquals("tjaodxobnb", response.iterator().next().display().description()); - Assertions.assertEquals("k", response.iterator().next().origin()); + Assertions.assertEquals("luwfzitonpeqfpjk", response.iterator().next().display().provider()); + Assertions.assertEquals("xofpdvhpfxxypi", response.iterator().next().display().resource()); + Assertions.assertEquals("nmayhuybb", response.iterator().next().display().operation()); + Assertions.assertEquals("odepoogin", response.iterator().next().display().description()); + Assertions.assertEquals("amiheognarxz", response.iterator().next().origin()); } } diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/SkuTests.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/SkuTests.java index d39481f35c41..9e04e3c26c8e 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/SkuTests.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/SkuTests.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.generated; diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/UserAssignedIdentityTests.java b/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/UserAssignedIdentityTests.java index fc83c335d317..e9a5438eb761 100644 --- a/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/UserAssignedIdentityTests.java +++ b/sdk/healthbot/azure-resourcemanager-healthbot/src/test/java/com/azure/resourcemanager/healthbot/generated/UserAssignedIdentityTests.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.resourcemanager.healthbot.generated; @@ -10,8 +10,9 @@ public final class UserAssignedIdentityTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - UserAssignedIdentity model = BinaryData.fromString("{\"principalId\":\"smy\",\"clientId\":\"kdtmlxhekuk\"}") - .toObject(UserAssignedIdentity.class); + UserAssignedIdentity model + = BinaryData.fromString("{\"principalId\":\"ixjsprozvcputeg\",\"clientId\":\"wmfdatscmdvpjhul\"}") + .toObject(UserAssignedIdentity.class); } @org.junit.jupiter.api.Test diff --git a/sdk/healthbot/azure-resourcemanager-healthbot/tsp-location.yaml b/sdk/healthbot/azure-resourcemanager-healthbot/tsp-location.yaml new file mode 100644 index 000000000000..923f26107ca8 --- /dev/null +++ b/sdk/healthbot/azure-resourcemanager-healthbot/tsp-location.yaml @@ -0,0 +1,4 @@ +directory: specification/healthbot/HealthBot.Management +commit: 53d56e4ec74156c450d1e51745a971d3f2031dd7 +repo: Azure/azure-rest-api-specs +additionalDirectories: From ac066c9a7e257bade469c2811e4b6860565f43fe Mon Sep 17 00:00:00 2001 From: Ray Chen Date: Tue, 6 Jan 2026 09:41:48 -0800 Subject: [PATCH 19/41] Updated the network policy to allow the public maven feed access (#47632) * Updated the network policy * Added linked doc * Used permissive policy --- eng/pipelines/templates/stages/1es-redirect.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eng/pipelines/templates/stages/1es-redirect.yml b/eng/pipelines/templates/stages/1es-redirect.yml index 41e73fddff94..fcc51483d8e9 100644 --- a/eng/pipelines/templates/stages/1es-redirect.yml +++ b/eng/pipelines/templates/stages/1es-redirect.yml @@ -40,6 +40,9 @@ extends: - 1ES.PT.Tag-refs/tags/canary settings: skipBuildTagsForGitHubPullRequests: true + # Set network isolation policy to Preferred to allow access to common public services like GitHub, NuGet, Maven Central, etc. + # https://eng.ms/docs/coreai/devdiv/one-engineering-system-1es/1es-build/cloudbuild/security/1espt-network-isolation#shared-policies-for-common-use-cases + networkIsolationPolicy: Permissive sdl: ${{ if and(eq(variables['Build.DefinitionName'], 'java - core'), eq(variables['Build.SourceBranchName'], 'main'), eq(variables['System.TeamProject'], 'internal')) }}: autobaseline: From 21c3ba65c039026aa38f39140a62382860840618 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Tue, 6 Jan 2026 10:49:37 -0800 Subject: [PATCH 20/41] Add serviceConnections parameter to npmAuthenticate task. (#47635) Co-authored-by: Connie Yau --- .../pipelines/templates/steps/create-authenticated-npmrc.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml b/eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml index 52379684c4ea..cb29d1312ebd 100644 --- a/eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml +++ b/eng/common/pipelines/templates/steps/create-authenticated-npmrc.yml @@ -6,6 +6,9 @@ parameters: - name: CustomCondition type: string default: succeeded() + - name: ServiceConnection + type: string + default: '' steps: - pwsh: | @@ -21,8 +24,10 @@ steps: $content | Out-File '${{ parameters.npmrcPath }}' displayName: 'Create .npmrc' condition: ${{ parameters.CustomCondition }} + - task: npmAuthenticate@0 displayName: Authenticate .npmrc condition: ${{ parameters.CustomCondition }} inputs: workingFile: ${{ parameters.npmrcPath }} + azureDevOpsServiceConnection: ${{ parameters.ServiceConnection }} From e4234521e90302f01c6bd9463b9c9e35cdffe78f Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Tue, 6 Jan 2026 14:49:47 -0800 Subject: [PATCH 21/41] Increment package versions for transcription releases (#47636) --- eng/versioning/version_client.txt | 2 +- .../azure-ai-speech-transcription/CHANGELOG.md | 10 ++++++++++ .../azure-ai-speech-transcription/pom.xml | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index d639b9a6d86a..841936f5263a 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -53,7 +53,7 @@ com.azure:azure-ai-openai-realtime;1.0.0-beta.1;1.0.0-beta.1 com.azure:azure-ai-openai-stainless;1.0.0-beta.1;1.0.0-beta.1 com.azure:azure-ai-personalizer;1.0.0-beta.1;1.0.0-beta.2 com.azure:azure-ai-projects;1.0.0-beta.3;1.0.0-beta.4 -com.azure:azure-ai-speech-transcription;1.0.0-beta.1;1.0.0-beta.1 +com.azure:azure-ai-speech-transcription;1.0.0-beta.1;1.0.0-beta.2 com.azure:azure-ai-textanalytics;5.5.11;5.6.0-beta.1 com.azure:azure-ai-textanalytics-perf;1.0.0-beta.1;1.0.0-beta.1 com.azure:azure-ai-translation-text;1.1.7;2.0.0-beta.1 diff --git a/sdk/transcription/azure-ai-speech-transcription/CHANGELOG.md b/sdk/transcription/azure-ai-speech-transcription/CHANGELOG.md index 4e51b29bcff6..b58ccd5d505b 100644 --- a/sdk/transcription/azure-ai-speech-transcription/CHANGELOG.md +++ b/sdk/transcription/azure-ai-speech-transcription/CHANGELOG.md @@ -1,5 +1,15 @@ # Release History +## 1.0.0-beta.2 (Unreleased) + +### Features Added + +### Breaking Changes + +### Bugs Fixed + +### Other Changes + ## 1.0.0-beta.1 (2026-01-05) ### Features Added diff --git a/sdk/transcription/azure-ai-speech-transcription/pom.xml b/sdk/transcription/azure-ai-speech-transcription/pom.xml index 53fad6f4ded0..993a6f6163eb 100644 --- a/sdk/transcription/azure-ai-speech-transcription/pom.xml +++ b/sdk/transcription/azure-ai-speech-transcription/pom.xml @@ -14,7 +14,7 @@ Code generated by Microsoft (R) TypeSpec Code Generator. com.azure azure-ai-speech-transcription - 1.0.0-beta.1 + 1.0.0-beta.2 jar Microsoft Azure SDK for Transcription From a2eca71e560f64780c5e14b324f62c150459b899 Mon Sep 17 00:00:00 2001 From: v-huizhu2 Date: Wed, 7 Jan 2026 10:20:23 +0800 Subject: [PATCH 22/41] mgmt redis , fix live test failures (#47602) * feat(redis): add support to disable local authentication - Implemented `localAuthDisabled()` method to check if local auth is disabled - Added `disableLocalAuth()` method to disable SAS authentication - Updated Redis cache definition and update stages to include local auth settings - Modified tests to verify local auth disable functionality - Extended Redis cache models to support local authentication configuration - Integrated local auth settings into Redis cache creation and update flows * test(redis): remove disableLocalAuth calls in tests - Removed disableLocalAuth() from Redis cache update operations - Commented out Redis configuration backup settings and assertions - Simplified test cases by removing redundant local auth disabling - Updated public network access test to match new behavior - Maintained core Redis cache functionality verification * fix(redis): correct disableLocalAuth implementation for create and update modes - Updated disableLocalAuth to properly set authentication flag during create mode - Updated disableLocalAuth to properly set authentication flag during update mode - Removed redundant disableLocalAuth call in test updates - Added assertions to verify local auth disabled state after creation - Enabled AAD configuration in multiple test scenarios for comprehensive coverage * fix(redis): remove non-SSL port configuration from tests - Removed deprecated `withNonSslPort()` method calls in Redis cache setup - Updated test configurations to align with current SSL-only requirements - Ensured firewall rules and other configurations remain unchanged - Verified that all existing test cases pass without non-SSL port dependency * fix(redis): update Redis cache AOF backup configuration - Replace hardcoded connection string with storage account blob endpoint - Add managed identity authentication for data persistence - Disable secondary AOF storage connection string validation - Maintain AOF backup enabled configuration - Keep local auth disabled and AAD enabled settings * test(redis): update RedisCacheOperationsTests to use managed identity for RDB backup configuration * test(redis): simplify Redis configuration in RedisCacheOperationsTests * chore(redis): update assets tag for azure-resourcemanager-redis Update the assets tag from 87b73bc96e to 4829c91ebd in the assets.json file for the redis resource manager package. * ``` docs(redis): update Redis cache documentation to use correct terminology - change "Redis namespace" to "Redis cache" in interface documentation - update method descriptions to reference Redis cache instead of namespace - correct return type descriptions to use "Redis cache definition" terminology - maintain consistent documentation across both creation and update stages ``` * refactor(test): remove unused storage connection string code in Redis cache tests - Remove commented out storage connection string generation code - Remove unused connectionString variable declaration - Remove commented out Redis configuration lines for aof-storage-connection-string-0 and aof-storage-connection-string-1 - Remove commented out assertion for aofStorageConnectionString1 - Clean up redundant test code that was not being used * feat(redis): add enableLocalAuth method to Redis cache implementation - Implemented enableLocalAuth method in RedisCacheImpl to enable SAS authentication - Added disableAccessKeyAuthentication(false) setting for both create and update modes - Added enableLocalAuth default method to RedisCache interface with proper Javadoc - Updated test case with proper method chaining for Redis cache configuration - Maintained consistency with existing disableLocalAuth functionality * refactor(tests): remove unused AzureEnvironment import - Removed unused AzureEnvironment import from RedisCacheOperationsTests.java - Cleaned up import statements to remove redundant dependency * refactor(redis): rename localAuth to accessKeyAuthentication methods and interfaces - Renamed localAuthDisabled() to withAccessKeyAuthentication() in RedisCache interface - Renamed disableLocalAuth() to disableAccessKeyAuthentication() in WithAccessKeyAuthentication interface - Renamed enableLocalAuth() to enableAccessKeyAuthentication() in WithAccessKeyAuthentication interface - Updated WithCreate interface to extend WithAccessKeyAuthentication instead of WithLocalAuth - Updated Update interface to extend WithAccessKeyAuthentication instead of WithLocalAuth - Changed method calls in test class from disableLocalAuth() to disableAccessKeyAuthentication() - Updated assertion to check withAccessKeyAuthentication() instead of localAuthDisabled() * refactor(redis): rename withAccessKeyAuthentication to isAccessKeyAuthenticationEnabled - Renamed method from withAccessKeyAuthentication to isAccessKeyAuthenticationEnabled in RedisCacheImpl - Updated default method name in RedisCache interface - Changed method reference in test assertions to use new method name - Maintained same functionality while improving method naming consistency * style(redis): format code according to team style guide - Standardized indentation and spacing in method implementations - Organized interface declarations with proper line breaks - Removed redundant blank lines and whitespace - Applied consistent formatting to method chaining in test cases - Aligned code structure with established style patterns - Improved readability through standardized formatting practices * fix(redis): correct access key authentication logic - Fixed isAccessKeyAuthenticationEnabled method to return correct boolean value - Added negation to ResourceManagerUtils.toPrimitiveBoolean call - Updated test assertion to match corrected authentication logic - Removed unnecessary blank line in test file * test(redis): remove unused import statement in RedisCacheOperationsTests - Removed commented out importData test code - Cleaned up whitespace in test file * docs(redis): update access key authentication documentation - Clarify that authentication through access keys is disabled when set as true - Update return documentation to reflect access keys instead of local auth - Modify stage interface descriptions to reference access keys rather than local auth * Update sdk/redis/azure-resourcemanager-redis/src/main/java/com/azure/resourcemanager/redis/models/RedisCache.java Co-authored-by: Xiaofei Cao <92354331+XiaofeiCao@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Xiaofei Cao <92354331+XiaofeiCao@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Xiaofei Cao <92354331+XiaofeiCao@users.noreply.github.com> * docs(redis): update Redis cache authentication documentation - Clarified that disabled authentication means access keys are disabled - Updated enable authentication description to specify access key authentication - Improved documentation clarity for Redis cache authentication methods * Apply suggestions from code review Co-authored-by: Xiaofei Cao <92354331+XiaofeiCao@users.noreply.github.com> * ``` feat(redis): support disabling authentication through access keys - Added support for disabling authentication through access keys for RedisCache - Removed unused enableAccessKeyAuthentication method from RedisCache interface - Updated changelog to reflect the new RedisCache authentication feature ``` * Apply suggestion from @XiaofeiCao Co-authored-by: Xiaofei Cao <92354331+XiaofeiCao@users.noreply.github.com> * feat(resourcemanager): update RedisCache access key authentication description - Changed the changelog entry to accurately reflect that both enabling and disabling authentication through access keys is supported for RedisCache --------- Co-authored-by: Xiaofei Cao <92354331+XiaofeiCao@users.noreply.github.com> --- .../azure-resourcemanager-redis/CHANGELOG.md | 2 + .../azure-resourcemanager-redis/assets.json | 2 +- .../redis/implementation/RedisCacheImpl.java | 25 +++++++++ .../redis/models/RedisCache.java | 56 ++++++++++++++++++- .../redis/RedisCacheOperationsTests.java | 40 ++++++++----- .../azure-resourcemanager/CHANGELOG.md | 6 +- 6 files changed, 112 insertions(+), 19 deletions(-) diff --git a/sdk/redis/azure-resourcemanager-redis/CHANGELOG.md b/sdk/redis/azure-resourcemanager-redis/CHANGELOG.md index f536203cffd7..4d2c7437ec33 100644 --- a/sdk/redis/azure-resourcemanager-redis/CHANGELOG.md +++ b/sdk/redis/azure-resourcemanager-redis/CHANGELOG.md @@ -4,6 +4,8 @@ ### Features Added +- Supported enabling/disabling authentication through access keys for `RedisCache`. + ### Breaking Changes ### Bugs Fixed diff --git a/sdk/redis/azure-resourcemanager-redis/assets.json b/sdk/redis/azure-resourcemanager-redis/assets.json index ff91e635fa8b..d626082c69e9 100644 --- a/sdk/redis/azure-resourcemanager-redis/assets.json +++ b/sdk/redis/azure-resourcemanager-redis/assets.json @@ -2,5 +2,5 @@ "AssetsRepo": "Azure/azure-sdk-assets", "AssetsRepoPrefixPath": "java", "TagPrefix": "java/redis/azure-resourcemanager-redis", - "Tag": "java/redis/azure-resourcemanager-redis_87b73bc96e" + "Tag": "java/redis/azure-resourcemanager-redis_4829c91ebd" } diff --git a/sdk/redis/azure-resourcemanager-redis/src/main/java/com/azure/resourcemanager/redis/implementation/RedisCacheImpl.java b/sdk/redis/azure-resourcemanager-redis/src/main/java/com/azure/resourcemanager/redis/implementation/RedisCacheImpl.java index 5fcbb1f737a9..f735066bef05 100644 --- a/sdk/redis/azure-resourcemanager-redis/src/main/java/com/azure/resourcemanager/redis/implementation/RedisCacheImpl.java +++ b/sdk/redis/azure-resourcemanager-redis/src/main/java/com/azure/resourcemanager/redis/implementation/RedisCacheImpl.java @@ -380,6 +380,11 @@ public RedisCacheImpl withStaticIp(String staticIp) { return this; } + @Override + public boolean isAccessKeyAuthenticationEnabled() { + return !ResourceManagerUtils.toPrimitiveBoolean(this.innerModel().disableAccessKeyAuthentication()); + } + @Override public RedisCacheImpl withBasicSku() { if (isInCreateMode()) { @@ -742,6 +747,26 @@ public RedisCacheImpl disablePublicNetworkAccess() { return this; } + @Override + public RedisCacheImpl disableAccessKeyAuthentication() { + if (isInCreateMode()) { + createParameters.withDisableAccessKeyAuthentication(true); + } else { + updateParameters.withDisableAccessKeyAuthentication(true); + } + return this; + } + + @Override + public RedisCacheImpl enableAccessKeyAuthentication() { + if (isInCreateMode()) { + createParameters.withDisableAccessKeyAuthentication(false); + } else { + updateParameters.withDisableAccessKeyAuthentication(false); + } + return this; + } + private static final class PrivateLinkResourceImpl implements PrivateLinkResource { private final PrivateLinkResourceInner innerModel; diff --git a/sdk/redis/azure-resourcemanager-redis/src/main/java/com/azure/resourcemanager/redis/models/RedisCache.java b/sdk/redis/azure-resourcemanager-redis/src/main/java/com/azure/resourcemanager/redis/models/RedisCache.java index e521588c5ea9..2683f80aa9ec 100644 --- a/sdk/redis/azure-resourcemanager-redis/src/main/java/com/azure/resourcemanager/redis/models/RedisCache.java +++ b/sdk/redis/azure-resourcemanager-redis/src/main/java/com/azure/resourcemanager/redis/models/RedisCache.java @@ -181,6 +181,15 @@ public interface RedisCache extends GroupableResource { interface WithGroup extends GroupableResource.DefinitionStages.WithGroup { } + /** + * The stage of Redis cache definition allowing to toggle authentication through access keys. + */ + interface WithAccessKeyAuthentication { + /** + * Specifies that authentication to Redis through access keys is disabled. + * + * @return next stage of the Redis cache definition + */ + default WithCreate disableAccessKeyAuthentication() { + throw new UnsupportedOperationException( + "[disableAccessKeyAuthentication] is not supported in " + getClass()); + } + } + /** A Redis Cache definition allowing the sku to be set. */ interface WithSku { /** @@ -250,7 +274,8 @@ interface WithSku { * A Redis Cache definition with sufficient inputs to create a new Redis Cache in the cloud, but exposing * additional optional inputs to specify. */ - interface WithCreate extends Creatable, DefinitionWithTags { + interface WithCreate extends Creatable, DefinitionWithTags, + DefinitionStages.WithAccessKeyAuthentication { /** * Enables non-ssl Redis server port (6379). * @@ -408,6 +433,32 @@ interface WithPremiumSkuCreate extends DefinitionStages.WithCreate { /** Grouping of all the Redis Cache update stages. */ interface UpdateStages { + + /** + * The stage of Redis cache update allowing to toggle authentication through access keys. + */ + interface WithAccessKeyAuthentication { + /** + * Specifies that authentication to Redis through access keys is disabled. + * + * @return next stage of the Redis cache update + */ + default Update disableAccessKeyAuthentication() { + throw new UnsupportedOperationException( + "[disableAccessKeyAuthentication] is not supported in " + getClass()); + } + + /** + * Specifies that authentication to Redis through access keys is enabled. + * + * @return next stage of the Redis cache update + */ + default Update enableAccessKeyAuthentication() { + throw new UnsupportedOperationException( + "[enableAccessKeyAuthentication] is not supported in " + getClass()); + } + } + /** A Redis Cache update stage allowing to change the parameters. */ interface WithSku { @@ -540,7 +591,8 @@ interface WithPublicNetworkAccess { /** The template for a Redis Cache update operation, containing all the settings that can be modified. */ interface Update extends Appliable, Resource.UpdateWithTags, UpdateStages.WithSku, - UpdateStages.WithNonSslPort, UpdateStages.WithRedisConfiguration, UpdateStages.WithPublicNetworkAccess { + UpdateStages.WithNonSslPort, UpdateStages.WithRedisConfiguration, UpdateStages.WithPublicNetworkAccess, + UpdateStages.WithAccessKeyAuthentication { /** * The number of shards to be created on a Premium Cluster Cache. * diff --git a/sdk/redis/azure-resourcemanager-redis/src/test/java/com/azure/resourcemanager/redis/RedisCacheOperationsTests.java b/sdk/redis/azure-resourcemanager-redis/src/test/java/com/azure/resourcemanager/redis/RedisCacheOperationsTests.java index c4b260c5684c..cb3b42432ea5 100644 --- a/sdk/redis/azure-resourcemanager-redis/src/test/java/com/azure/resourcemanager/redis/RedisCacheOperationsTests.java +++ b/sdk/redis/azure-resourcemanager-redis/src/test/java/com/azure/resourcemanager/redis/RedisCacheOperationsTests.java @@ -3,7 +3,6 @@ package com.azure.resourcemanager.redis; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.Region; import com.azure.core.management.exception.ManagementException; import com.azure.resourcemanager.redis.models.DayOfWeek; @@ -49,22 +48,27 @@ public void canCRUDRedisCache() throws Exception { .define(rrName) .withRegion(Region.ASIA_EAST) .withNewResourceGroup(rgName) - .withBasicSku(); + .withBasicSku() + .withRedisConfiguration("aad-enabled", "true") + .disableAccessKeyAuthentication(); Creatable redisCacheDefinition2 = redisManager.redisCaches() .define(rrNameSecond) .withRegion(Region.US_CENTRAL) .withNewResourceGroup(resourceGroups) .withPremiumSku() .withShardCount(2) - .withPatchSchedule(DayOfWeek.SUNDAY, 10, Duration.ofMinutes(302)); + .withPatchSchedule(DayOfWeek.SUNDAY, 10, Duration.ofMinutes(302)) + .withRedisConfiguration("aad-enabled", "true") + .disableAccessKeyAuthentication(); Creatable redisCacheDefinition3 = redisManager.redisCaches() .define(rrNameThird) .withRegion(Region.US_CENTRAL) .withNewResourceGroup(resourceGroups) .withPremiumSku(2) - .withNonSslPort() .withFirewallRule("rule1", "192.168.0.1", "192.168.0.4") - .withFirewallRule("rule2", "192.168.0.10", "192.168.0.40"); + .withFirewallRule("rule2", "192.168.0.10", "192.168.0.40") + .withRedisConfiguration("aad-enabled", "true") + .disableAccessKeyAuthentication(); // Server throws "The 'minimumTlsVersion' property is not yet supported." exception. Uncomment when fixed. // .withMinimumTlsVersion(TlsVersion.ONE_FULL_STOP_ONE); @@ -221,6 +225,8 @@ public void canRedisVersionUpdate() { .withNewResourceGroup(rgName) .withBasicSku() .withRedisVersion(redisVersion) + .withRedisConfiguration("aad-enabled", "true") + .disableAccessKeyAuthentication() .create(); assertSameVersion(RedisCache.RedisVersion.V4, redisCache.redisVersion()); @@ -250,9 +256,10 @@ public void canCRUDLinkedServers() throws Exception { .withPremiumSku(2) .withPatchSchedule(DayOfWeek.SATURDAY, 5, Duration.ofHours(5)) .withRedisConfiguration("maxclients", "2") - .withNonSslPort() .withFirewallRule("rule1", "192.168.0.1", "192.168.0.4") .withFirewallRule("rule2", "192.168.0.10", "192.168.0.40") + .withRedisConfiguration("aad-enabled", "true") + .disableAccessKeyAuthentication() .create(); RedisCache rggLinked = redisManager.redisCaches() @@ -260,6 +267,8 @@ public void canCRUDLinkedServers() throws Exception { .withRegion(Region.US_EAST) .withExistingResourceGroup(rgNameSecond) .withPremiumSku(2) + .withRedisConfiguration("aad-enabled", "true") + .disableAccessKeyAuthentication() .create(); Assertions.assertNotNull(rgg); @@ -303,11 +312,9 @@ public void canCreateRedisWithRdbAof() { .define(saName) .withRegion(Region.US_WEST3) .withNewResourceGroup(rgName) + .disableSharedKeyAccess() .create(); - String connectionString = ResourceManagerUtils.getStorageConnectionString(saName, - storageAccount.getKeys().get(0).value(), AzureEnvironment.AZURE); - // RDB RedisCache redisCache = redisManager.redisCaches() .define(rrName) @@ -318,7 +325,10 @@ public void canCreateRedisWithRdbAof() { .withRedisConfiguration(new RedisConfiguration().withRdbBackupEnabled("true") .withRdbBackupFrequency("15") .withRdbBackupMaxSnapshotCount("1") - .withRdbStorageConnectionString(connectionString)) + .withRdbStorageConnectionString(storageAccount.endPoints().primary().blob()) + .withPreferredDataPersistenceAuthMethod("managedIdentity") + .withAadEnabled("true")) + .disableAccessKeyAuthentication() .create(); Assertions.assertEquals("true", redisCache.innerModel().redisConfiguration().rdbBackupEnabled()); Assertions.assertEquals("15", redisCache.innerModel().redisConfiguration().rdbBackupFrequency()); @@ -336,13 +346,14 @@ public void canCreateRedisWithRdbAof() { .withPremiumSku() .withMinimumTlsVersion(TlsVersion.ONE_TWO) .withRedisConfiguration("aof-backup-enabled", "true") - .withRedisConfiguration("aof-storage-connection-string-0", connectionString) - .withRedisConfiguration("aof-storage-connection-string-1", connectionString) + .withRedisConfiguration("aof-storage-connection-string-0", storageAccount.endPoints().primary().blob()) + .withRedisConfiguration("preferred-data-persistence-auth-method", "managedIdentity") + .withRedisConfiguration("aad-enabled", "true") + .disableAccessKeyAuthentication() .create(); Assertions.assertEquals("true", redisCache.innerModel().redisConfiguration().aofBackupEnabled()); if (!isPlaybackMode()) { Assertions.assertNotNull(redisCache.innerModel().redisConfiguration().aofStorageConnectionString0()); - Assertions.assertNotNull(redisCache.innerModel().redisConfiguration().aofStorageConnectionString1()); } assertSameVersion(RedisCache.RedisVersion.V6, redisCache.redisVersion()); @@ -371,8 +382,11 @@ public void canUpdatePublicNetworkAccess() { .withRegion(Region.ASIA_EAST) .withNewResourceGroup(rgName) .withBasicSku() + .withRedisConfiguration("aad-enabled", "true") + .disableAccessKeyAuthentication() .create(); + Assertions.assertTrue(!redisCache.isAccessKeyAuthenticationEnabled()); redisCache.update().disablePublicNetworkAccess().apply(); Assertions.assertEquals(PublicNetworkAccess.DISABLED, redisCache.publicNetworkAccess()); diff --git a/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md b/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md index 7693a73529b6..286bf5209860 100644 --- a/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md +++ b/sdk/resourcemanager/azure-resourcemanager/CHANGELOG.md @@ -2,11 +2,11 @@ ## 2.59.0-beta.1 (Unreleased) -### Features Added +### azure-resourcemanager-redis -### Breaking Changes +#### Features Added -### Bugs Fixed +- Supported enabling/disabling authentication through access keys for `RedisCache`. ### Other Changes From 295ff751c6037b29b093e601274f553472194119 Mon Sep 17 00:00:00 2001 From: Alan Zimmer <48699787+alzimmermsft@users.noreply.github.com> Date: Wed, 7 Jan 2026 14:53:31 -0500 Subject: [PATCH 23/41] Upgrade Netty and Reactor patch versions (#47611) --- common/perf-test-core/pom.xml | 2 +- eng/versioning/external_dependencies.txt | 30 +++++------ sdk/clientcore/http-netty4/pom.xml | 50 +++++++++---------- sdk/core/azure-core-http-netty/pom.xml | 46 ++++++++--------- sdk/core/azure-core-version-tests/pom.xml | 4 +- sdk/core/azure-core/pom.xml | 4 +- .../azure-messaging-eventhubs/docs/pom.xml | 2 +- sdk/openai/azure-ai-openai-realtime/pom.xml | 4 +- .../azure-messaging-webpubsub-client/pom.xml | 4 +- 9 files changed, 73 insertions(+), 73 deletions(-) diff --git a/common/perf-test-core/pom.xml b/common/perf-test-core/pom.xml index 60bf111b8ad7..7f1ec34106c3 100644 --- a/common/perf-test-core/pom.xml +++ b/common/perf-test-core/pom.xml @@ -56,7 +56,7 @@ com.beust:jcommander:[1.82] - io.projectreactor:reactor-core:[3.7.11] + io.projectreactor:reactor-core:[3.7.14] io.vertx:vertx-codegen:[4.5.17] diff --git a/eng/versioning/external_dependencies.txt b/eng/versioning/external_dependencies.txt index 35ba63950967..c880cf4bb7d2 100644 --- a/eng/versioning/external_dependencies.txt +++ b/eng/versioning/external_dependencies.txt @@ -43,22 +43,22 @@ commons-net:commons-net;3.9.0 io.cloudevents:cloudevents-api;2.2.0 io.cloudevents:cloudevents-core;2.2.0 io.fabric8:kubernetes-client;6.12.1 -io.netty:netty-buffer;4.1.127.Final -io.netty:netty-common;4.1.127.Final -io.netty:netty-codec;4.1.127.Final -io.netty:netty-codec-http;4.1.127.Final -io.netty:netty-codec-http2;4.1.127.Final -io.netty:netty-handler;4.1.127.Final -io.netty:netty-handler-proxy;4.1.127.Final -io.netty:netty-resolver;4.1.127.Final -io.netty:netty-resolver-dns;4.1.127.Final +io.netty:netty-buffer;4.1.130.Final +io.netty:netty-common;4.1.130.Final +io.netty:netty-codec;4.1.130.Final +io.netty:netty-codec-http;4.1.130.Final +io.netty:netty-codec-http2;4.1.130.Final +io.netty:netty-handler;4.1.130.Final +io.netty:netty-handler-proxy;4.1.130.Final +io.netty:netty-resolver;4.1.130.Final +io.netty:netty-resolver-dns;4.1.130.Final io.netty:netty-tcnative-boringssl-static;2.0.74.Final -io.netty:netty-transport;4.1.127.Final -io.netty:netty-transport-native-epoll;4.1.127.Final -io.netty:netty-transport-native-unix-common;4.1.127.Final -io.netty:netty-transport-native-kqueue;4.1.127.Final -io.projectreactor.netty:reactor-netty-http;1.2.10 -io.projectreactor:reactor-core;3.7.11 +io.netty:netty-transport;4.1.130.Final +io.netty:netty-transport-native-epoll;4.1.130.Final +io.netty:netty-transport-native-unix-common;4.1.130.Final +io.netty:netty-transport-native-kqueue;4.1.130.Final +io.projectreactor.netty:reactor-netty-http;1.2.13 +io.projectreactor:reactor-core;3.7.14 io.vertx:vertx-codegen;4.5.17 io.vertx:vertx-core;4.5.17 javax.websocket:javax.websocket-api;1.1 diff --git a/sdk/clientcore/http-netty4/pom.xml b/sdk/clientcore/http-netty4/pom.xml index 4a4a7905215c..7590e0004aa0 100644 --- a/sdk/clientcore/http-netty4/pom.xml +++ b/sdk/clientcore/http-netty4/pom.xml @@ -56,7 +56,7 @@ io.clientcore.core.implementation*,io.clientcore.core.models,io.clientcore.core.util,io.clientcore.core.util* - 4.1.127.Final + 4.1.130.Final @@ -69,52 +69,52 @@ io.netty netty-buffer - 4.1.127.Final + 4.1.130.Final io.netty netty-codec - 4.1.127.Final + 4.1.130.Final io.netty netty-codec-http - 4.1.127.Final + 4.1.130.Final io.netty netty-codec-http2 - 4.1.127.Final + 4.1.130.Final io.netty netty-common - 4.1.127.Final + 4.1.130.Final io.netty netty-handler - 4.1.127.Final + 4.1.130.Final io.netty netty-handler-proxy - 4.1.127.Final + 4.1.130.Final io.netty netty-resolver - 4.1.127.Final + 4.1.130.Final io.netty netty-resolver-dns - 4.1.127.Final + 4.1.130.Final io.netty netty-transport - 4.1.127.Final + 4.1.130.Final @@ -129,14 +129,14 @@ io.netty netty-transport-native-unix-common - 4.1.127.Final + 4.1.130.Final linux-x86_64 test io.netty netty-transport-native-epoll - 4.1.127.Final + 4.1.130.Final linux-x86_64 test @@ -144,14 +144,14 @@ io.netty netty-transport-native-unix-common - 4.1.127.Final + 4.1.130.Final osx-x86_64 test io.netty netty-transport-native-kqueue - 4.1.127.Final + 4.1.130.Final osx-x86_64 test @@ -223,16 +223,16 @@ - io.netty:netty-buffer:[4.1.127.Final] - io.netty:netty-codec:[4.1.127.Final] - io.netty:netty-codec-http:[4.1.127.Final] - io.netty:netty-codec-http2:[4.1.127.Final] - io.netty:netty-common:[4.1.127.Final] - io.netty:netty-handler:[4.1.127.Final] - io.netty:netty-handler-proxy:[4.1.127.Final] - io.netty:netty-resolver:[4.1.127.Final] - io.netty:netty-resolver-dns:[4.1.127.Final] - io.netty:netty-transport:[4.1.127.Final] + io.netty:netty-buffer:[4.1.130.Final] + io.netty:netty-codec:[4.1.130.Final] + io.netty:netty-codec-http:[4.1.130.Final] + io.netty:netty-codec-http2:[4.1.130.Final] + io.netty:netty-common:[4.1.130.Final] + io.netty:netty-handler:[4.1.130.Final] + io.netty:netty-handler-proxy:[4.1.130.Final] + io.netty:netty-resolver:[4.1.130.Final] + io.netty:netty-resolver-dns:[4.1.130.Final] + io.netty:netty-transport:[4.1.130.Final] diff --git a/sdk/core/azure-core-http-netty/pom.xml b/sdk/core/azure-core-http-netty/pom.xml index 22f355727f19..1bc538843e11 100644 --- a/sdk/core/azure-core-http-netty/pom.xml +++ b/sdk/core/azure-core-http-netty/pom.xml @@ -64,7 +64,7 @@ false false - 4.1.127.Final + 4.1.130.Final 2.0.74.Final @@ -85,49 +85,49 @@ io.netty netty-handler - 4.1.127.Final + 4.1.130.Final io.netty netty-handler-proxy - 4.1.127.Final + 4.1.130.Final io.netty netty-buffer - 4.1.127.Final + 4.1.130.Final io.netty netty-codec - 4.1.127.Final + 4.1.130.Final io.netty netty-codec-http - 4.1.127.Final + 4.1.130.Final io.netty netty-codec-http2 - 4.1.127.Final + 4.1.130.Final io.netty netty-transport-native-unix-common - 4.1.127.Final + 4.1.130.Final io.netty netty-transport-native-epoll - 4.1.127.Final + 4.1.130.Final linux-x86_64 io.netty netty-transport-native-kqueue - 4.1.127.Final + 4.1.130.Final osx-x86_64 @@ -141,13 +141,13 @@ io.projectreactor.netty reactor-netty-http - 1.2.10 + 1.2.13 io.netty netty-common - 4.1.127.Final + 4.1.130.Final @@ -209,17 +209,17 @@ io.netty:netty-tcnative-boringssl-static:[2.0.74.Final] - io.projectreactor.netty:reactor-netty-http:[1.2.10] - io.netty:netty-buffer:[4.1.127.Final] - io.netty:netty-common:[4.1.127.Final] - io.netty:netty-codec:[4.1.127.Final] - io.netty:netty-codec-http:[4.1.127.Final] - io.netty:netty-codec-http2:[4.1.127.Final] - io.netty:netty-handler:[4.1.127.Final] - io.netty:netty-handler-proxy:[4.1.127.Final] - io.netty:netty-transport-native-unix-common:[4.1.127.Final] - io.netty:netty-transport-native-epoll:[4.1.127.Final] - io.netty:netty-transport-native-kqueue:[4.1.127.Final] + io.projectreactor.netty:reactor-netty-http:[1.2.13] + io.netty:netty-buffer:[4.1.130.Final] + io.netty:netty-common:[4.1.130.Final] + io.netty:netty-codec:[4.1.130.Final] + io.netty:netty-codec-http:[4.1.130.Final] + io.netty:netty-codec-http2:[4.1.130.Final] + io.netty:netty-handler:[4.1.130.Final] + io.netty:netty-handler-proxy:[4.1.130.Final] + io.netty:netty-transport-native-unix-common:[4.1.130.Final] + io.netty:netty-transport-native-epoll:[4.1.130.Final] + io.netty:netty-transport-native-kqueue:[4.1.130.Final] diff --git a/sdk/core/azure-core-version-tests/pom.xml b/sdk/core/azure-core-version-tests/pom.xml index 9523d94d1e4f..c5a411966a46 100644 --- a/sdk/core/azure-core-version-tests/pom.xml +++ b/sdk/core/azure-core-version-tests/pom.xml @@ -95,7 +95,7 @@ io.projectreactor reactor-core - 3.7.11 + 3.7.14 + io.projectreactor:reactor-core:[3.7.14] com.fasterxml.jackson.core:jackson-annotations:[2.18.4] com.fasterxml.jackson.core:jackson-core:[2.18.4.1] com.fasterxml.jackson.core:jackson-databind:[2.18.4] diff --git a/sdk/core/azure-core/pom.xml b/sdk/core/azure-core/pom.xml index 50bcda060b2e..35b5d61b2f9a 100644 --- a/sdk/core/azure-core/pom.xml +++ b/sdk/core/azure-core/pom.xml @@ -146,7 +146,7 @@ io.projectreactor reactor-core - 3.7.11 + 3.7.14 @@ -223,7 +223,7 @@ - io.projectreactor:reactor-core:[3.7.11] + io.projectreactor:reactor-core:[3.7.14] com.fasterxml.jackson.core:jackson-annotations:[2.18.4] com.fasterxml.jackson.core:jackson-core:[2.18.4.1] com.fasterxml.jackson.core:jackson-databind:[2.18.4] diff --git a/sdk/eventhubs/azure-messaging-eventhubs/docs/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs/docs/pom.xml index 75d70be681e4..f46543617a70 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/docs/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs/docs/pom.xml @@ -25,7 +25,7 @@ io.projectreactor reactor-core - 3.7.11 + 3.7.14 diff --git a/sdk/openai/azure-ai-openai-realtime/pom.xml b/sdk/openai/azure-ai-openai-realtime/pom.xml index ca7910bc3405..f3d76274d452 100644 --- a/sdk/openai/azure-ai-openai-realtime/pom.xml +++ b/sdk/openai/azure-ai-openai-realtime/pom.xml @@ -66,7 +66,7 @@ io.netty netty-codec-http - 4.1.127.Final + 4.1.130.Final @@ -102,7 +102,7 @@ - io.netty:netty-codec-http:[4.1.127.Final] + io.netty:netty-codec-http:[4.1.130.Final] diff --git a/sdk/webpubsub/azure-messaging-webpubsub-client/pom.xml b/sdk/webpubsub/azure-messaging-webpubsub-client/pom.xml index f02094579e35..85b3ffa241c5 100644 --- a/sdk/webpubsub/azure-messaging-webpubsub-client/pom.xml +++ b/sdk/webpubsub/azure-messaging-webpubsub-client/pom.xml @@ -55,7 +55,7 @@ io.netty netty-codec-http - 4.1.127.Final + 4.1.130.Final @@ -101,7 +101,7 @@ - io.netty:netty-codec-http:[4.1.127.Final] + io.netty:netty-codec-http:[4.1.130.Final] From dabb51e849491f962810a1261bec4856c714dbd0 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Wed, 7 Jan 2026 12:24:23 -0800 Subject: [PATCH 24/41] Sync .github/workflows directory with azure-sdk-tools repository (#47644) --- .github/workflows/event-processor.yml | 2 +- .github/workflows/post-apiview.yml | 2 +- .github/workflows/scheduled-event-processor.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/event-processor.yml b/.github/workflows/event-processor.yml index eabc6e2ee0e7..6cb56cf060a4 100644 --- a/.github/workflows/event-processor.yml +++ b/.github/workflows/event-processor.yml @@ -97,7 +97,7 @@ jobs: LABEL_SERVICE_API_KEY: ${{ env.LABEL_SERVICE_API_KEY }} - name: Archive github event data - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 if: always() with: name: event diff --git a/.github/workflows/post-apiview.yml b/.github/workflows/post-apiview.yml index 4306a63ace13..71678bbb631b 100644 --- a/.github/workflows/post-apiview.yml +++ b/.github/workflows/post-apiview.yml @@ -18,7 +18,7 @@ jobs: contains(github.event.check_run.name, 'Build Analyze') ) steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: sparse-checkout: 'eng/common' diff --git a/.github/workflows/scheduled-event-processor.yml b/.github/workflows/scheduled-event-processor.yml index 727db15976e2..4e89d44cf0e6 100644 --- a/.github/workflows/scheduled-event-processor.yml +++ b/.github/workflows/scheduled-event-processor.yml @@ -123,7 +123,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Archive github event data - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 if: always() with: name: event From 75185997189df6c78e851f84cba03d45392e4eb7 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Wed, 7 Jan 2026 12:24:31 -0800 Subject: [PATCH 25/41] Add instruction to authenticate with Github CLI (#47645) Co-authored-by: Summer Warren --- .../azsdk-tools/create-release-plan.instructions.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/eng/common/instructions/azsdk-tools/create-release-plan.instructions.md b/eng/common/instructions/azsdk-tools/create-release-plan.instructions.md index 29a4264428d2..6d82d3272eca 100644 --- a/eng/common/instructions/azsdk-tools/create-release-plan.instructions.md +++ b/eng/common/instructions/azsdk-tools/create-release-plan.instructions.md @@ -51,6 +51,10 @@ If any details are missing, prompt the user accordingly: - If SDK pull requests exist: - Collect the pull request links from the user - Use `azsdk_link_sdk_pull_request_to_release_plan` to link each SDK pull request to the release plan + > **GitHub CLI Authentication Required:** + > Before running any SDK PR linking steps, ensure you are authenticated with GitHub CLI. + > Run: `gh auth login` + > You can check authentication status with `gh auth status`. - Confirm successful linking for each SDK pull request ## Step 7: Summary From c4f4b169598bca5cefb509d41edd67a436bb2500 Mon Sep 17 00:00:00 2001 From: Alan Zimmer <48699787+alzimmermsft@users.noreply.github.com> Date: Wed, 7 Jan 2026 15:40:16 -0500 Subject: [PATCH 26/41] Configure CONNECT timeout on Netty proxying (#47554) * Pass CONNECT timeout setting to ProxyHandlers * Fix linting --- .../http/netty/NettyAsyncHttpClientBuilder.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/NettyAsyncHttpClientBuilder.java b/sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/NettyAsyncHttpClientBuilder.java index 2c9ba2e8e9e9..1ee286d12e3a 100644 --- a/sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/NettyAsyncHttpClientBuilder.java +++ b/sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/NettyAsyncHttpClientBuilder.java @@ -216,9 +216,9 @@ public com.azure.core.http.HttpClient build() { // .httpResponseDecoder passes a new HttpResponseDecoderSpec and any existing configuration should be updated // instead of overwritten. HttpResponseDecoderSpec initialSpec = nettyHttpClient.configuration().decoder(); + long connectTimeoutMillis = getTimeout(connectTimeout, getDefaultConnectTimeout()).toMillis(); nettyHttpClient = nettyHttpClient.port(port) - .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, - (int) getTimeout(connectTimeout, getDefaultConnectTimeout()).toMillis()) + .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, (int) connectTimeoutMillis) .httpResponseDecoder(httpResponseDecoderSpec -> { int maxHeaderSize = initialSpec.maxHeaderSize(); if (maxHeaderSize == HttpDecoderSpec.DEFAULT_MAX_HEADER_SIZE) { @@ -266,16 +266,18 @@ public com.azure.core.http.HttpClient build() { addProxyHandler = true; nettyHttpClient = nettyHttpClient.doOnChannelInit((connectionObserver, channel, socketAddress) -> { if (shouldApplyProxy(socketAddress, nonProxyHostsPattern)) { - channel.pipeline() - .addFirst(NettyPipeline.ProxyHandler, - new HttpProxyHandler(AddressUtils.replaceWithResolved(buildProxyOptions.getAddress()), - handler, proxyChallengeHolder)); + HttpProxyHandler httpProxyHandler + = new HttpProxyHandler(AddressUtils.replaceWithResolved(buildProxyOptions.getAddress()), + handler, proxyChallengeHolder); + httpProxyHandler.setConnectTimeoutMillis(connectTimeoutMillis); + channel.pipeline().addFirst(NettyPipeline.ProxyHandler, httpProxyHandler); } }); } else { nettyHttpClient = nettyHttpClient.proxy(proxy -> proxy.type(toReactorNettyProxyType(buildProxyOptions.getType())) .socketAddress(buildProxyOptions.getAddress()) + .connectTimeoutMillis(connectTimeoutMillis) .username(buildProxyOptions.getUsername()) .password(ignored -> buildProxyOptions.getPassword()) .nonProxyHosts(buildProxyOptions.getNonProxyHosts())); From fc81201bf3b6182ae5e28d0619968719da8bfa79 Mon Sep 17 00:00:00 2001 From: v-huizhu2 Date: Thu, 8 Jan 2026 11:52:06 +0800 Subject: [PATCH 27/41] mgmt containerinstance , fix live test failures (#47634) * test(container): disable failing test due to policy restriction - Added @Disabled annotation to testBeginCreateWithFileShareVolume - Included reason for disabling: internal policy denies local auth methods - Preserved existing @DoNotRecord annotation and skipInPlayback setting * feat(test): enable file share volume testing for container groups - Add storage account creation and key retrieval for file share testing - Integrate Azure file share volume configuration with existing storage credentials - Include ShareServiceClientBuilder for file endpoint management - Remove @Disabled annotation to activate file share volume tests - Add storage manager initialization in test base class - Update container group volume definition to use existing Azure file share * fix(test): update ContainerGroupTest to clarify Azure Storage limitations with managed identity * test(containerinstance): add tests for container group volume configurations - Added testBeginCreateWithEmptyDirectoryVolume method - Disabled testBeginCreateWithFileShareVolume due to internal policy restrictions - Updated volume configuration logic to use withEmptyDirectoryVolume instead of manual volume definition - Added proper annotations for test recording and policy compliance - Implemented container group creation with virtual network and volume mounting - Added assertions for volume count validation * fix(containerinstance): update test comment and remove outdated reference Removed outdated comment about Azure Storage SMB mounting with managed identity and updated the test documentation to reflect current behavior. The test now properly references the Azure documentation for container instances volume mounting. * chore(containerinstance): update assets tag Update the assets tag from a0e5cc2e29 to bd0493a9b7 in azure-resourcemanager-containerinstance module * refactor(tests): remove unused storage manager from container instance tests - Removed storage account creation logic from ContainerGroupTest - Eliminated unused StorageManager dependency from ContainerInstanceManagementTest - Cleaned up related imports and fields that were no longer needed - Simplified test setup by removing unnecessary storage account initialization * chore(containerinstance): update assets tag Update the assets tag in assets.json from bd0493a9b7 to cade898991 for azure-resourcemanager-containerinstance package. * refactor(ContainerGroupTest): remove unused imports - Removed unused Azure identity imports (AzureAuthorityHosts, ClientSecretCredential, DefaultAzureCredentialBuilder) - Removed unused storage related imports (StorageAccount, StorageAccountKey, ShareServiceAsyncClient, ShareServiceClientBuilder) * Update sdk/containerinstance/azure-resourcemanager-containerinstance/src/test/java/com/azure/resourcemanager/containerinstance/ContainerGroupTest.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update sdk/containerinstance/azure-resourcemanager-containerinstance/src/test/java/com/azure/resourcemanager/containerinstance/ContainerGroupTest.java Co-authored-by: Xiaofei Cao <92354331+XiaofeiCao@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Xiaofei Cao <92354331+XiaofeiCao@users.noreply.github.com> --- .../assets.json | 2 +- .../containerinstance/ContainerGroupTest.java | 27 ++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/sdk/containerinstance/azure-resourcemanager-containerinstance/assets.json b/sdk/containerinstance/azure-resourcemanager-containerinstance/assets.json index b1a68ecfaf1a..5ae2803d305d 100644 --- a/sdk/containerinstance/azure-resourcemanager-containerinstance/assets.json +++ b/sdk/containerinstance/azure-resourcemanager-containerinstance/assets.json @@ -2,5 +2,5 @@ "AssetsRepo": "Azure/azure-sdk-assets", "AssetsRepoPrefixPath": "java", "TagPrefix": "java/containerinstance/azure-resourcemanager-containerinstance", - "Tag": "java/containerinstance/azure-resourcemanager-containerinstance_a0e5cc2e29" + "Tag": "java/containerinstance/azure-resourcemanager-containerinstance_cade898991" } diff --git a/sdk/containerinstance/azure-resourcemanager-containerinstance/src/test/java/com/azure/resourcemanager/containerinstance/ContainerGroupTest.java b/sdk/containerinstance/azure-resourcemanager-containerinstance/src/test/java/com/azure/resourcemanager/containerinstance/ContainerGroupTest.java index 2ed7cce6084e..6a597a99d78b 100644 --- a/sdk/containerinstance/azure-resourcemanager-containerinstance/src/test/java/com/azure/resourcemanager/containerinstance/ContainerGroupTest.java +++ b/sdk/containerinstance/azure-resourcemanager-containerinstance/src/test/java/com/azure/resourcemanager/containerinstance/ContainerGroupTest.java @@ -3,12 +3,12 @@ package com.azure.resourcemanager.containerinstance; +import com.azure.core.management.Region; import com.azure.core.test.annotation.DoNotRecord; import com.azure.resourcemanager.containerinstance.models.Container; import com.azure.resourcemanager.containerinstance.models.ContainerAttachResult; import com.azure.resourcemanager.containerinstance.models.ContainerExec; import com.azure.resourcemanager.containerinstance.models.ContainerGroup; -import com.azure.core.management.Region; import com.azure.resourcemanager.containerinstance.models.ContainerGroupRestartPolicy; import com.azure.resourcemanager.containerinstance.models.ContainerHttpGet; import com.azure.resourcemanager.containerinstance.models.ContainerProbe; @@ -19,6 +19,7 @@ import com.azure.resourcemanager.resources.fluentcore.model.Accepted; import com.azure.resourcemanager.resources.fluentcore.utils.ResourceManagerUtils; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import java.time.Duration; @@ -210,8 +211,11 @@ public void testBeginCreate() { } // test contains a data-plane call + // Azure Storage doesn't support SMB mounting of file share using managed identity + // https://learn.microsoft.com/azure/container-instances/container-instances-volume-azure-files @DoNotRecord(skipInPlayback = true) @Test + @Disabled("This request was denied due to internal policy. Container Group requires that Storage Accounts is authenticated with managed identity, but Azure Storage doesn't support SMB mounting of file share using managed identity. ") public void testBeginCreateWithFileShareVolume() { String containerGroupName = generateRandomResourceName("container", 20); Region region = Region.US_WEST3; @@ -232,6 +236,27 @@ public void testBeginCreateWithFileShareVolume() { Assertions.assertEquals(1, containerGroup.volumes().size()); } + @DoNotRecord(skipInPlayback = true) + @Test + public void testBeginCreateWithEmptyDirectoryVolume() { + String containerGroupName = generateRandomResourceName("container", 20); + Region region = Region.US_WEST3; + + // create virtual network before creating container group + Accepted acceptedContainerGroup = containerInstanceManager.containerGroups() + .define(containerGroupName) + .withRegion(region) + .withNewResourceGroup(rgName) + .withLinux() + .withPublicImageRegistryOnly() + .withEmptyDirectoryVolume("vol2") + .withContainerInstance("nginx", 80) + .withNewVirtualNetwork("10.0.0.0/24") + .beginCreate(); + ContainerGroup containerGroup = acceptedContainerGroup.getSyncPoller().getFinalResult(); + Assertions.assertEquals(1, containerGroup.volumes().size()); + } + @Test public void testCreateWithAutoGeneratedDomainNameLabelScope() { String containerGroupName = generateRandomResourceName("container", 20); From 3efb4ec9fb0b46f2db377caf7276fc08b679752d Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Wed, 7 Jan 2026 21:44:44 -0800 Subject: [PATCH 28/41] [Automation] Generate SDK based on TypeSpec 0.38.0 (#47652) --- eng/emitter-package-lock.json | 46 +++++++++---------- eng/emitter-package.json | 8 ++-- .../TranscriptionClientImpl.java | 10 ++-- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/eng/emitter-package-lock.json b/eng/emitter-package-lock.json index ce90e9a7c675..8ad5850746cd 100644 --- a/eng/emitter-package-lock.json +++ b/eng/emitter-package-lock.json @@ -5,14 +5,14 @@ "packages": { "": { "dependencies": { - "@azure-tools/typespec-java": "0.37.4" + "@azure-tools/typespec-java": "0.38.0" }, "devDependencies": { - "@azure-tools/typespec-autorest": "0.63.0", - "@azure-tools/typespec-azure-core": "0.63.0", + "@azure-tools/typespec-autorest": "0.63.1", + "@azure-tools/typespec-azure-core": "0.63.1", "@azure-tools/typespec-azure-resource-manager": "0.63.0", "@azure-tools/typespec-azure-rulesets": "0.63.0", - "@azure-tools/typespec-client-generator-core": "0.63.0", + "@azure-tools/typespec-client-generator-core": "0.63.3", "@azure-tools/typespec-liftr-base": "0.11.0", "@typespec/compiler": "1.7.1", "@typespec/http": "1.7.0", @@ -72,9 +72,9 @@ } }, "node_modules/@azure-tools/typespec-autorest": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.63.0.tgz", - "integrity": "sha512-E04eX5axqua+bVs8QH1z74Wrq+XjO6tInq6d6EhjBNQAcRyFCJNxJHqcJkzMWNy1ID/iIGNXyRG/elK2AdegZg==", + "version": "0.63.1", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.63.1.tgz", + "integrity": "sha512-Nem51jk2eURxa5PPEEUjdguxAEwNIyxTi3ac/GOo/B3SgwIa3WAOpwWqQPyGLPD2hHRKa2pm9FsPu6aLPmgeCQ==", "license": "MIT", "engines": { "node": ">=20.0.0" @@ -82,7 +82,7 @@ "peerDependencies": { "@azure-tools/typespec-azure-core": "^0.63.0", "@azure-tools/typespec-azure-resource-manager": "^0.63.0", - "@azure-tools/typespec-client-generator-core": "^0.63.0", + "@azure-tools/typespec-client-generator-core": "^0.63.1", "@typespec/compiler": "^1.7.0", "@typespec/http": "^1.7.0", "@typespec/openapi": "^1.7.0", @@ -97,9 +97,9 @@ } }, "node_modules/@azure-tools/typespec-azure-core": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.63.0.tgz", - "integrity": "sha512-FbEmpZSQENzBt/Y8qSF1b98T8CqT3bV7IRV8AGGm/73NQZiWQCm2LvQzR0/lbqGntS2EnSBrt394Kt69wM4ifA==", + "version": "0.63.1", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.63.1.tgz", + "integrity": "sha512-r5bJLDNUYAoP3i6topz3P7Y7vFMig92pO/zUuTgo4Q5hTbFoUgKPBBBmamVSwBh5MO4lMSLekZC3QoEYnsVUDg==", "license": "MIT", "engines": { "node": ">=20.0.0" @@ -147,9 +147,9 @@ } }, "node_modules/@azure-tools/typespec-client-generator-core": { - "version": "0.63.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.63.0.tgz", - "integrity": "sha512-zpvFvjCjNW+GWzHBV7vJ2E1PKXrmyNqp7FQiYo/D7PJBVTXNtOyIKqqo043ktAaWihbr8cl5QguuNSoBAKL0+Q==", + "version": "0.63.3", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.63.3.tgz", + "integrity": "sha512-+ZSajpbwjZgMztgYgszFWzLrhOzjWNW7VEQjWvc7mMBtsF0fDTvB0gGfQlJ81CBM9yudPBW0JpwYrO26NXXk8g==", "license": "MIT", "dependencies": { "change-case": "~5.4.4", @@ -173,9 +173,9 @@ } }, "node_modules/@azure-tools/typespec-java": { - "version": "0.37.4", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-java/-/typespec-java-0.37.4.tgz", - "integrity": "sha512-aK3FSeJ/Ik5p9KZePNgybuuPLc8kIPVZ8iHJAVJn7c+ra0Uv85SpA1A8B2nWu8LlCMMJxb8rel5X3sdVWQWC/g==", + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-java/-/typespec-java-0.38.0.tgz", + "integrity": "sha512-8YYI2EM8LrawEhKIWxZOS+dBdsNf64TLyyHfIDLNz8D7ZS3obNEa1dTgz0t4aLcavItOxzqQTVCjpnF7znsEMw==", "license": "MIT", "dependencies": { "@autorest/codemodel": "~4.20.1", @@ -186,11 +186,11 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@azure-tools/typespec-autorest": ">=0.63.0 <1.0.0", - "@azure-tools/typespec-azure-core": ">=0.63.0 <1.0.0", + "@azure-tools/typespec-autorest": ">=0.63.1 <1.0.0", + "@azure-tools/typespec-azure-core": ">=0.63.1 <1.0.0", "@azure-tools/typespec-azure-resource-manager": ">=0.63.0 <1.0.0", "@azure-tools/typespec-azure-rulesets": ">=0.63.0 <1.0.0", - "@azure-tools/typespec-client-generator-core": ">=0.63.0 <1.0.0", + "@azure-tools/typespec-client-generator-core": ">=0.63.3 <1.0.0", "@azure-tools/typespec-liftr-base": ">=0.11.0 <1.0.0", "@typespec/compiler": "^1.7.1", "@typespec/http": "^1.7.0", @@ -925,9 +925,9 @@ "license": "BSD-3-Clause" }, "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" diff --git a/eng/emitter-package.json b/eng/emitter-package.json index 5b9bf7f6157f..0082113333e3 100644 --- a/eng/emitter-package.json +++ b/eng/emitter-package.json @@ -1,14 +1,14 @@ { "main": "dist/src/index.js", "dependencies": { - "@azure-tools/typespec-java": "0.37.4" + "@azure-tools/typespec-java": "0.38.0" }, "devDependencies": { - "@azure-tools/typespec-autorest": "0.63.0", - "@azure-tools/typespec-azure-core": "0.63.0", + "@azure-tools/typespec-autorest": "0.63.1", + "@azure-tools/typespec-azure-core": "0.63.1", "@azure-tools/typespec-azure-resource-manager": "0.63.0", "@azure-tools/typespec-azure-rulesets": "0.63.0", - "@azure-tools/typespec-client-generator-core": "0.63.0", + "@azure-tools/typespec-client-generator-core": "0.63.3", "@azure-tools/typespec-liftr-base": "0.11.0", "@typespec/compiler": "1.7.1", "@typespec/http": "1.7.0", diff --git a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/TranscriptionClientImpl.java b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/TranscriptionClientImpl.java index bb14d116f3e0..5e57b77e911b 100644 --- a/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/TranscriptionClientImpl.java +++ b/sdk/transcription/azure-ai-speech-transcription/src/main/java/com/azure/ai/speech/transcription/implementation/TranscriptionClientImpl.java @@ -45,13 +45,13 @@ public final class TranscriptionClientImpl { /** * Supported Cognitive Services endpoints (protocol and hostname, for example: - * https://westus.api.cognitive.microsoft.com. + * https://westus.api.cognitive.microsoft.com). */ private final String endpoint; /** * Gets Supported Cognitive Services endpoints (protocol and hostname, for example: - * https://westus.api.cognitive.microsoft.com. + * https://westus.api.cognitive.microsoft.com). * * @return the endpoint value. */ @@ -105,7 +105,7 @@ public SerializerAdapter getSerializerAdapter() { * Initializes an instance of TranscriptionClient client. * * @param endpoint Supported Cognitive Services endpoints (protocol and hostname, for example: - * https://westus.api.cognitive.microsoft.com. + * https://westus.api.cognitive.microsoft.com). * @param serviceVersion Service version. */ public TranscriptionClientImpl(String endpoint, TranscriptionServiceVersion serviceVersion) { @@ -118,7 +118,7 @@ public TranscriptionClientImpl(String endpoint, TranscriptionServiceVersion serv * * @param httpPipeline The HTTP pipeline to send requests through. * @param endpoint Supported Cognitive Services endpoints (protocol and hostname, for example: - * https://westus.api.cognitive.microsoft.com. + * https://westus.api.cognitive.microsoft.com). * @param serviceVersion Service version. */ public TranscriptionClientImpl(HttpPipeline httpPipeline, String endpoint, @@ -132,7 +132,7 @@ public TranscriptionClientImpl(HttpPipeline httpPipeline, String endpoint, * @param httpPipeline The HTTP pipeline to send requests through. * @param serializerAdapter The serializer to serialize an object into a string. * @param endpoint Supported Cognitive Services endpoints (protocol and hostname, for example: - * https://westus.api.cognitive.microsoft.com. + * https://westus.api.cognitive.microsoft.com). * @param serviceVersion Service version. */ public TranscriptionClientImpl(HttpPipeline httpPipeline, SerializerAdapter serializerAdapter, String endpoint, From 764477f9a9b2fc23dd960d9177c525f872645315 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Wed, 7 Jan 2026 22:02:58 -0800 Subject: [PATCH 29/41] [Automation] Generate Fluent Lite from Swagger subscription#package-2021-10 (#47653) --- .../CHANGELOG.md | 191 +++++- .../README.md | 8 +- .../SAMPLE.md | 261 ++++++-- .../pom.xml | 4 +- .../subscription/SubscriptionManager.java | 57 +- .../subscription/fluent/AliasClient.java | 60 +- ...Client.java => BillingAccountsClient.java} | 29 +- .../subscription/fluent/OperationsClient.java | 20 +- .../fluent/SubscriptionClient.java | 28 +- .../fluent/SubscriptionOperationsClient.java | 78 +-- .../fluent/SubscriptionPoliciesClient.java | 88 +++ .../fluent/SubscriptionsClient.java | 152 ++++- .../AcceptOwnershipStatusResponseInner.java | 220 +++++++ .../BillingAccountPoliciesResponseInner.java | 168 +++++ ...java => GetTenantPolicyResponseInner.java} | 63 +- .../fluent/models/LocationInner.java | 163 ----- .../fluent/models/OperationInner.java | 153 +++++ .../models/OperationListResultInner.java | 128 ---- ... => SubscriptionAliasListResultInner.java} | 33 +- .../SubscriptionAliasResponseInner.java | 168 +++++ .../SubscriptionCreationResultInner.java | 96 +++ .../fluent/models/SubscriptionInner.java | 241 ------- .../models/TenantIdDescriptionInner.java | 212 ------- ...=> AcceptOwnershipStatusResponseImpl.java} | 48 +- .../implementation/AliasClientImpl.java | 375 ++++++----- .../implementation/AliasImpl.java | 44 +- .../BillingAccountPoliciesResponseImpl.java | 50 ++ .../BillingAccountsClientImpl.java | 160 +++++ .../implementation/BillingAccountsImpl.java | 56 ++ ....java => GetTenantPolicyResponseImpl.java} | 21 +- .../implementation/LocationImpl.java | 51 -- ...ListResultImpl.java => OperationImpl.java} | 31 +- .../implementation/OperationsClientImpl.java | 187 +++++- .../implementation/OperationsImpl.java | 28 +- ...a => SubscriptionAliasListResultImpl.java} | 22 +- .../SubscriptionAliasResponseImpl.java | 50 ++ .../SubscriptionClientImpl.java | 83 ++- .../SubscriptionCreationResultImpl.java | 32 + .../SubscriptionOperationsClientImpl.java | 327 ++-------- .../SubscriptionOperationsImpl.java | 62 +- .../SubscriptionPoliciesClientImpl.java | 474 ++++++++++++++ .../SubscriptionPoliciesImpl.java | 88 +++ .../SubscriptionsClientImpl.java | 587 ++++++++++++------ .../implementation/SubscriptionsImpl.java | 100 ++- .../TenantIdDescriptionImpl.java | 64 -- .../implementation/TenantsClientImpl.java | 226 ------- .../implementation/TenantsImpl.java | 45 -- .../subscription/models/AcceptOwnership.java | 56 ++ .../models/AcceptOwnershipRequest.java | 96 +++ .../AcceptOwnershipRequestProperties.java | 161 +++++ .../models/AcceptOwnershipStatusResponse.java | 69 ++ .../subscription/models/Alias.java | 44 +- .../BillingAccountPoliciesResponse.java | 55 ++ ...lingAccountPoliciesResponseProperties.java | 131 ++++ .../{Tenants.java => BillingAccounts.java} | 23 +- .../models/GetTenantPolicyListResponse.java | 104 ++++ ...onse.java => GetTenantPolicyResponse.java} | 22 +- .../subscription/models/Location.java | 62 -- .../models/LocationListResult.java | 99 --- .../subscription/models/Operation.java | 110 +--- .../subscription/models/OperationDisplay.java | 28 + .../models/OperationListResult.java | 114 +++- .../subscription/models/Operations.java | 14 +- .../subscription/models/Provisioning.java | 56 ++ .../subscription/models/PutAliasRequest.java | 9 +- .../PutAliasRequestAdditionalProperties.java | 181 ++++++ .../models/PutAliasRequestProperties.java | 57 +- .../models/PutAliasResponseProperties.java | 111 ---- .../PutTenantPolicyRequestProperties.java | 161 +++++ .../models/ServiceTenantResponse.java | 121 ++++ .../subscription/models/SpendingLimit.java | 61 -- .../subscription/models/Subscription.java | 79 --- ....java => SubscriptionAliasListResult.java} | 12 +- .../models/SubscriptionAliasResponse.java | 55 ++ .../SubscriptionAliasResponseProperties.java | 384 ++++++++++++ .../models/SubscriptionCreationResult.java | 27 + .../models/SubscriptionListResult.java | 127 ---- .../models/SubscriptionOperations.java | 66 +- .../SubscriptionOperationsGetHeaders.java | 89 +++ .../SubscriptionOperationsGetResponse.java | 40 ++ .../models/SubscriptionPolicies.java | 130 ++-- .../models/SubscriptionState.java | 71 --- .../subscription/models/Subscriptions.java | 100 ++- .../models/TenantIdDescription.java | 84 --- .../subscription/models/TenantListResult.java | 136 ---- .../subscription/models/TenantPolicy.java | 174 ++++++ .../proxy-config.json | 2 +- ...re-resourcemanager-subscription.properties | 1 + .../generated/AliasCreateSamples.java | 25 +- .../generated/AliasDeleteSamples.java | 2 +- .../generated/AliasGetSamples.java | 2 +- .../generated/AliasListSamples.java | 6 +- .../BillingAccountGetPolicySamples.java | 24 + .../generated/OperationsListSamples.java | 4 +- .../SubscriptionAcceptOwnershipSamples.java | 46 ++ ...scriptionAcceptOwnershipStatusSamples.java | 26 + ...es.java => SubscriptionCancelSamples.java} | 8 +- ...es.java => SubscriptionEnableSamples.java} | 8 +- ...a => SubscriptionOperationGetSamples.java} | 16 +- ...PolicyAddUpdatePolicyForTenantSamples.java | 34 + ...ptionPolicyGetPolicyForTenantSamples.java} | 13 +- ...ptionPolicyListPolicyForTenantSamples.java | 24 + ...es.java => SubscriptionRenameSamples.java} | 8 +- .../SubscriptionsListLocationsSamples.java | 23 - .../generated/TenantsListSamples.java | 23 - ...AcceptOwnershipRequestPropertiesTests.java | 46 ++ .../AcceptOwnershipRequestTests.java | 48 ++ ...ceptOwnershipStatusResponseInnerTests.java | 47 ++ .../generated/AliasCreateMockTests.java | 50 +- .../AliasDeleteWithResponseMockTests.java | 6 +- .../AliasGetWithResponseMockTests.java | 20 +- .../AliasListWithResponseMockTests.java | 11 +- ...lingAccountPoliciesResponseInnerTests.java | 38 ++ ...ccountPoliciesResponsePropertiesTests.java | 36 ++ ...ccountsGetPolicyWithResponseMockTests.java | 41 ++ .../CanceledSubscriptionIdInnerTests.java | 2 +- .../EnabledSubscriptionIdInnerTests.java | 4 +- .../GetTenantPolicyListResponseTests.java | 23 + .../GetTenantPolicyResponseInnerTests.java | 40 ++ .../generated/LocationInnerTests.java | 23 - .../generated/LocationListResultTests.java | 26 - .../generated/OperationDisplayTests.java | 26 +- .../generated/OperationInnerTests.java | 42 ++ .../OperationListResultInnerTests.java | 49 -- .../generated/OperationListResultTests.java | 48 ++ .../generated/OperationTests.java | 36 -- .../generated/OperationsListMockTests.java | 43 ++ .../OperationsListWithResponseMockTests.java | 42 -- .../PutAliasListResultInnerTests.java | 23 - ...AliasRequestAdditionalPropertiesTests.java | 50 ++ .../PutAliasRequestPropertiesTests.java | 59 +- .../generated/PutAliasRequestTests.java | 59 +- .../generated/PutAliasResponseInnerTests.java | 29 - .../PutAliasResponsePropertiesTests.java | 28 - ...PutTenantPolicyRequestPropertiesTests.java | 37 ++ .../RenamedSubscriptionIdInnerTests.java | 2 +- .../generated/ServiceTenantResponseTests.java | 27 + ...SubscriptionAliasListResultInnerTests.java | 23 + .../SubscriptionAliasResponseInnerTests.java | 68 ++ ...scriptionAliasResponsePropertiesTests.java | 66 ++ .../SubscriptionCreationResultInnerTests.java | 26 + .../generated/SubscriptionNameTests.java | 8 +- ...onOperationsGetWithResponseMockTests.java} | 21 +- ...ePolicyForTenantWithResponseMockTests.java | 52 ++ ...tPolicyForTenantWithResponseMockTests.java | 43 ++ ...nPoliciesListPolicyForTenantMockTests.java | 43 ++ .../generated/SubscriptionPoliciesTests.java | 23 - ...tOwnershipStatusWithResponseMockTests.java | 41 ++ ...criptionsCancelWithResponseMockTests.java} | 13 +- ...criptionsEnableWithResponseMockTests.java} | 13 +- ...criptionsRenameWithResponseMockTests.java} | 12 +- .../generated/TenantPolicyTests.java | 37 ++ 152 files changed, 7253 insertions(+), 3943 deletions(-) rename sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/{TenantsClient.java => BillingAccountsClient.java} (54%) create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionPoliciesClient.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/AcceptOwnershipStatusResponseInner.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/BillingAccountPoliciesResponseInner.java rename sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/{PutAliasResponseInner.java => GetTenantPolicyResponseInner.java} (57%) delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/LocationInner.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/OperationInner.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/OperationListResultInner.java rename sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/{PutAliasListResultInner.java => SubscriptionAliasListResultInner.java} (61%) create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionAliasResponseInner.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionCreationResultInner.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionInner.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/TenantIdDescriptionInner.java rename sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/{SubscriptionImpl.java => AcceptOwnershipStatusResponseImpl.java} (53%) create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/BillingAccountPoliciesResponseImpl.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/BillingAccountsClientImpl.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/BillingAccountsImpl.java rename sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/{PutAliasResponseImpl.java => GetTenantPolicyResponseImpl.java} (58%) delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/LocationImpl.java rename sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/{OperationListResultImpl.java => OperationImpl.java} (52%) rename sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/{PutAliasListResultImpl.java => SubscriptionAliasListResultImpl.java} (54%) create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionAliasResponseImpl.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionCreationResultImpl.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionPoliciesClientImpl.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionPoliciesImpl.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/TenantIdDescriptionImpl.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/TenantsClientImpl.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/TenantsImpl.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnership.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnershipRequest.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnershipRequestProperties.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnershipStatusResponse.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/BillingAccountPoliciesResponse.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/BillingAccountPoliciesResponseProperties.java rename sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/{Tenants.java => BillingAccounts.java} (57%) create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/GetTenantPolicyListResponse.java rename sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/{PutAliasResponse.java => GetTenantPolicyResponse.java} (56%) delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Location.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/LocationListResult.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Provisioning.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasRequestAdditionalProperties.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasResponseProperties.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutTenantPolicyRequestProperties.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/ServiceTenantResponse.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SpendingLimit.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Subscription.java rename sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/{PutAliasListResult.java => SubscriptionAliasListResult.java} (63%) create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionAliasResponse.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionAliasResponseProperties.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionCreationResult.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionListResult.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionOperationsGetHeaders.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionOperationsGetResponse.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionState.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/TenantIdDescription.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/TenantListResult.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/TenantPolicy.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/main/resources/azure-resourcemanager-subscription.properties create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/BillingAccountGetPolicySamples.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionAcceptOwnershipSamples.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionAcceptOwnershipStatusSamples.java rename sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/{SubscriptionOperationCancelSamples.java => SubscriptionCancelSamples.java} (77%) rename sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/{SubscriptionOperationEnableSamples.java => SubscriptionEnableSamples.java} (77%) rename sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/{SubscriptionsListSamples.java => SubscriptionOperationGetSamples.java} (50%) create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionPolicyAddUpdatePolicyForTenantSamples.java rename sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/{SubscriptionsGetSamples.java => SubscriptionPolicyGetPolicyForTenantSamples.java} (55%) create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionPolicyListPolicyForTenantSamples.java rename sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/{SubscriptionOperationRenameSamples.java => SubscriptionRenameSamples.java} (80%) delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionsListLocationsSamples.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/TenantsListSamples.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AcceptOwnershipRequestPropertiesTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AcceptOwnershipRequestTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AcceptOwnershipStatusResponseInnerTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/BillingAccountPoliciesResponseInnerTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/BillingAccountPoliciesResponsePropertiesTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/BillingAccountsGetPolicyWithResponseMockTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/GetTenantPolicyListResponseTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/GetTenantPolicyResponseInnerTests.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/LocationInnerTests.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/LocationListResultTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationInnerTests.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationListResultInnerTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationListResultTests.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationsListMockTests.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationsListWithResponseMockTests.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasListResultInnerTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasRequestAdditionalPropertiesTests.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasResponseInnerTests.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasResponsePropertiesTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutTenantPolicyRequestPropertiesTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/ServiceTenantResponseTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionAliasListResultInnerTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionAliasResponseInnerTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionAliasResponsePropertiesTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionCreationResultInnerTests.java rename sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/{SubscriptionsListLocationsMockTests.java => SubscriptionOperationsGetWithResponseMockTests.java} (58%) create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesAddUpdatePolicyForTenantWithResponseMockTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesGetPolicyForTenantWithResponseMockTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesListPolicyForTenantMockTests.java delete mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesTests.java create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsAcceptOwnershipStatusWithResponseMockTests.java rename sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/{SubscriptionOperationsCancelWithResponseMockTests.java => SubscriptionsCancelWithResponseMockTests.java} (72%) rename sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/{SubscriptionOperationsEnableWithResponseMockTests.java => SubscriptionsEnableWithResponseMockTests.java} (72%) rename sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/{SubscriptionOperationsRenameWithResponseMockTests.java => SubscriptionsRenameWithResponseMockTests.java} (74%) create mode 100644 sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/TenantPolicyTests.java diff --git a/sdk/subscription/azure-resourcemanager-subscription/CHANGELOG.md b/sdk/subscription/azure-resourcemanager-subscription/CHANGELOG.md index 24adf4386ed8..b6b70e770f28 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/CHANGELOG.md +++ b/sdk/subscription/azure-resourcemanager-subscription/CHANGELOG.md @@ -1,14 +1,197 @@ # Release History -## 1.1.0-beta.1 (Unreleased) +## 1.1.0-beta.1 (2026-01-08) -### Features Added +- Azure Resource Manager Subscription client library for Java. This package contains Microsoft Azure SDK for Subscription Management SDK. The subscription client. Package tag package-2021-10. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). ### Breaking Changes -### Bugs Fixed +#### `models.PutAliasResponse` was removed -### Other Changes +#### `models.TenantIdDescription` was removed + +#### `models.Subscription` was removed + +#### `models.PutAliasListResult` was removed + +#### `models.SubscriptionState` was removed + +#### `models.Tenants` was removed + +#### `models.SpendingLimit` was removed + +#### `models.SubscriptionListResult` was removed + +#### `models.LocationListResult` was removed + +#### `models.TenantListResult` was removed + +#### `models.PutAliasResponseProperties` was removed + +#### `models.Location` was removed + +#### `models.Operation` was modified + +* `Operation()` was removed +* `validate()` was removed +* `withDisplay(models.OperationDisplay)` was removed +* `models.OperationDisplay display()` -> `models.OperationDisplay display()` +* `withName(java.lang.String)` was removed +* `java.lang.String name()` -> `java.lang.String name()` +* `fromJson(com.azure.json.JsonReader)` was removed +* `toJson(com.azure.json.JsonWriter)` was removed + +#### `models.Subscriptions` was modified + +* `listLocations(java.lang.String,com.azure.core.util.Context)` was removed +* `list()` was removed +* `get(java.lang.String)` was removed +* `list(com.azure.core.util.Context)` was removed +* `getWithResponse(java.lang.String,com.azure.core.util.Context)` was removed +* `listLocations(java.lang.String)` was removed + +#### `models.Alias` was modified + +* `models.PutAliasResponse create(java.lang.String,models.PutAliasRequest)` -> `models.SubscriptionAliasResponse create(java.lang.String,models.PutAliasRequest)` +* `models.PutAliasResponse get(java.lang.String)` -> `models.SubscriptionAliasResponse get(java.lang.String)` +* `models.PutAliasListResult list()` -> `models.SubscriptionAliasListResult list()` +* `models.PutAliasResponse create(java.lang.String,models.PutAliasRequest,com.azure.core.util.Context)` -> `models.SubscriptionAliasResponse create(java.lang.String,models.PutAliasRequest,com.azure.core.util.Context)` + +#### `models.Operations` was modified + +* `listWithResponse(com.azure.core.util.Context)` was removed +* `models.OperationListResult list()` -> `com.azure.core.http.rest.PagedIterable list()` + +#### `models.SubscriptionPolicies` was modified + +* `SubscriptionPolicies()` was removed +* `locationPlacementId()` was removed +* `toJson(com.azure.json.JsonWriter)` was removed +* `validate()` was removed +* `quotaId()` was removed +* `spendingLimit()` was removed +* `fromJson(com.azure.json.JsonReader)` was removed + +#### `models.OperationListResult` was modified + +* `java.lang.String nextLink()` -> `java.lang.String nextLink()` +* `java.util.List value()` -> `java.util.List value()` +* `innerModel()` was removed + +#### `SubscriptionManager` was modified + +* `tenants()` was removed + +#### `models.SubscriptionOperations` was modified + +* `cancelWithResponse(java.lang.String,com.azure.core.util.Context)` was removed +* `rename(java.lang.String,models.SubscriptionName)` was removed +* `enable(java.lang.String)` was removed +* `enableWithResponse(java.lang.String,com.azure.core.util.Context)` was removed +* `cancel(java.lang.String)` was removed +* `renameWithResponse(java.lang.String,models.SubscriptionName,com.azure.core.util.Context)` was removed + +### Features Added + +* `models.TenantPolicy` was added + +* `models.GetTenantPolicyResponse` was added + +* `models.BillingAccountPoliciesResponse` was added + +* `models.ServiceTenantResponse` was added + +* `models.AcceptOwnershipRequest` was added + +* `models.SubscriptionAliasResponseProperties` was added + +* `models.PutAliasRequestAdditionalProperties` was added + +* `models.AcceptOwnershipRequestProperties` was added + +* `models.SubscriptionOperationsGetHeaders` was added + +* `models.SubscriptionAliasResponse` was added + +* `models.SubscriptionAliasListResult` was added + +* `models.GetTenantPolicyListResponse` was added + +* `models.BillingAccounts` was added + +* `models.SubscriptionOperationsGetResponse` was added + +* `models.BillingAccountPoliciesResponseProperties` was added + +* `models.PutTenantPolicyRequestProperties` was added + +* `models.SubscriptionCreationResult` was added + +* `models.Provisioning` was added + +* `models.AcceptOwnershipStatusResponse` was added + +* `models.AcceptOwnership` was added + +#### `models.Operation` was modified + +* `innerModel()` was added +* `isDataAction()` was added + +#### `models.PutAliasRequestProperties` was modified + +* `withAdditionalProperties(models.PutAliasRequestAdditionalProperties)` was added +* `additionalProperties()` was added + +#### `models.Subscriptions` was modified + +* `cancel(java.lang.String)` was added +* `enable(java.lang.String)` was added +* `acceptOwnershipStatus(java.lang.String)` was added +* `enableWithResponse(java.lang.String,com.azure.core.util.Context)` was added +* `renameWithResponse(java.lang.String,models.SubscriptionName,com.azure.core.util.Context)` was added +* `cancelWithResponse(java.lang.String,com.azure.core.util.Context)` was added +* `acceptOwnershipStatusWithResponse(java.lang.String,com.azure.core.util.Context)` was added +* `rename(java.lang.String,models.SubscriptionName)` was added +* `acceptOwnership(java.lang.String,models.AcceptOwnershipRequest,com.azure.core.util.Context)` was added +* `acceptOwnership(java.lang.String,models.AcceptOwnershipRequest)` was added + +#### `models.Operations` was modified + +* `list(com.azure.core.util.Context)` was added + +#### `models.OperationDisplay` was modified + +* `description()` was added +* `withDescription(java.lang.String)` was added + +#### `models.SubscriptionPolicies` was modified + +* `getPolicyForTenant()` was added +* `addUpdatePolicyForTenant(models.PutTenantPolicyRequestProperties)` was added +* `listPolicyForTenant()` was added +* `addUpdatePolicyForTenantWithResponse(models.PutTenantPolicyRequestProperties,com.azure.core.util.Context)` was added +* `listPolicyForTenant(com.azure.core.util.Context)` was added +* `getPolicyForTenantWithResponse(com.azure.core.util.Context)` was added + +#### `models.OperationListResult` was modified + +* `OperationListResult()` was added +* `toJson(com.azure.json.JsonWriter)` was added +* `validate()` was added +* `withNextLink(java.lang.String)` was added +* `fromJson(com.azure.json.JsonReader)` was added +* `withValue(java.util.List)` was added + +#### `SubscriptionManager` was modified + +* `billingAccounts()` was added +* `subscriptionPolicies()` was added + +#### `models.SubscriptionOperations` was modified + +* `getWithResponse(java.lang.String,com.azure.core.util.Context)` was added +* `get(java.lang.String)` was added ## 1.0.0 (2024-12-25) diff --git a/sdk/subscription/azure-resourcemanager-subscription/README.md b/sdk/subscription/azure-resourcemanager-subscription/README.md index 9737d6f43586..0dbf29a378d0 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/README.md +++ b/sdk/subscription/azure-resourcemanager-subscription/README.md @@ -2,7 +2,7 @@ Azure Resource Manager Subscription client library for Java. -This package contains Microsoft Azure SDK for Subscription Management SDK. The subscription client. Package tag package-2020-09. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). +This package contains Microsoft Azure SDK for Subscription Management SDK. The subscription client. Package tag package-2021-10. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). ## We'd love to hear your feedback @@ -52,7 +52,7 @@ Azure subscription ID can be configured via `AZURE_SUBSCRIPTION_ID` environment Assuming the use of the `DefaultAzureCredential` credential class, the client can be authenticated using the following code: ```java -AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE); +AzureProfile profile = new AzureProfile(AzureCloud.AZURE_PUBLIC_CLOUD); TokenCredential credential = new DefaultAzureCredentialBuilder() .authorityHost(profile.getEnvironment().getActiveDirectoryEndpoint()) .build(); @@ -60,7 +60,7 @@ SubscriptionManager manager = SubscriptionManager .authenticate(credential, profile); ``` -The sample code assumes global Azure. Please change `AzureEnvironment.AZURE` variable if otherwise. +The sample code assumes global Azure. Please change the `AzureCloud.AZURE_PUBLIC_CLOUD` variable if otherwise. See [Authentication][authenticate] for more options. @@ -100,5 +100,3 @@ This project has adopted the [Microsoft Open Source Code of Conduct][coc]. For m [cg]: https://github.com/Azure/azure-sdk-for-java/blob/main/CONTRIBUTING.md [coc]: https://opensource.microsoft.com/codeofconduct/ [coc_faq]: https://opensource.microsoft.com/codeofconduct/faq/ - - diff --git a/sdk/subscription/azure-resourcemanager-subscription/SAMPLE.md b/sdk/subscription/azure-resourcemanager-subscription/SAMPLE.md index b56981995cd6..df78d86dbb86 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/SAMPLE.md +++ b/sdk/subscription/azure-resourcemanager-subscription/SAMPLE.md @@ -8,31 +8,40 @@ - [Get](#alias_get) - [List](#alias_list) +## BillingAccount + +- [GetPolicy](#billingaccount_getpolicy) + ## Operations - [List](#operations_list) -## SubscriptionOperation +## Subscription -- [Cancel](#subscriptionoperation_cancel) -- [Enable](#subscriptionoperation_enable) -- [Rename](#subscriptionoperation_rename) +- [AcceptOwnership](#subscription_acceptownership) +- [AcceptOwnershipStatus](#subscription_acceptownershipstatus) +- [Cancel](#subscription_cancel) +- [Enable](#subscription_enable) +- [Rename](#subscription_rename) -## Subscriptions +## SubscriptionOperation -- [Get](#subscriptions_get) -- [List](#subscriptions_list) -- [ListLocations](#subscriptions_listlocations) +- [Get](#subscriptionoperation_get) -## Tenants +## SubscriptionPolicy -- [List](#tenants_list) +- [AddUpdatePolicyForTenant](#subscriptionpolicy_addupdatepolicyfortenant) +- [GetPolicyForTenant](#subscriptionpolicy_getpolicyfortenant) +- [ListPolicyForTenant](#subscriptionpolicy_listpolicyfortenant) ### Alias_Create ```java import com.azure.resourcemanager.subscription.models.PutAliasRequest; +import com.azure.resourcemanager.subscription.models.PutAliasRequestAdditionalProperties; import com.azure.resourcemanager.subscription.models.PutAliasRequestProperties; import com.azure.resourcemanager.subscription.models.Workload; +import java.util.HashMap; +import java.util.Map; /** * Samples for Alias Create. @@ -40,7 +49,7 @@ import com.azure.resourcemanager.subscription.models.Workload; public final class AliasCreateSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/createAlias.json + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/createAlias.json */ /** * Sample code: CreateAlias. @@ -50,12 +59,28 @@ public final class AliasCreateSamples { public static void createAlias(com.azure.resourcemanager.subscription.SubscriptionManager manager) { manager.alias() .create("aliasForNewSub", new PutAliasRequest().withProperties(new PutAliasRequestProperties() - .withDisplayName("Contoso MCA subscription") + .withDisplayName("Test Subscription") .withWorkload(Workload.PRODUCTION) .withBillingScope( - "/providers/Microsoft.Billing/billingAccounts/e879cf0f-2b4d-5431-109a-f72fc9868693:024cabf4-7321-4cf9-be59-df0c77ca51de_2019-05-31/billingProfiles/PE2Q-NOIT-BG7-TGB/invoiceSections/MTT4-OBS7-PJA-TGB")), + "/billingAccounts/af6231a7-7f8d-4fcc-a993-dd8466108d07:c663dac6-a9a5-405a-8938-cd903e12ab5b_2019_05_31/billingProfiles/QWDQ-QWHI-AUW-SJDO-DJH/invoiceSections/FEUF-EUHE-ISJ-SKDW-DJH") + .withAdditionalProperties(new PutAliasRequestAdditionalProperties() + .withSubscriptionTenantId("66f6e4d6-07dc-4aea-94ea-e12d3026a3c8") + .withSubscriptionOwnerId("f09b39eb-c496-482c-9ab9-afd799572f4c") + .withTags(mapOf("tag1", "Messi", "tag2", "Ronaldo", "tag3", "Lebron")))), com.azure.core.util.Context.NONE); } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; + } } ``` @@ -68,7 +93,7 @@ public final class AliasCreateSamples { public final class AliasDeleteSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/deleteAlias.json + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/deleteAlias.json */ /** * Sample code: DeleteAlias. @@ -90,7 +115,7 @@ public final class AliasDeleteSamples { public final class AliasGetSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/getAlias.json + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/getAlias.json */ /** * Sample code: GetAlias. @@ -112,19 +137,42 @@ public final class AliasGetSamples { public final class AliasListSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/listAlias.json + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/listAlias.json */ /** - * Sample code: GetAlias. + * Sample code: ListAlias. * * @param manager Entry point to SubscriptionManager. */ - public static void getAlias(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + public static void listAlias(com.azure.resourcemanager.subscription.SubscriptionManager manager) { manager.alias().listWithResponse(com.azure.core.util.Context.NONE); } } ``` +### BillingAccount_GetPolicy + +```java +/** + * Samples for BillingAccount GetPolicy. + */ +public final class BillingAccountGetPolicySamples { + /* + * x-ms-original-file: + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/ + * getBillingAccountPolicy.json + */ + /** + * Sample code: GetBillingAccountPolicy. + * + * @param manager Entry point to SubscriptionManager. + */ + public static void getBillingAccountPolicy(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + manager.billingAccounts().getPolicyWithResponse("testBillingAccountId", com.azure.core.util.Context.NONE); + } +} +``` + ### Operations_List ```java @@ -134,7 +182,7 @@ public final class AliasListSamples { public final class OperationsListSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/getOperations.json + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/getOperations.json */ /** * Sample code: getOperations. @@ -142,21 +190,91 @@ public final class OperationsListSamples { * @param manager Entry point to SubscriptionManager. */ public static void getOperations(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.operations().listWithResponse(com.azure.core.util.Context.NONE); + manager.operations().list(com.azure.core.util.Context.NONE); + } +} +``` + +### Subscription_AcceptOwnership + +```java +import com.azure.resourcemanager.subscription.models.AcceptOwnershipRequest; +import com.azure.resourcemanager.subscription.models.AcceptOwnershipRequestProperties; +import java.util.HashMap; +import java.util.Map; + +/** + * Samples for Subscription AcceptOwnership. + */ +public final class SubscriptionAcceptOwnershipSamples { + /* + * x-ms-original-file: + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/ + * acceptSubscriptionOwnership.json + */ + /** + * Sample code: AcceptOwnership. + * + * @param manager Entry point to SubscriptionManager. + */ + public static void acceptOwnership(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + manager.subscriptions() + .acceptOwnership("291bba3f-e0a5-47bc-a099-3bdcb2a50a05", + new AcceptOwnershipRequest() + .withProperties(new AcceptOwnershipRequestProperties().withDisplayName("Test Subscription") + .withTags(mapOf("tag1", "Messi", "tag2", "Ronaldo", "tag3", "Lebron"))), + com.azure.core.util.Context.NONE); + } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; + } +} +``` + +### Subscription_AcceptOwnershipStatus + +```java +/** + * Samples for Subscription AcceptOwnershipStatus. + */ +public final class SubscriptionAcceptOwnershipStatusSamples { + /* + * x-ms-original-file: + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/ + * acceptOwnershipStatus.json + */ + /** + * Sample code: AcceptOwnershipStatus. + * + * @param manager Entry point to SubscriptionManager. + */ + public static void acceptOwnershipStatus(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + manager.subscriptions() + .acceptOwnershipStatusWithResponse("291bba3f-e0a5-47bc-a099-3bdcb2a50a05", + com.azure.core.util.Context.NONE); } } ``` -### SubscriptionOperation_Cancel +### Subscription_Cancel ```java /** - * Samples for SubscriptionOperation Cancel. + * Samples for Subscription Cancel. */ -public final class SubscriptionOperationCancelSamples { +public final class SubscriptionCancelSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/cancelSubscription. + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/cancelSubscription. * json */ /** @@ -165,22 +283,22 @@ public final class SubscriptionOperationCancelSamples { * @param manager Entry point to SubscriptionManager. */ public static void cancelSubscription(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.subscriptionOperations() + manager.subscriptions() .cancelWithResponse("83aa47df-e3e9-49ff-877b-94304bf3d3ad", com.azure.core.util.Context.NONE); } } ``` -### SubscriptionOperation_Enable +### Subscription_Enable ```java /** - * Samples for SubscriptionOperation Enable. + * Samples for Subscription Enable. */ -public final class SubscriptionOperationEnableSamples { +public final class SubscriptionEnableSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/enableSubscription. + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/enableSubscription. * json */ /** @@ -189,24 +307,24 @@ public final class SubscriptionOperationEnableSamples { * @param manager Entry point to SubscriptionManager. */ public static void enableSubscription(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.subscriptionOperations() + manager.subscriptions() .enableWithResponse("7948bcee-488c-47ce-941c-38e20ede803d", com.azure.core.util.Context.NONE); } } ``` -### SubscriptionOperation_Rename +### Subscription_Rename ```java import com.azure.resourcemanager.subscription.models.SubscriptionName; /** - * Samples for SubscriptionOperation Rename. + * Samples for Subscription Rename. */ -public final class SubscriptionOperationRenameSamples { +public final class SubscriptionRenameSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/renameSubscription. + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/renameSubscription. * json */ /** @@ -215,100 +333,113 @@ public final class SubscriptionOperationRenameSamples { * @param manager Entry point to SubscriptionManager. */ public static void renameSubscription(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.subscriptionOperations() + manager.subscriptions() .renameWithResponse("83aa47df-e3e9-49ff-877b-94304bf3d3ad", new SubscriptionName().withSubscriptionName("Test Sub"), com.azure.core.util.Context.NONE); } } ``` -### Subscriptions_Get +### SubscriptionOperation_Get ```java /** - * Samples for Subscriptions Get. + * Samples for SubscriptionOperation Get. */ -public final class SubscriptionsGetSamples { +public final class SubscriptionOperationGetSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2016-06-01/examples/getSubscription. - * json + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/ + * getSubscriptionOperation.json */ /** - * Sample code: getSubscription. + * Sample code: getPendingSubscriptionOperations. * * @param manager Entry point to SubscriptionManager. */ - public static void getSubscription(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.subscriptions() - .getWithResponse("83aa47df-e3e9-49ff-877b-94304bf3d3ad", com.azure.core.util.Context.NONE); + public static void + getPendingSubscriptionOperations(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + manager.subscriptionOperations() + .getWithResponse("e4b8d068-f574-462a-a76f-6fa0afc613c9", com.azure.core.util.Context.NONE); } } ``` -### Subscriptions_List +### SubscriptionPolicy_AddUpdatePolicyForTenant ```java +import com.azure.resourcemanager.subscription.models.PutTenantPolicyRequestProperties; +import java.util.Arrays; +import java.util.UUID; + /** - * Samples for Subscriptions List. + * Samples for SubscriptionPolicy AddUpdatePolicyForTenant. */ -public final class SubscriptionsListSamples { +public final class SubscriptionPolicyAddUpdatePolicyForTenantSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2016-06-01/examples/listSubscriptions. + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/changeTenantPolicy. * json */ /** - * Sample code: listSubscriptions. + * Sample code: TenantPolicy. * * @param manager Entry point to SubscriptionManager. */ - public static void listSubscriptions(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.subscriptions().list(com.azure.core.util.Context.NONE); + public static void tenantPolicy(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + manager.subscriptionPolicies() + .addUpdatePolicyForTenantWithResponse( + new PutTenantPolicyRequestProperties().withBlockSubscriptionsLeavingTenant(true) + .withBlockSubscriptionsIntoTenant(true) + .withExemptedPrincipals(Arrays.asList(UUID.fromString("e879cf0f-2b4d-5431-109a-f72fc9868693"), + UUID.fromString("9792da87-c97b-410d-a97d-27021ba09ce6"))), + com.azure.core.util.Context.NONE); } } ``` -### Subscriptions_ListLocations +### SubscriptionPolicy_GetPolicyForTenant ```java /** - * Samples for Subscriptions ListLocations. + * Samples for SubscriptionPolicy GetPolicyForTenant. */ -public final class SubscriptionsListLocationsSamples { +public final class SubscriptionPolicyGetPolicyForTenantSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2016-06-01/examples/listLocations.json + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/getTenantPolicy. + * json */ /** - * Sample code: listLocations. + * Sample code: getTenantPolicy. * * @param manager Entry point to SubscriptionManager. */ - public static void listLocations(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.subscriptions().listLocations("83aa47df-e3e9-49ff-877b-94304bf3d3ad", com.azure.core.util.Context.NONE); + public static void getTenantPolicy(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + manager.subscriptionPolicies().getPolicyForTenantWithResponse(com.azure.core.util.Context.NONE); } } ``` -### Tenants_List +### SubscriptionPolicy_ListPolicyForTenant ```java /** - * Samples for Tenants List. + * Samples for SubscriptionPolicy ListPolicyForTenant. */ -public final class TenantsListSamples { +public final class SubscriptionPolicyListPolicyForTenantSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2016-06-01/examples/listTenants.json + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/getTenantPolicyList + * .json */ /** - * Sample code: listTenants. + * Sample code: getTenantPolicyList. * * @param manager Entry point to SubscriptionManager. */ - public static void listTenants(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.tenants().list(com.azure.core.util.Context.NONE); + public static void getTenantPolicyList(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + manager.subscriptionPolicies().listPolicyForTenant(com.azure.core.util.Context.NONE); } } ``` diff --git a/sdk/subscription/azure-resourcemanager-subscription/pom.xml b/sdk/subscription/azure-resourcemanager-subscription/pom.xml index 7b29e6dabdd4..1206ee1d1745 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/pom.xml +++ b/sdk/subscription/azure-resourcemanager-subscription/pom.xml @@ -18,7 +18,7 @@ jar Microsoft Azure SDK for Subscription Management - This package contains Microsoft Azure SDK for Subscription Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. The subscription client. Package tag package-2020-09. + This package contains Microsoft Azure SDK for Subscription Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. The subscription client. Package tag package-2021-10. https://github.com/Azure/azure-sdk-for-java @@ -45,7 +45,7 @@ UTF-8 0 0 - false + true diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/SubscriptionManager.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/SubscriptionManager.java index 13fc94c42623..b2d2c3cb127f 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/SubscriptionManager.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/SubscriptionManager.java @@ -22,23 +22,27 @@ import com.azure.core.http.policy.UserAgentPolicy; import com.azure.core.management.profile.AzureProfile; import com.azure.core.util.Configuration; +import com.azure.core.util.CoreUtils; import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.subscription.fluent.SubscriptionClient; import com.azure.resourcemanager.subscription.implementation.AliasImpl; +import com.azure.resourcemanager.subscription.implementation.BillingAccountsImpl; import com.azure.resourcemanager.subscription.implementation.OperationsImpl; import com.azure.resourcemanager.subscription.implementation.SubscriptionClientBuilder; import com.azure.resourcemanager.subscription.implementation.SubscriptionOperationsImpl; +import com.azure.resourcemanager.subscription.implementation.SubscriptionPoliciesImpl; import com.azure.resourcemanager.subscription.implementation.SubscriptionsImpl; -import com.azure.resourcemanager.subscription.implementation.TenantsImpl; import com.azure.resourcemanager.subscription.models.Alias; +import com.azure.resourcemanager.subscription.models.BillingAccounts; import com.azure.resourcemanager.subscription.models.Operations; import com.azure.resourcemanager.subscription.models.SubscriptionOperations; +import com.azure.resourcemanager.subscription.models.SubscriptionPolicies; import com.azure.resourcemanager.subscription.models.Subscriptions; -import com.azure.resourcemanager.subscription.models.Tenants; import java.time.Duration; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; @@ -49,14 +53,16 @@ public final class SubscriptionManager { private Subscriptions subscriptions; - private Tenants tenants; - private SubscriptionOperations subscriptionOperations; private Operations operations; private Alias alias; + private SubscriptionPolicies subscriptionPolicies; + + private BillingAccounts billingAccounts; + private final SubscriptionClient clientObject; private SubscriptionManager(HttpPipeline httpPipeline, AzureProfile profile, Duration defaultPollInterval) { @@ -108,6 +114,9 @@ public static Configurable configure() { */ public static final class Configurable { private static final ClientLogger LOGGER = new ClientLogger(Configurable.class); + private static final String SDK_VERSION = "version"; + private static final Map PROPERTIES + = CoreUtils.getProperties("azure-resourcemanager-subscription.properties"); private HttpClient httpClient; private HttpLogOptions httpLogOptions; @@ -215,12 +224,14 @@ public SubscriptionManager authenticate(TokenCredential credential, AzureProfile Objects.requireNonNull(credential, "'credential' cannot be null."); Objects.requireNonNull(profile, "'profile' cannot be null."); + String clientVersion = PROPERTIES.getOrDefault(SDK_VERSION, "UnknownVersion"); + StringBuilder userAgentBuilder = new StringBuilder(); userAgentBuilder.append("azsdk-java") .append("-") .append("com.azure.resourcemanager.subscription") .append("/") - .append("1.0.0"); + .append(clientVersion); if (!Configuration.getGlobalConfiguration().get("AZURE_TELEMETRY_DISABLED", false)) { userAgentBuilder.append(" (") .append(Configuration.getGlobalConfiguration().get("java.version")) @@ -278,18 +289,6 @@ public Subscriptions subscriptions() { return subscriptions; } - /** - * Gets the resource collection API of Tenants. - * - * @return Resource collection API of Tenants. - */ - public Tenants tenants() { - if (this.tenants == null) { - this.tenants = new TenantsImpl(clientObject.getTenants(), this); - } - return tenants; - } - /** * Gets the resource collection API of SubscriptionOperations. * @@ -327,6 +326,30 @@ public Alias alias() { return alias; } + /** + * Gets the resource collection API of SubscriptionPolicies. + * + * @return Resource collection API of SubscriptionPolicies. + */ + public SubscriptionPolicies subscriptionPolicies() { + if (this.subscriptionPolicies == null) { + this.subscriptionPolicies = new SubscriptionPoliciesImpl(clientObject.getSubscriptionPolicies(), this); + } + return subscriptionPolicies; + } + + /** + * Gets the resource collection API of BillingAccounts. + * + * @return Resource collection API of BillingAccounts. + */ + public BillingAccounts billingAccounts() { + if (this.billingAccounts == null) { + this.billingAccounts = new BillingAccountsImpl(clientObject.getBillingAccounts(), this); + } + return billingAccounts; + } + /** * Gets wrapped service client SubscriptionClient providing direct access to the underlying auto-generated API * implementation, based on Azure REST API. diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/AliasClient.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/AliasClient.java index f3020133bb53..fa2efdd10c4a 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/AliasClient.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/AliasClient.java @@ -10,8 +10,8 @@ import com.azure.core.management.polling.PollResult; import com.azure.core.util.Context; import com.azure.core.util.polling.SyncPoller; -import com.azure.resourcemanager.subscription.fluent.models.PutAliasListResultInner; -import com.azure.resourcemanager.subscription.fluent.models.PutAliasResponseInner; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasListResultInner; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasResponseInner; import com.azure.resourcemanager.subscription.models.PutAliasRequest; /** @@ -21,8 +21,8 @@ public interface AliasClient { /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. @@ -30,14 +30,14 @@ public interface AliasClient { * @return the {@link SyncPoller} for polling of subscription Information with the alias. */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - SyncPoller, PutAliasResponseInner> beginCreate(String aliasName, + SyncPoller, SubscriptionAliasResponseInner> beginCreate(String aliasName, PutAliasRequest body); /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -46,14 +46,14 @@ SyncPoller, PutAliasResponseInner> beginCreate * @return the {@link SyncPoller} for polling of subscription Information with the alias. */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - SyncPoller, PutAliasResponseInner> beginCreate(String aliasName, + SyncPoller, SubscriptionAliasResponseInner> beginCreate(String aliasName, PutAliasRequest body, Context context); /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. @@ -61,13 +61,13 @@ SyncPoller, PutAliasResponseInner> beginCreate * @return subscription Information with the alias. */ @ServiceMethod(returns = ReturnType.SINGLE) - PutAliasResponseInner create(String aliasName, PutAliasRequest body); + SubscriptionAliasResponseInner create(String aliasName, PutAliasRequest body); /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -76,13 +76,13 @@ SyncPoller, PutAliasResponseInner> beginCreate * @return subscription Information with the alias. */ @ServiceMethod(returns = ReturnType.SINGLE) - PutAliasResponseInner create(String aliasName, PutAliasRequest body, Context context); + SubscriptionAliasResponseInner create(String aliasName, PutAliasRequest body, Context context); /** * Get Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. @@ -90,26 +90,26 @@ SyncPoller, PutAliasResponseInner> beginCreate * @return alias Subscription along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - Response getWithResponse(String aliasName, Context context); + Response getWithResponse(String aliasName, Context context); /** * Get Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return alias Subscription. */ @ServiceMethod(returns = ReturnType.SINGLE) - PutAliasResponseInner get(String aliasName); + SubscriptionAliasResponseInner get(String aliasName); /** * Delete Alias. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. @@ -122,8 +122,8 @@ SyncPoller, PutAliasResponseInner> beginCreate /** * Delete Alias. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. @@ -132,24 +132,24 @@ SyncPoller, PutAliasResponseInner> beginCreate void delete(String aliasName); /** - * Get Alias Subscription. + * List Alias Subscription. * * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return alias Subscription along with {@link Response}. + * @return the list of aliases along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - Response listWithResponse(Context context); + Response listWithResponse(Context context); /** - * Get Alias Subscription. + * List Alias Subscription. * * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return alias Subscription. + * @return the list of aliases. */ @ServiceMethod(returns = ReturnType.SINGLE) - PutAliasListResultInner list(); + SubscriptionAliasListResultInner list(); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/TenantsClient.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/BillingAccountsClient.java similarity index 54% rename from sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/TenantsClient.java rename to sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/BillingAccountsClient.java index fe3c73cd0cfc..36cd72914c31 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/TenantsClient.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/BillingAccountsClient.java @@ -6,33 +6,36 @@ import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceMethod; -import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.Response; import com.azure.core.util.Context; -import com.azure.resourcemanager.subscription.fluent.models.TenantIdDescriptionInner; +import com.azure.resourcemanager.subscription.fluent.models.BillingAccountPoliciesResponseInner; /** - * An instance of this class provides access to all the operations defined in TenantsClient. + * An instance of this class provides access to all the operations defined in BillingAccountsClient. */ -public interface TenantsClient { +public interface BillingAccountsClient { /** - * Gets the tenants for your account. + * Get Billing Account Policy. * + * @param billingAccountId Billing Account Id. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the tenants for your account as paginated response with {@link PagedIterable}. + * @return billing Account Policy along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - PagedIterable list(); + @ServiceMethod(returns = ReturnType.SINGLE) + Response getPolicyWithResponse(String billingAccountId, Context context); /** - * Gets the tenants for your account. + * Get Billing Account Policy. * - * @param context The context to associate with this operation. + * @param billingAccountId Billing Account Id. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the tenants for your account as paginated response with {@link PagedIterable}. + * @return billing Account Policy. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - PagedIterable list(Context context); + @ServiceMethod(returns = ReturnType.SINGLE) + BillingAccountPoliciesResponseInner getPolicy(String billingAccountId); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/OperationsClient.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/OperationsClient.java index 4eb3edc9cf0d..d18d26715ebd 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/OperationsClient.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/OperationsClient.java @@ -6,9 +6,9 @@ import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceMethod; -import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.PagedIterable; import com.azure.core.util.Context; -import com.azure.resourcemanager.subscription.fluent.models.OperationListResultInner; +import com.azure.resourcemanager.subscription.fluent.models.OperationInner; /** * An instance of this class provides access to all the operations defined in OperationsClient. @@ -17,22 +17,22 @@ public interface OperationsClient { /** * Lists all of the available Microsoft.Subscription API operations. * - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list operations along with {@link Response}. + * @return result of the request to list operations as paginated response with {@link PagedIterable}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - Response listWithResponse(Context context); + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable list(); /** * Lists all of the available Microsoft.Subscription API operations. * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list operations. + * @return result of the request to list operations as paginated response with {@link PagedIterable}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - OperationListResultInner list(); + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable list(Context context); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionClient.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionClient.java index 746fe0655fb0..ebcb68105949 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionClient.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionClient.java @@ -18,6 +18,13 @@ public interface SubscriptionClient { */ String getEndpoint(); + /** + * Gets Api Version. + * + * @return the apiVersion value. + */ + String getApiVersion(); + /** * Gets The HTTP pipeline to send requests through. * @@ -39,13 +46,6 @@ public interface SubscriptionClient { */ SubscriptionsClient getSubscriptions(); - /** - * Gets the TenantsClient object to access its operations. - * - * @return the TenantsClient object. - */ - TenantsClient getTenants(); - /** * Gets the SubscriptionOperationsClient object to access its operations. * @@ -66,4 +66,18 @@ public interface SubscriptionClient { * @return the AliasClient object. */ AliasClient getAlias(); + + /** + * Gets the SubscriptionPoliciesClient object to access its operations. + * + * @return the SubscriptionPoliciesClient object. + */ + SubscriptionPoliciesClient getSubscriptionPolicies(); + + /** + * Gets the BillingAccountsClient object to access its operations. + * + * @return the BillingAccountsClient object. + */ + BillingAccountsClient getBillingAccounts(); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionOperationsClient.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionOperationsClient.java index ed34132e6193..55b5f17b50b0 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionOperationsClient.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionOperationsClient.java @@ -6,92 +6,38 @@ import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceMethod; -import com.azure.core.http.rest.Response; import com.azure.core.util.Context; -import com.azure.resourcemanager.subscription.fluent.models.CanceledSubscriptionIdInner; -import com.azure.resourcemanager.subscription.fluent.models.EnabledSubscriptionIdInner; -import com.azure.resourcemanager.subscription.fluent.models.RenamedSubscriptionIdInner; -import com.azure.resourcemanager.subscription.models.SubscriptionName; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionCreationResultInner; +import com.azure.resourcemanager.subscription.models.SubscriptionOperationsGetResponse; /** * An instance of this class provides access to all the operations defined in SubscriptionOperationsClient. */ public interface SubscriptionOperationsClient { /** - * The operation to cancel a subscription. + * Get the status of the pending Microsoft.Subscription API operations. * - * @param subscriptionId Subscription Id. + * @param operationId The operation ID, which can be found from the Location field in the generate recommendation + * response header. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the canceled subscription along with {@link Response}. + * @return the status of the pending Microsoft.Subscription API operations. */ @ServiceMethod(returns = ReturnType.SINGLE) - Response cancelWithResponse(String subscriptionId, Context context); + SubscriptionOperationsGetResponse getWithResponse(String operationId, Context context); /** - * The operation to cancel a subscription. + * Get the status of the pending Microsoft.Subscription API operations. * - * @param subscriptionId Subscription Id. + * @param operationId The operation ID, which can be found from the Location field in the generate recommendation + * response header. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the canceled subscription. + * @return the status of the pending Microsoft.Subscription API operations. */ @ServiceMethod(returns = ReturnType.SINGLE) - CanceledSubscriptionIdInner cancel(String subscriptionId); - - /** - * The operation to rename a subscription. - * - * @param subscriptionId Subscription Id. - * @param body Subscription Name. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being renamed along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - Response renameWithResponse(String subscriptionId, SubscriptionName body, - Context context); - - /** - * The operation to rename a subscription. - * - * @param subscriptionId Subscription Id. - * @param body Subscription Name. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being renamed. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - RenamedSubscriptionIdInner rename(String subscriptionId, SubscriptionName body); - - /** - * The operation to enable a subscription. - * - * @param subscriptionId Subscription Id. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being enabled along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - Response enableWithResponse(String subscriptionId, Context context); - - /** - * The operation to enable a subscription. - * - * @param subscriptionId Subscription Id. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being enabled. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - EnabledSubscriptionIdInner enable(String subscriptionId); + SubscriptionCreationResultInner get(String operationId); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionPoliciesClient.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionPoliciesClient.java new file mode 100644 index 000000000000..d5ffc591a01b --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionPoliciesClient.java @@ -0,0 +1,88 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.fluent; + +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.Response; +import com.azure.core.util.Context; +import com.azure.resourcemanager.subscription.fluent.models.GetTenantPolicyResponseInner; +import com.azure.resourcemanager.subscription.models.PutTenantPolicyRequestProperties; + +/** + * An instance of this class provides access to all the operations defined in SubscriptionPoliciesClient. + */ +public interface SubscriptionPoliciesClient { + /** + * Create or Update Subscription tenant policy for user's tenant. + * + * @param body The body parameter. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return tenant policy Information along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Response addUpdatePolicyForTenantWithResponse(PutTenantPolicyRequestProperties body, + Context context); + + /** + * Create or Update Subscription tenant policy for user's tenant. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return tenant policy Information. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + GetTenantPolicyResponseInner addUpdatePolicyForTenant(PutTenantPolicyRequestProperties body); + + /** + * Get the subscription tenant policy for the user's tenant. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Response getPolicyForTenantWithResponse(Context context); + + /** + * Get the subscription tenant policy for the user's tenant. + * + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + GetTenantPolicyResponseInner getPolicyForTenant(); + + /** + * Get the subscription tenant policy for the user's tenant. + * + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable listPolicyForTenant(); + + /** + * Get the subscription tenant policy for the user's tenant. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable listPolicyForTenant(Context context); +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionsClient.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionsClient.java index 1767d103d02f..bb383985a909 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionsClient.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/SubscriptionsClient.java @@ -6,91 +6,175 @@ import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceMethod; -import com.azure.core.http.rest.PagedIterable; import com.azure.core.http.rest.Response; +import com.azure.core.management.polling.PollResult; import com.azure.core.util.Context; -import com.azure.resourcemanager.subscription.fluent.models.LocationInner; -import com.azure.resourcemanager.subscription.fluent.models.SubscriptionInner; +import com.azure.core.util.polling.SyncPoller; +import com.azure.resourcemanager.subscription.fluent.models.AcceptOwnershipStatusResponseInner; +import com.azure.resourcemanager.subscription.fluent.models.CanceledSubscriptionIdInner; +import com.azure.resourcemanager.subscription.fluent.models.EnabledSubscriptionIdInner; +import com.azure.resourcemanager.subscription.fluent.models.RenamedSubscriptionIdInner; +import com.azure.resourcemanager.subscription.models.AcceptOwnershipRequest; +import com.azure.resourcemanager.subscription.models.SubscriptionName; /** * An instance of this class provides access to all the operations defined in SubscriptionsClient. */ public interface SubscriptionsClient { /** - * Gets all available geo-locations. + * The operation to cancel a subscription. * - * This operation provides all the locations that are available for resource providers; however, each resource - * provider may support a subset of this list. - * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return location list operation response as paginated response with {@link PagedIterable}. + * @return the ID of the canceled subscription along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - PagedIterable listLocations(String subscriptionId); + @ServiceMethod(returns = ReturnType.SINGLE) + Response cancelWithResponse(String subscriptionId, Context context); /** - * Gets all available geo-locations. + * The operation to cancel a subscription. * - * This operation provides all the locations that are available for resource providers; however, each resource - * provider may support a subset of this list. + * @param subscriptionId Subscription Id. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the ID of the canceled subscription. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + CanceledSubscriptionIdInner cancel(String subscriptionId); + + /** + * The operation to rename a subscription. * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. + * @param body Subscription Name. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return location list operation response as paginated response with {@link PagedIterable}. + * @return the ID of the subscriptions that is being renamed along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - PagedIterable listLocations(String subscriptionId, Context context); + @ServiceMethod(returns = ReturnType.SINGLE) + Response renameWithResponse(String subscriptionId, SubscriptionName body, + Context context); /** - * Gets details about a specified subscription. + * The operation to rename a subscription. * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. + * @param body Subscription Name. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the ID of the subscriptions that is being renamed. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + RenamedSubscriptionIdInner rename(String subscriptionId, SubscriptionName body); + + /** + * The operation to enable a subscription. + * + * @param subscriptionId Subscription Id. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return details about a specified subscription along with {@link Response}. + * @return the ID of the subscriptions that is being enabled along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Response enableWithResponse(String subscriptionId, Context context); + + /** + * The operation to enable a subscription. + * + * @param subscriptionId Subscription Id. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the ID of the subscriptions that is being enabled. */ @ServiceMethod(returns = ReturnType.SINGLE) - Response getWithResponse(String subscriptionId, Context context); + EnabledSubscriptionIdInner enable(String subscriptionId); /** - * Gets details about a specified subscription. + * Accept subscription ownership. * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, Void> beginAcceptOwnership(String subscriptionId, AcceptOwnershipRequest body); + + /** + * Accept subscription ownership. + * + * @param subscriptionId Subscription Id. + * @param body The body parameter. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, Void> beginAcceptOwnership(String subscriptionId, AcceptOwnershipRequest body, + Context context); + + /** + * Accept subscription ownership. + * + * @param subscriptionId Subscription Id. + * @param body The body parameter. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return details about a specified subscription. */ @ServiceMethod(returns = ReturnType.SINGLE) - SubscriptionInner get(String subscriptionId); + void acceptOwnership(String subscriptionId, AcceptOwnershipRequest body); /** - * Gets all subscriptions for a tenant. + * Accept subscription ownership. * + * @param subscriptionId Subscription Id. + * @param body The body parameter. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return all subscriptions for a tenant as paginated response with {@link PagedIterable}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - PagedIterable list(); + @ServiceMethod(returns = ReturnType.SINGLE) + void acceptOwnership(String subscriptionId, AcceptOwnershipRequest body, Context context); /** - * Gets all subscriptions for a tenant. + * Accept subscription ownership status. * + * @param subscriptionId Subscription Id. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return all subscriptions for a tenant as paginated response with {@link PagedIterable}. + * @return subscription Accept Ownership Response along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - PagedIterable list(Context context); + @ServiceMethod(returns = ReturnType.SINGLE) + Response acceptOwnershipStatusWithResponse(String subscriptionId, + Context context); + + /** + * Accept subscription ownership status. + * + * @param subscriptionId Subscription Id. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return subscription Accept Ownership Response. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + AcceptOwnershipStatusResponseInner acceptOwnershipStatus(String subscriptionId); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/AcceptOwnershipStatusResponseInner.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/AcceptOwnershipStatusResponseInner.java new file mode 100644 index 000000000000..7f80877e3513 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/AcceptOwnershipStatusResponseInner.java @@ -0,0 +1,220 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.fluent.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import com.azure.resourcemanager.subscription.models.AcceptOwnership; +import com.azure.resourcemanager.subscription.models.Provisioning; +import java.io.IOException; +import java.util.Map; + +/** + * Subscription Accept Ownership Response. + */ +@Fluent +public final class AcceptOwnershipStatusResponseInner implements JsonSerializable { + /* + * Newly created subscription Id. + */ + private String subscriptionId; + + /* + * The accept ownership state of the resource. + */ + private AcceptOwnership acceptOwnershipState; + + /* + * The provisioning state of the resource. + */ + private Provisioning provisioningState; + + /* + * UPN of the billing owner + */ + private String billingOwner; + + /* + * Tenant Id of the subscription + */ + private String subscriptionTenantId; + + /* + * The display name of the subscription. + */ + private String displayName; + + /* + * Tags for the subscription + */ + private Map tags; + + /** + * Creates an instance of AcceptOwnershipStatusResponseInner class. + */ + public AcceptOwnershipStatusResponseInner() { + } + + /** + * Get the subscriptionId property: Newly created subscription Id. + * + * @return the subscriptionId value. + */ + public String subscriptionId() { + return this.subscriptionId; + } + + /** + * Get the acceptOwnershipState property: The accept ownership state of the resource. + * + * @return the acceptOwnershipState value. + */ + public AcceptOwnership acceptOwnershipState() { + return this.acceptOwnershipState; + } + + /** + * Get the provisioningState property: The provisioning state of the resource. + * + * @return the provisioningState value. + */ + public Provisioning provisioningState() { + return this.provisioningState; + } + + /** + * Get the billingOwner property: UPN of the billing owner. + * + * @return the billingOwner value. + */ + public String billingOwner() { + return this.billingOwner; + } + + /** + * Get the subscriptionTenantId property: Tenant Id of the subscription. + * + * @return the subscriptionTenantId value. + */ + public String subscriptionTenantId() { + return this.subscriptionTenantId; + } + + /** + * Set the subscriptionTenantId property: Tenant Id of the subscription. + * + * @param subscriptionTenantId the subscriptionTenantId value to set. + * @return the AcceptOwnershipStatusResponseInner object itself. + */ + public AcceptOwnershipStatusResponseInner withSubscriptionTenantId(String subscriptionTenantId) { + this.subscriptionTenantId = subscriptionTenantId; + return this; + } + + /** + * Get the displayName property: The display name of the subscription. + * + * @return the displayName value. + */ + public String displayName() { + return this.displayName; + } + + /** + * Set the displayName property: The display name of the subscription. + * + * @param displayName the displayName value to set. + * @return the AcceptOwnershipStatusResponseInner object itself. + */ + public AcceptOwnershipStatusResponseInner withDisplayName(String displayName) { + this.displayName = displayName; + return this; + } + + /** + * Get the tags property: Tags for the subscription. + * + * @return the tags value. + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags property: Tags for the subscription. + * + * @param tags the tags value to set. + * @return the AcceptOwnershipStatusResponseInner object itself. + */ + public AcceptOwnershipStatusResponseInner withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("subscriptionTenantId", this.subscriptionTenantId); + jsonWriter.writeStringField("displayName", this.displayName); + jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeString(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of AcceptOwnershipStatusResponseInner from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of AcceptOwnershipStatusResponseInner if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the AcceptOwnershipStatusResponseInner. + */ + public static AcceptOwnershipStatusResponseInner fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + AcceptOwnershipStatusResponseInner deserializedAcceptOwnershipStatusResponseInner + = new AcceptOwnershipStatusResponseInner(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("subscriptionId".equals(fieldName)) { + deserializedAcceptOwnershipStatusResponseInner.subscriptionId = reader.getString(); + } else if ("acceptOwnershipState".equals(fieldName)) { + deserializedAcceptOwnershipStatusResponseInner.acceptOwnershipState + = AcceptOwnership.fromString(reader.getString()); + } else if ("provisioningState".equals(fieldName)) { + deserializedAcceptOwnershipStatusResponseInner.provisioningState + = Provisioning.fromString(reader.getString()); + } else if ("billingOwner".equals(fieldName)) { + deserializedAcceptOwnershipStatusResponseInner.billingOwner = reader.getString(); + } else if ("subscriptionTenantId".equals(fieldName)) { + deserializedAcceptOwnershipStatusResponseInner.subscriptionTenantId = reader.getString(); + } else if ("displayName".equals(fieldName)) { + deserializedAcceptOwnershipStatusResponseInner.displayName = reader.getString(); + } else if ("tags".equals(fieldName)) { + Map tags = reader.readMap(reader1 -> reader1.getString()); + deserializedAcceptOwnershipStatusResponseInner.tags = tags; + } else { + reader.skipChildren(); + } + } + + return deserializedAcceptOwnershipStatusResponseInner; + }); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/BillingAccountPoliciesResponseInner.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/BillingAccountPoliciesResponseInner.java new file mode 100644 index 000000000000..a6b49d63e428 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/BillingAccountPoliciesResponseInner.java @@ -0,0 +1,168 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.fluent.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.management.ProxyResource; +import com.azure.core.management.SystemData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import com.azure.resourcemanager.subscription.models.BillingAccountPoliciesResponseProperties; +import java.io.IOException; + +/** + * Billing account policies information. + */ +@Fluent +public final class BillingAccountPoliciesResponseInner extends ProxyResource { + /* + * Billing account policies response properties. + */ + private BillingAccountPoliciesResponseProperties properties; + + /* + * Metadata pertaining to creation and last modification of the resource. + */ + private SystemData systemData; + + /* + * The type of the resource. + */ + private String type; + + /* + * The name of the resource. + */ + private String name; + + /* + * Fully qualified resource Id for the resource. + */ + private String id; + + /** + * Creates an instance of BillingAccountPoliciesResponseInner class. + */ + public BillingAccountPoliciesResponseInner() { + } + + /** + * Get the properties property: Billing account policies response properties. + * + * @return the properties value. + */ + public BillingAccountPoliciesResponseProperties properties() { + return this.properties; + } + + /** + * Set the properties property: Billing account policies response properties. + * + * @param properties the properties value to set. + * @return the BillingAccountPoliciesResponseInner object itself. + */ + public BillingAccountPoliciesResponseInner withProperties(BillingAccountPoliciesResponseProperties properties) { + this.properties = properties; + return this; + } + + /** + * Get the systemData property: Metadata pertaining to creation and last modification of the resource. + * + * @return the systemData value. + */ + public SystemData systemData() { + return this.systemData; + } + + /** + * Get the type property: The type of the resource. + * + * @return the type value. + */ + @Override + public String type() { + return this.type; + } + + /** + * Get the name property: The name of the resource. + * + * @return the name value. + */ + @Override + public String name() { + return this.name; + } + + /** + * Get the id property: Fully qualified resource Id for the resource. + * + * @return the id value. + */ + @Override + public String id() { + return this.id; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (properties() != null) { + properties().validate(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("properties", this.properties); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of BillingAccountPoliciesResponseInner from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of BillingAccountPoliciesResponseInner if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the BillingAccountPoliciesResponseInner. + */ + public static BillingAccountPoliciesResponseInner fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + BillingAccountPoliciesResponseInner deserializedBillingAccountPoliciesResponseInner + = new BillingAccountPoliciesResponseInner(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("id".equals(fieldName)) { + deserializedBillingAccountPoliciesResponseInner.id = reader.getString(); + } else if ("name".equals(fieldName)) { + deserializedBillingAccountPoliciesResponseInner.name = reader.getString(); + } else if ("type".equals(fieldName)) { + deserializedBillingAccountPoliciesResponseInner.type = reader.getString(); + } else if ("properties".equals(fieldName)) { + deserializedBillingAccountPoliciesResponseInner.properties + = BillingAccountPoliciesResponseProperties.fromJson(reader); + } else if ("systemData".equals(fieldName)) { + deserializedBillingAccountPoliciesResponseInner.systemData = SystemData.fromJson(reader); + } else { + reader.skipChildren(); + } + } + + return deserializedBillingAccountPoliciesResponseInner; + }); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/PutAliasResponseInner.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/GetTenantPolicyResponseInner.java similarity index 57% rename from sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/PutAliasResponseInner.java rename to sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/GetTenantPolicyResponseInner.java index a63a78bed1cb..e9d3e0d05646 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/PutAliasResponseInner.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/GetTenantPolicyResponseInner.java @@ -6,21 +6,27 @@ import com.azure.core.annotation.Fluent; import com.azure.core.management.ProxyResource; +import com.azure.core.management.SystemData; import com.azure.json.JsonReader; import com.azure.json.JsonToken; import com.azure.json.JsonWriter; -import com.azure.resourcemanager.subscription.models.PutAliasResponseProperties; +import com.azure.resourcemanager.subscription.models.TenantPolicy; import java.io.IOException; /** - * Subscription Information with the alias. + * Tenant policy Information. */ @Fluent -public final class PutAliasResponseInner extends ProxyResource { +public final class GetTenantPolicyResponseInner extends ProxyResource { /* - * Put Alias response properties. + * Tenant policy properties. */ - private PutAliasResponseProperties properties; + private TenantPolicy properties; + + /* + * Metadata pertaining to creation and last modification of the resource. + */ + private SystemData systemData; /* * The type of the resource. @@ -38,31 +44,40 @@ public final class PutAliasResponseInner extends ProxyResource { private String id; /** - * Creates an instance of PutAliasResponseInner class. + * Creates an instance of GetTenantPolicyResponseInner class. */ - public PutAliasResponseInner() { + public GetTenantPolicyResponseInner() { } /** - * Get the properties property: Put Alias response properties. + * Get the properties property: Tenant policy properties. * * @return the properties value. */ - public PutAliasResponseProperties properties() { + public TenantPolicy properties() { return this.properties; } /** - * Set the properties property: Put Alias response properties. + * Set the properties property: Tenant policy properties. * * @param properties the properties value to set. - * @return the PutAliasResponseInner object itself. + * @return the GetTenantPolicyResponseInner object itself. */ - public PutAliasResponseInner withProperties(PutAliasResponseProperties properties) { + public GetTenantPolicyResponseInner withProperties(TenantPolicy properties) { this.properties = properties; return this; } + /** + * Get the systemData property: Metadata pertaining to creation and last modification of the resource. + * + * @return the systemData value. + */ + public SystemData systemData() { + return this.systemData; + } + /** * Get the type property: The type of the resource. * @@ -115,35 +130,37 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { } /** - * Reads an instance of PutAliasResponseInner from the JsonReader. + * Reads an instance of GetTenantPolicyResponseInner from the JsonReader. * * @param jsonReader The JsonReader being read. - * @return An instance of PutAliasResponseInner if the JsonReader was pointing to an instance of it, or null if it - * was pointing to JSON null. + * @return An instance of GetTenantPolicyResponseInner if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. * @throws IllegalStateException If the deserialized JSON object was missing any required properties. - * @throws IOException If an error occurs while reading the PutAliasResponseInner. + * @throws IOException If an error occurs while reading the GetTenantPolicyResponseInner. */ - public static PutAliasResponseInner fromJson(JsonReader jsonReader) throws IOException { + public static GetTenantPolicyResponseInner fromJson(JsonReader jsonReader) throws IOException { return jsonReader.readObject(reader -> { - PutAliasResponseInner deserializedPutAliasResponseInner = new PutAliasResponseInner(); + GetTenantPolicyResponseInner deserializedGetTenantPolicyResponseInner = new GetTenantPolicyResponseInner(); while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); if ("id".equals(fieldName)) { - deserializedPutAliasResponseInner.id = reader.getString(); + deserializedGetTenantPolicyResponseInner.id = reader.getString(); } else if ("name".equals(fieldName)) { - deserializedPutAliasResponseInner.name = reader.getString(); + deserializedGetTenantPolicyResponseInner.name = reader.getString(); } else if ("type".equals(fieldName)) { - deserializedPutAliasResponseInner.type = reader.getString(); + deserializedGetTenantPolicyResponseInner.type = reader.getString(); } else if ("properties".equals(fieldName)) { - deserializedPutAliasResponseInner.properties = PutAliasResponseProperties.fromJson(reader); + deserializedGetTenantPolicyResponseInner.properties = TenantPolicy.fromJson(reader); + } else if ("systemData".equals(fieldName)) { + deserializedGetTenantPolicyResponseInner.systemData = SystemData.fromJson(reader); } else { reader.skipChildren(); } } - return deserializedPutAliasResponseInner; + return deserializedGetTenantPolicyResponseInner; }); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/LocationInner.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/LocationInner.java deleted file mode 100644 index f5760a3873e7..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/LocationInner.java +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.fluent.models; - -import com.azure.core.annotation.Immutable; -import com.azure.json.JsonReader; -import com.azure.json.JsonSerializable; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import java.io.IOException; - -/** - * Location information. - */ -@Immutable -public final class LocationInner implements JsonSerializable { - /* - * The fully qualified ID of the location. For example, - * /subscriptions/00000000-0000-0000-0000-000000000000/locations/westus. - */ - private String id; - - /* - * The subscription ID. - */ - private String subscriptionId; - - /* - * The location name. - */ - private String name; - - /* - * The display name of the location. - */ - private String displayName; - - /* - * The latitude of the location. - */ - private String latitude; - - /* - * The longitude of the location. - */ - private String longitude; - - /** - * Creates an instance of LocationInner class. - */ - public LocationInner() { - } - - /** - * Get the id property: The fully qualified ID of the location. For example, - * /subscriptions/00000000-0000-0000-0000-000000000000/locations/westus. - * - * @return the id value. - */ - public String id() { - return this.id; - } - - /** - * Get the subscriptionId property: The subscription ID. - * - * @return the subscriptionId value. - */ - public String subscriptionId() { - return this.subscriptionId; - } - - /** - * Get the name property: The location name. - * - * @return the name value. - */ - public String name() { - return this.name; - } - - /** - * Get the displayName property: The display name of the location. - * - * @return the displayName value. - */ - public String displayName() { - return this.displayName; - } - - /** - * Get the latitude property: The latitude of the location. - * - * @return the latitude value. - */ - public String latitude() { - return this.latitude; - } - - /** - * Get the longitude property: The longitude of the location. - * - * @return the longitude value. - */ - public String longitude() { - return this.longitude; - } - - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - } - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of LocationInner from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of LocationInner if the JsonReader was pointing to an instance of it, or null if it was - * pointing to JSON null. - * @throws IOException If an error occurs while reading the LocationInner. - */ - public static LocationInner fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - LocationInner deserializedLocationInner = new LocationInner(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("id".equals(fieldName)) { - deserializedLocationInner.id = reader.getString(); - } else if ("subscriptionId".equals(fieldName)) { - deserializedLocationInner.subscriptionId = reader.getString(); - } else if ("name".equals(fieldName)) { - deserializedLocationInner.name = reader.getString(); - } else if ("displayName".equals(fieldName)) { - deserializedLocationInner.displayName = reader.getString(); - } else if ("latitude".equals(fieldName)) { - deserializedLocationInner.latitude = reader.getString(); - } else if ("longitude".equals(fieldName)) { - deserializedLocationInner.longitude = reader.getString(); - } else { - reader.skipChildren(); - } - } - - return deserializedLocationInner; - }); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/OperationInner.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/OperationInner.java new file mode 100644 index 000000000000..3ba00de90f0e --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/OperationInner.java @@ -0,0 +1,153 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.fluent.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import com.azure.resourcemanager.subscription.models.OperationDisplay; +import java.io.IOException; + +/** + * REST API operation. + */ +@Fluent +public final class OperationInner implements JsonSerializable { + /* + * Operation name: {provider}/{resource}/{operation} + */ + private String name; + + /* + * Indicates whether the operation is a data action + */ + private Boolean isDataAction; + + /* + * The object that represents the operation. + */ + private OperationDisplay display; + + /** + * Creates an instance of OperationInner class. + */ + public OperationInner() { + } + + /** + * Get the name property: Operation name: {provider}/{resource}/{operation}. + * + * @return the name value. + */ + public String name() { + return this.name; + } + + /** + * Set the name property: Operation name: {provider}/{resource}/{operation}. + * + * @param name the name value to set. + * @return the OperationInner object itself. + */ + public OperationInner withName(String name) { + this.name = name; + return this; + } + + /** + * Get the isDataAction property: Indicates whether the operation is a data action. + * + * @return the isDataAction value. + */ + public Boolean isDataAction() { + return this.isDataAction; + } + + /** + * Set the isDataAction property: Indicates whether the operation is a data action. + * + * @param isDataAction the isDataAction value to set. + * @return the OperationInner object itself. + */ + public OperationInner withIsDataAction(Boolean isDataAction) { + this.isDataAction = isDataAction; + return this; + } + + /** + * Get the display property: The object that represents the operation. + * + * @return the display value. + */ + public OperationDisplay display() { + return this.display; + } + + /** + * Set the display property: The object that represents the operation. + * + * @param display the display value to set. + * @return the OperationInner object itself. + */ + public OperationInner withDisplay(OperationDisplay display) { + this.display = display; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (display() != null) { + display().validate(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeBooleanField("isDataAction", this.isDataAction); + jsonWriter.writeJsonField("display", this.display); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of OperationInner from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of OperationInner if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the OperationInner. + */ + public static OperationInner fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + OperationInner deserializedOperationInner = new OperationInner(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("name".equals(fieldName)) { + deserializedOperationInner.name = reader.getString(); + } else if ("isDataAction".equals(fieldName)) { + deserializedOperationInner.isDataAction = reader.getNullable(JsonReader::getBoolean); + } else if ("display".equals(fieldName)) { + deserializedOperationInner.display = OperationDisplay.fromJson(reader); + } else { + reader.skipChildren(); + } + } + + return deserializedOperationInner; + }); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/OperationListResultInner.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/OperationListResultInner.java deleted file mode 100644 index 40cf17134c89..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/OperationListResultInner.java +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.fluent.models; - -import com.azure.core.annotation.Fluent; -import com.azure.json.JsonReader; -import com.azure.json.JsonSerializable; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import com.azure.resourcemanager.subscription.models.Operation; -import java.io.IOException; -import java.util.List; - -/** - * Result of the request to list operations. It contains a list of operations and a URL link to get the next set of - * results. - */ -@Fluent -public final class OperationListResultInner implements JsonSerializable { - /* - * List of operations. - */ - private List value; - - /* - * URL to get the next set of operation list results if there are any. - */ - private String nextLink; - - /** - * Creates an instance of OperationListResultInner class. - */ - public OperationListResultInner() { - } - - /** - * Get the value property: List of operations. - * - * @return the value value. - */ - public List value() { - return this.value; - } - - /** - * Set the value property: List of operations. - * - * @param value the value value to set. - * @return the OperationListResultInner object itself. - */ - public OperationListResultInner withValue(List value) { - this.value = value; - return this; - } - - /** - * Get the nextLink property: URL to get the next set of operation list results if there are any. - * - * @return the nextLink value. - */ - public String nextLink() { - return this.nextLink; - } - - /** - * Set the nextLink property: URL to get the next set of operation list results if there are any. - * - * @param nextLink the nextLink value to set. - * @return the OperationListResultInner object itself. - */ - public OperationListResultInner withNextLink(String nextLink) { - this.nextLink = nextLink; - return this; - } - - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - if (value() != null) { - value().forEach(e -> e.validate()); - } - } - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeJson(element)); - jsonWriter.writeStringField("nextLink", this.nextLink); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of OperationListResultInner from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of OperationListResultInner if the JsonReader was pointing to an instance of it, or null if - * it was pointing to JSON null. - * @throws IOException If an error occurs while reading the OperationListResultInner. - */ - public static OperationListResultInner fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - OperationListResultInner deserializedOperationListResultInner = new OperationListResultInner(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("value".equals(fieldName)) { - List value = reader.readArray(reader1 -> Operation.fromJson(reader1)); - deserializedOperationListResultInner.value = value; - } else if ("nextLink".equals(fieldName)) { - deserializedOperationListResultInner.nextLink = reader.getString(); - } else { - reader.skipChildren(); - } - } - - return deserializedOperationListResultInner; - }); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/PutAliasListResultInner.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionAliasListResultInner.java similarity index 61% rename from sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/PutAliasListResultInner.java rename to sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionAliasListResultInner.java index 7b30a6ab3152..74e68bf602b8 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/PutAliasListResultInner.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionAliasListResultInner.java @@ -16,11 +16,11 @@ * The list of aliases. */ @Immutable -public final class PutAliasListResultInner implements JsonSerializable { +public final class SubscriptionAliasListResultInner implements JsonSerializable { /* * The list of alias. */ - private List value; + private List value; /* * The link (url) to the next page of results. @@ -28,9 +28,9 @@ public final class PutAliasListResultInner implements JsonSerializable value() { + public List value() { return this.value; } @@ -72,32 +72,33 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { } /** - * Reads an instance of PutAliasListResultInner from the JsonReader. + * Reads an instance of SubscriptionAliasListResultInner from the JsonReader. * * @param jsonReader The JsonReader being read. - * @return An instance of PutAliasListResultInner if the JsonReader was pointing to an instance of it, or null if it - * was pointing to JSON null. - * @throws IOException If an error occurs while reading the PutAliasListResultInner. + * @return An instance of SubscriptionAliasListResultInner if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the SubscriptionAliasListResultInner. */ - public static PutAliasListResultInner fromJson(JsonReader jsonReader) throws IOException { + public static SubscriptionAliasListResultInner fromJson(JsonReader jsonReader) throws IOException { return jsonReader.readObject(reader -> { - PutAliasListResultInner deserializedPutAliasListResultInner = new PutAliasListResultInner(); + SubscriptionAliasListResultInner deserializedSubscriptionAliasListResultInner + = new SubscriptionAliasListResultInner(); while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); if ("value".equals(fieldName)) { - List value - = reader.readArray(reader1 -> PutAliasResponseInner.fromJson(reader1)); - deserializedPutAliasListResultInner.value = value; + List value + = reader.readArray(reader1 -> SubscriptionAliasResponseInner.fromJson(reader1)); + deserializedSubscriptionAliasListResultInner.value = value; } else if ("nextLink".equals(fieldName)) { - deserializedPutAliasListResultInner.nextLink = reader.getString(); + deserializedSubscriptionAliasListResultInner.nextLink = reader.getString(); } else { reader.skipChildren(); } } - return deserializedPutAliasListResultInner; + return deserializedSubscriptionAliasListResultInner; }); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionAliasResponseInner.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionAliasResponseInner.java new file mode 100644 index 000000000000..f8d6b9f28517 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionAliasResponseInner.java @@ -0,0 +1,168 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.fluent.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.management.ProxyResource; +import com.azure.core.management.SystemData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import com.azure.resourcemanager.subscription.models.SubscriptionAliasResponseProperties; +import java.io.IOException; + +/** + * Subscription Information with the alias. + */ +@Fluent +public final class SubscriptionAliasResponseInner extends ProxyResource { + /* + * Subscription Alias response properties. + */ + private SubscriptionAliasResponseProperties properties; + + /* + * Metadata pertaining to creation and last modification of the resource. + */ + private SystemData systemData; + + /* + * The type of the resource. + */ + private String type; + + /* + * The name of the resource. + */ + private String name; + + /* + * Fully qualified resource Id for the resource. + */ + private String id; + + /** + * Creates an instance of SubscriptionAliasResponseInner class. + */ + public SubscriptionAliasResponseInner() { + } + + /** + * Get the properties property: Subscription Alias response properties. + * + * @return the properties value. + */ + public SubscriptionAliasResponseProperties properties() { + return this.properties; + } + + /** + * Set the properties property: Subscription Alias response properties. + * + * @param properties the properties value to set. + * @return the SubscriptionAliasResponseInner object itself. + */ + public SubscriptionAliasResponseInner withProperties(SubscriptionAliasResponseProperties properties) { + this.properties = properties; + return this; + } + + /** + * Get the systemData property: Metadata pertaining to creation and last modification of the resource. + * + * @return the systemData value. + */ + public SystemData systemData() { + return this.systemData; + } + + /** + * Get the type property: The type of the resource. + * + * @return the type value. + */ + @Override + public String type() { + return this.type; + } + + /** + * Get the name property: The name of the resource. + * + * @return the name value. + */ + @Override + public String name() { + return this.name; + } + + /** + * Get the id property: Fully qualified resource Id for the resource. + * + * @return the id value. + */ + @Override + public String id() { + return this.id; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (properties() != null) { + properties().validate(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("properties", this.properties); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of SubscriptionAliasResponseInner from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of SubscriptionAliasResponseInner if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the SubscriptionAliasResponseInner. + */ + public static SubscriptionAliasResponseInner fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + SubscriptionAliasResponseInner deserializedSubscriptionAliasResponseInner + = new SubscriptionAliasResponseInner(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("id".equals(fieldName)) { + deserializedSubscriptionAliasResponseInner.id = reader.getString(); + } else if ("name".equals(fieldName)) { + deserializedSubscriptionAliasResponseInner.name = reader.getString(); + } else if ("type".equals(fieldName)) { + deserializedSubscriptionAliasResponseInner.type = reader.getString(); + } else if ("properties".equals(fieldName)) { + deserializedSubscriptionAliasResponseInner.properties + = SubscriptionAliasResponseProperties.fromJson(reader); + } else if ("systemData".equals(fieldName)) { + deserializedSubscriptionAliasResponseInner.systemData = SystemData.fromJson(reader); + } else { + reader.skipChildren(); + } + } + + return deserializedSubscriptionAliasResponseInner; + }); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionCreationResultInner.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionCreationResultInner.java new file mode 100644 index 000000000000..3b30a00d9c16 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionCreationResultInner.java @@ -0,0 +1,96 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.fluent.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The created subscription object. + */ +@Fluent +public final class SubscriptionCreationResultInner implements JsonSerializable { + /* + * The link to the new subscription. Use this link to check the status of subscription creation operation. + */ + private String subscriptionLink; + + /** + * Creates an instance of SubscriptionCreationResultInner class. + */ + public SubscriptionCreationResultInner() { + } + + /** + * Get the subscriptionLink property: The link to the new subscription. Use this link to check the status of + * subscription creation operation. + * + * @return the subscriptionLink value. + */ + public String subscriptionLink() { + return this.subscriptionLink; + } + + /** + * Set the subscriptionLink property: The link to the new subscription. Use this link to check the status of + * subscription creation operation. + * + * @param subscriptionLink the subscriptionLink value to set. + * @return the SubscriptionCreationResultInner object itself. + */ + public SubscriptionCreationResultInner withSubscriptionLink(String subscriptionLink) { + this.subscriptionLink = subscriptionLink; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("subscriptionLink", this.subscriptionLink); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of SubscriptionCreationResultInner from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of SubscriptionCreationResultInner if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the SubscriptionCreationResultInner. + */ + public static SubscriptionCreationResultInner fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + SubscriptionCreationResultInner deserializedSubscriptionCreationResultInner + = new SubscriptionCreationResultInner(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("subscriptionLink".equals(fieldName)) { + deserializedSubscriptionCreationResultInner.subscriptionLink = reader.getString(); + } else { + reader.skipChildren(); + } + } + + return deserializedSubscriptionCreationResultInner; + }); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionInner.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionInner.java deleted file mode 100644 index f27f11ea2ce1..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/SubscriptionInner.java +++ /dev/null @@ -1,241 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.fluent.models; - -import com.azure.core.annotation.Fluent; -import com.azure.json.JsonReader; -import com.azure.json.JsonSerializable; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import com.azure.resourcemanager.subscription.models.SubscriptionPolicies; -import com.azure.resourcemanager.subscription.models.SubscriptionState; -import java.io.IOException; -import java.util.Map; - -/** - * Subscription information. - */ -@Fluent -public final class SubscriptionInner implements JsonSerializable { - /* - * The fully qualified ID for the subscription. For example, /subscriptions/00000000-0000-0000-0000-000000000000. - */ - private String id; - - /* - * The subscription ID. - */ - private String subscriptionId; - - /* - * The subscription display name. - */ - private String displayName; - - /* - * The subscription state. Possible values are Enabled, Warned, PastDue, Disabled, and Deleted. - */ - private SubscriptionState state; - - /* - * The tenant ID. For example, 00000000-0000-0000-0000-000000000000. - */ - private String tenantId; - - /* - * Tags for the subscription - */ - private Map tags; - - /* - * The subscription policies. - */ - private SubscriptionPolicies subscriptionPolicies; - - /* - * The authorization source of the request. Valid values are one or more combinations of Legacy, RoleBased, - * Bypassed, Direct and Management. For example, 'Legacy, RoleBased'. - */ - private String authorizationSource; - - /** - * Creates an instance of SubscriptionInner class. - */ - public SubscriptionInner() { - } - - /** - * Get the id property: The fully qualified ID for the subscription. For example, - * /subscriptions/00000000-0000-0000-0000-000000000000. - * - * @return the id value. - */ - public String id() { - return this.id; - } - - /** - * Get the subscriptionId property: The subscription ID. - * - * @return the subscriptionId value. - */ - public String subscriptionId() { - return this.subscriptionId; - } - - /** - * Get the displayName property: The subscription display name. - * - * @return the displayName value. - */ - public String displayName() { - return this.displayName; - } - - /** - * Get the state property: The subscription state. Possible values are Enabled, Warned, PastDue, Disabled, and - * Deleted. - * - * @return the state value. - */ - public SubscriptionState state() { - return this.state; - } - - /** - * Get the tenantId property: The tenant ID. For example, 00000000-0000-0000-0000-000000000000. - * - * @return the tenantId value. - */ - public String tenantId() { - return this.tenantId; - } - - /** - * Get the tags property: Tags for the subscription. - * - * @return the tags value. - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags property: Tags for the subscription. - * - * @param tags the tags value to set. - * @return the SubscriptionInner object itself. - */ - public SubscriptionInner withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * Get the subscriptionPolicies property: The subscription policies. - * - * @return the subscriptionPolicies value. - */ - public SubscriptionPolicies subscriptionPolicies() { - return this.subscriptionPolicies; - } - - /** - * Set the subscriptionPolicies property: The subscription policies. - * - * @param subscriptionPolicies the subscriptionPolicies value to set. - * @return the SubscriptionInner object itself. - */ - public SubscriptionInner withSubscriptionPolicies(SubscriptionPolicies subscriptionPolicies) { - this.subscriptionPolicies = subscriptionPolicies; - return this; - } - - /** - * Get the authorizationSource property: The authorization source of the request. Valid values are one or more - * combinations of Legacy, RoleBased, Bypassed, Direct and Management. For example, 'Legacy, RoleBased'. - * - * @return the authorizationSource value. - */ - public String authorizationSource() { - return this.authorizationSource; - } - - /** - * Set the authorizationSource property: The authorization source of the request. Valid values are one or more - * combinations of Legacy, RoleBased, Bypassed, Direct and Management. For example, 'Legacy, RoleBased'. - * - * @param authorizationSource the authorizationSource value to set. - * @return the SubscriptionInner object itself. - */ - public SubscriptionInner withAuthorizationSource(String authorizationSource) { - this.authorizationSource = authorizationSource; - return this; - } - - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - if (subscriptionPolicies() != null) { - subscriptionPolicies().validate(); - } - } - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeString(element)); - jsonWriter.writeJsonField("subscriptionPolicies", this.subscriptionPolicies); - jsonWriter.writeStringField("authorizationSource", this.authorizationSource); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of SubscriptionInner from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of SubscriptionInner if the JsonReader was pointing to an instance of it, or null if it was - * pointing to JSON null. - * @throws IOException If an error occurs while reading the SubscriptionInner. - */ - public static SubscriptionInner fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - SubscriptionInner deserializedSubscriptionInner = new SubscriptionInner(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("id".equals(fieldName)) { - deserializedSubscriptionInner.id = reader.getString(); - } else if ("subscriptionId".equals(fieldName)) { - deserializedSubscriptionInner.subscriptionId = reader.getString(); - } else if ("displayName".equals(fieldName)) { - deserializedSubscriptionInner.displayName = reader.getString(); - } else if ("state".equals(fieldName)) { - deserializedSubscriptionInner.state = SubscriptionState.fromString(reader.getString()); - } else if ("tenantId".equals(fieldName)) { - deserializedSubscriptionInner.tenantId = reader.getString(); - } else if ("tags".equals(fieldName)) { - Map tags = reader.readMap(reader1 -> reader1.getString()); - deserializedSubscriptionInner.tags = tags; - } else if ("subscriptionPolicies".equals(fieldName)) { - deserializedSubscriptionInner.subscriptionPolicies = SubscriptionPolicies.fromJson(reader); - } else if ("authorizationSource".equals(fieldName)) { - deserializedSubscriptionInner.authorizationSource = reader.getString(); - } else { - reader.skipChildren(); - } - } - - return deserializedSubscriptionInner; - }); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/TenantIdDescriptionInner.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/TenantIdDescriptionInner.java deleted file mode 100644 index f093f2d501d5..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/fluent/models/TenantIdDescriptionInner.java +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.fluent.models; - -import com.azure.core.annotation.Immutable; -import com.azure.json.JsonReader; -import com.azure.json.JsonSerializable; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import java.io.IOException; - -/** - * Tenant Id information. - */ -@Immutable -public final class TenantIdDescriptionInner implements JsonSerializable { - /* - * The fully qualified ID of the tenant. For example, /tenants/00000000-0000-0000-0000-000000000000. - */ - private String id; - - /* - * The tenant ID. For example, 00000000-0000-0000-0000-000000000000. - */ - private String tenantId; - - /* - * The category of the tenant. Possible values are - * TenantCategoryHome,TenantCategoryProjectedBy,TenantCategoryManagedBy - */ - private String tenantCategory; - - /* - * The country/region name of the address for the tenant. - */ - private String country; - - /* - * The Country/region abbreviation for the tenant. - */ - private String countryCode; - - /* - * The display name of the tenant. - */ - private String displayName; - - /* - * The list of domains for the tenant. - */ - private String domains; - - /* - * The default domain for the tenant. - */ - private String defaultDomain; - - /* - * The tenant type. Only available for Home tenant category. - */ - private String tenantType; - - /** - * Creates an instance of TenantIdDescriptionInner class. - */ - public TenantIdDescriptionInner() { - } - - /** - * Get the id property: The fully qualified ID of the tenant. For example, - * /tenants/00000000-0000-0000-0000-000000000000. - * - * @return the id value. - */ - public String id() { - return this.id; - } - - /** - * Get the tenantId property: The tenant ID. For example, 00000000-0000-0000-0000-000000000000. - * - * @return the tenantId value. - */ - public String tenantId() { - return this.tenantId; - } - - /** - * Get the tenantCategory property: The category of the tenant. Possible values are - * TenantCategoryHome,TenantCategoryProjectedBy,TenantCategoryManagedBy. - * - * @return the tenantCategory value. - */ - public String tenantCategory() { - return this.tenantCategory; - } - - /** - * Get the country property: The country/region name of the address for the tenant. - * - * @return the country value. - */ - public String country() { - return this.country; - } - - /** - * Get the countryCode property: The Country/region abbreviation for the tenant. - * - * @return the countryCode value. - */ - public String countryCode() { - return this.countryCode; - } - - /** - * Get the displayName property: The display name of the tenant. - * - * @return the displayName value. - */ - public String displayName() { - return this.displayName; - } - - /** - * Get the domains property: The list of domains for the tenant. - * - * @return the domains value. - */ - public String domains() { - return this.domains; - } - - /** - * Get the defaultDomain property: The default domain for the tenant. - * - * @return the defaultDomain value. - */ - public String defaultDomain() { - return this.defaultDomain; - } - - /** - * Get the tenantType property: The tenant type. Only available for Home tenant category. - * - * @return the tenantType value. - */ - public String tenantType() { - return this.tenantType; - } - - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - } - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of TenantIdDescriptionInner from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of TenantIdDescriptionInner if the JsonReader was pointing to an instance of it, or null if - * it was pointing to JSON null. - * @throws IOException If an error occurs while reading the TenantIdDescriptionInner. - */ - public static TenantIdDescriptionInner fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - TenantIdDescriptionInner deserializedTenantIdDescriptionInner = new TenantIdDescriptionInner(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("id".equals(fieldName)) { - deserializedTenantIdDescriptionInner.id = reader.getString(); - } else if ("tenantId".equals(fieldName)) { - deserializedTenantIdDescriptionInner.tenantId = reader.getString(); - } else if ("tenantCategory".equals(fieldName)) { - deserializedTenantIdDescriptionInner.tenantCategory = reader.getString(); - } else if ("country".equals(fieldName)) { - deserializedTenantIdDescriptionInner.country = reader.getString(); - } else if ("countryCode".equals(fieldName)) { - deserializedTenantIdDescriptionInner.countryCode = reader.getString(); - } else if ("displayName".equals(fieldName)) { - deserializedTenantIdDescriptionInner.displayName = reader.getString(); - } else if ("domains".equals(fieldName)) { - deserializedTenantIdDescriptionInner.domains = reader.getString(); - } else if ("defaultDomain".equals(fieldName)) { - deserializedTenantIdDescriptionInner.defaultDomain = reader.getString(); - } else if ("tenantType".equals(fieldName)) { - deserializedTenantIdDescriptionInner.tenantType = reader.getString(); - } else { - reader.skipChildren(); - } - } - - return deserializedTenantIdDescriptionInner; - }); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/AcceptOwnershipStatusResponseImpl.java similarity index 53% rename from sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionImpl.java rename to sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/AcceptOwnershipStatusResponseImpl.java index a13038a95430..d45c9c459360 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionImpl.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/AcceptOwnershipStatusResponseImpl.java @@ -4,42 +4,46 @@ package com.azure.resourcemanager.subscription.implementation; -import com.azure.resourcemanager.subscription.fluent.models.SubscriptionInner; -import com.azure.resourcemanager.subscription.models.Subscription; -import com.azure.resourcemanager.subscription.models.SubscriptionPolicies; -import com.azure.resourcemanager.subscription.models.SubscriptionState; +import com.azure.resourcemanager.subscription.fluent.models.AcceptOwnershipStatusResponseInner; +import com.azure.resourcemanager.subscription.models.AcceptOwnership; +import com.azure.resourcemanager.subscription.models.AcceptOwnershipStatusResponse; +import com.azure.resourcemanager.subscription.models.Provisioning; import java.util.Collections; import java.util.Map; -public final class SubscriptionImpl implements Subscription { - private SubscriptionInner innerObject; +public final class AcceptOwnershipStatusResponseImpl implements AcceptOwnershipStatusResponse { + private AcceptOwnershipStatusResponseInner innerObject; private final com.azure.resourcemanager.subscription.SubscriptionManager serviceManager; - SubscriptionImpl(SubscriptionInner innerObject, + AcceptOwnershipStatusResponseImpl(AcceptOwnershipStatusResponseInner innerObject, com.azure.resourcemanager.subscription.SubscriptionManager serviceManager) { this.innerObject = innerObject; this.serviceManager = serviceManager; } - public String id() { - return this.innerModel().id(); - } - public String subscriptionId() { return this.innerModel().subscriptionId(); } - public String displayName() { - return this.innerModel().displayName(); + public AcceptOwnership acceptOwnershipState() { + return this.innerModel().acceptOwnershipState(); + } + + public Provisioning provisioningState() { + return this.innerModel().provisioningState(); + } + + public String billingOwner() { + return this.innerModel().billingOwner(); } - public SubscriptionState state() { - return this.innerModel().state(); + public String subscriptionTenantId() { + return this.innerModel().subscriptionTenantId(); } - public String tenantId() { - return this.innerModel().tenantId(); + public String displayName() { + return this.innerModel().displayName(); } public Map tags() { @@ -51,15 +55,7 @@ public Map tags() { } } - public SubscriptionPolicies subscriptionPolicies() { - return this.innerModel().subscriptionPolicies(); - } - - public String authorizationSource() { - return this.innerModel().authorizationSource(); - } - - public SubscriptionInner innerModel() { + public AcceptOwnershipStatusResponseInner innerModel() { return this.innerObject; } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/AliasClientImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/AliasClientImpl.java index c3be5eebfd89..e03fc5c143f7 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/AliasClientImpl.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/AliasClientImpl.java @@ -23,13 +23,15 @@ import com.azure.core.http.rest.RestProxy; import com.azure.core.management.exception.ManagementException; import com.azure.core.management.polling.PollResult; +import com.azure.core.util.BinaryData; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.polling.PollerFlux; import com.azure.core.util.polling.SyncPoller; import com.azure.resourcemanager.subscription.fluent.AliasClient; -import com.azure.resourcemanager.subscription.fluent.models.PutAliasListResultInner; -import com.azure.resourcemanager.subscription.fluent.models.PutAliasResponseInner; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasListResultInner; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasResponseInner; import com.azure.resourcemanager.subscription.models.PutAliasRequest; import java.nio.ByteBuffer; import reactor.core.publisher.Flux; @@ -64,7 +66,7 @@ public final class AliasClientImpl implements AliasClient { * REST calls. */ @Host("{$host}") - @ServiceInterface(name = "SubscriptionClientAl") + @ServiceInterface(name = "SubscriptionClientAlias") public interface AliasService { @Headers({ "Content-Type: application/json" }) @Put("/providers/Microsoft.Subscription/aliases/{aliasName}") @@ -74,11 +76,27 @@ Mono>> create(@HostParam("$host") String endpoint, @PathParam("aliasName") String aliasName, @QueryParam("api-version") String apiVersion, @BodyParam("application/json") PutAliasRequest body, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Put("/providers/Microsoft.Subscription/aliases/{aliasName}") + @ExpectedResponses({ 200, 201 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response createSync(@HostParam("$host") String endpoint, @PathParam("aliasName") String aliasName, + @QueryParam("api-version") String apiVersion, @BodyParam("application/json") PutAliasRequest body, + @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/providers/Microsoft.Subscription/aliases/{aliasName}") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> get(@HostParam("$host") String endpoint, + Mono> get(@HostParam("$host") String endpoint, + @PathParam("aliasName") String aliasName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/providers/Microsoft.Subscription/aliases/{aliasName}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getSync(@HostParam("$host") String endpoint, @PathParam("aliasName") String aliasName, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); @@ -89,19 +107,33 @@ Mono> get(@HostParam("$host") String endpoint, Mono> delete(@HostParam("$host") String endpoint, @PathParam("aliasName") String aliasName, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Delete("/providers/Microsoft.Subscription/aliases/{aliasName}") + @ExpectedResponses({ 200, 204 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response deleteSync(@HostParam("$host") String endpoint, @PathParam("aliasName") String aliasName, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) @Get("/providers/Microsoft.Subscription/aliases") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> list(@HostParam("$host") String endpoint, + Mono> list(@HostParam("$host") String endpoint, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/providers/Microsoft.Subscription/aliases") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listSync(@HostParam("$host") String endpoint, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); } /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -123,94 +155,103 @@ private Mono>> createWithResponseAsync(String aliasNam } else { body.validate(); } - final String apiVersion = "2020-09-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.create(this.client.getEndpoint(), aliasName, apiVersion, body, accept, context)) + .withContext(context -> service.create(this.client.getEndpoint(), aliasName, this.client.getApiVersion(), + body, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return subscription Information with the alias along with {@link Response} on successful completion of - * {@link Mono}. + * @return subscription Information with the alias along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> createWithResponseAsync(String aliasName, PutAliasRequest body, - Context context) { + private Response createWithResponse(String aliasName, PutAliasRequest body) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } if (aliasName == null) { - return Mono.error(new IllegalArgumentException("Parameter aliasName is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter aliasName is required and cannot be null.")); } if (body == null) { - return Mono.error(new IllegalArgumentException("Parameter body is required and cannot be null.")); + throw LOGGER.atError().log(new IllegalArgumentException("Parameter body is required and cannot be null.")); } else { body.validate(); } - final String apiVersion = "2020-09-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.create(this.client.getEndpoint(), aliasName, apiVersion, body, accept, context); + return service.createSync(this.client.getEndpoint(), aliasName, this.client.getApiVersion(), body, accept, + Context.NONE); } /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of subscription Information with the alias. + * @return subscription Information with the alias along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, PutAliasResponseInner> beginCreateAsync(String aliasName, - PutAliasRequest body) { - Mono>> mono = createWithResponseAsync(aliasName, body); - return this.client.getLroResult(mono, - this.client.getHttpPipeline(), PutAliasResponseInner.class, PutAliasResponseInner.class, - this.client.getContext()); + @ServiceMethod(returns = ReturnType.SINGLE) + private Response createWithResponse(String aliasName, PutAliasRequest body, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (aliasName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter aliasName is required and cannot be null.")); + } + if (body == null) { + throw LOGGER.atError().log(new IllegalArgumentException("Parameter body is required and cannot be null.")); + } else { + body.validate(); + } + final String accept = "application/json"; + return service.createSync(this.client.getEndpoint(), aliasName, this.client.getApiVersion(), body, accept, + context); } /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return the {@link PollerFlux} for polling of subscription Information with the alias. */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, PutAliasResponseInner> beginCreateAsync(String aliasName, - PutAliasRequest body, Context context) { - context = this.client.mergeContext(context); - Mono>> mono = createWithResponseAsync(aliasName, body, context); - return this.client.getLroResult(mono, - this.client.getHttpPipeline(), PutAliasResponseInner.class, PutAliasResponseInner.class, context); + private PollerFlux, SubscriptionAliasResponseInner> + beginCreateAsync(String aliasName, PutAliasRequest body) { + Mono>> mono = createWithResponseAsync(aliasName, body); + return this.client.getLroResult(mono, + this.client.getHttpPipeline(), SubscriptionAliasResponseInner.class, SubscriptionAliasResponseInner.class, + this.client.getContext()); } /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -218,16 +259,18 @@ private PollerFlux, PutAliasResponseInner> beg * @return the {@link SyncPoller} for polling of subscription Information with the alias. */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - public SyncPoller, PutAliasResponseInner> beginCreate(String aliasName, - PutAliasRequest body) { - return this.beginCreateAsync(aliasName, body).getSyncPoller(); + public SyncPoller, SubscriptionAliasResponseInner> + beginCreate(String aliasName, PutAliasRequest body) { + Response response = createWithResponse(aliasName, body); + return this.client.getLroResult(response, + SubscriptionAliasResponseInner.class, SubscriptionAliasResponseInner.class, Context.NONE); } /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -236,16 +279,18 @@ public SyncPoller, PutAliasResponseInner> begi * @return the {@link SyncPoller} for polling of subscription Information with the alias. */ @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - public SyncPoller, PutAliasResponseInner> beginCreate(String aliasName, - PutAliasRequest body, Context context) { - return this.beginCreateAsync(aliasName, body, context).getSyncPoller(); + public SyncPoller, SubscriptionAliasResponseInner> + beginCreate(String aliasName, PutAliasRequest body, Context context) { + Response response = createWithResponse(aliasName, body, context); + return this.client.getLroResult(response, + SubscriptionAliasResponseInner.class, SubscriptionAliasResponseInner.class, context); } /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -253,32 +298,15 @@ public SyncPoller, PutAliasResponseInner> begi * @return subscription Information with the alias on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono createAsync(String aliasName, PutAliasRequest body) { + private Mono createAsync(String aliasName, PutAliasRequest body) { return beginCreateAsync(aliasName, body).last().flatMap(this.client::getLroFinalResultOrError); } /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. - * @param body The body parameter. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return subscription Information with the alias on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono createAsync(String aliasName, PutAliasRequest body, Context context) { - return beginCreateAsync(aliasName, body, context).last().flatMap(this.client::getLroFinalResultOrError); - } - - /** - * Create Alias Subscription. - * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -286,15 +314,15 @@ private Mono createAsync(String aliasName, PutAliasReques * @return subscription Information with the alias. */ @ServiceMethod(returns = ReturnType.SINGLE) - public PutAliasResponseInner create(String aliasName, PutAliasRequest body) { - return createAsync(aliasName, body).block(); + public SubscriptionAliasResponseInner create(String aliasName, PutAliasRequest body) { + return beginCreate(aliasName, body).getFinalResult(); } /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -303,22 +331,22 @@ public PutAliasResponseInner create(String aliasName, PutAliasRequest body) { * @return subscription Information with the alias. */ @ServiceMethod(returns = ReturnType.SINGLE) - public PutAliasResponseInner create(String aliasName, PutAliasRequest body, Context context) { - return createAsync(aliasName, body, context).block(); + public SubscriptionAliasResponseInner create(String aliasName, PutAliasRequest body, Context context) { + return beginCreate(aliasName, body, context).getFinalResult(); } /** * Get Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return alias Subscription along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getWithResponseAsync(String aliasName) { + private Mono> getWithResponseAsync(String aliasName) { if (this.client.getEndpoint() == null) { return Mono.error( new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); @@ -326,59 +354,32 @@ private Mono> getWithResponseAsync(String aliasN if (aliasName == null) { return Mono.error(new IllegalArgumentException("Parameter aliasName is required and cannot be null.")); } - final String apiVersion = "2020-09-01"; final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.get(this.client.getEndpoint(), aliasName, apiVersion, accept, context)) + return FluxUtil.withContext( + context -> service.get(this.client.getEndpoint(), aliasName, this.client.getApiVersion(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** * Get Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return alias Subscription along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getWithResponseAsync(String aliasName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (aliasName == null) { - return Mono.error(new IllegalArgumentException("Parameter aliasName is required and cannot be null.")); - } - final String apiVersion = "2020-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), aliasName, apiVersion, accept, context); - } - - /** - * Get Alias Subscription. - * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return alias Subscription on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono getAsync(String aliasName) { + private Mono getAsync(String aliasName) { return getWithResponseAsync(aliasName).flatMap(res -> Mono.justOrEmpty(res.getValue())); } /** * Get Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -386,30 +387,40 @@ private Mono getAsync(String aliasName) { * @return alias Subscription along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response getWithResponse(String aliasName, Context context) { - return getWithResponseAsync(aliasName, context).block(); + public Response getWithResponse(String aliasName, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (aliasName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter aliasName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getSync(this.client.getEndpoint(), aliasName, this.client.getApiVersion(), accept, context); } /** * Get Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return alias Subscription. */ @ServiceMethod(returns = ReturnType.SINGLE) - public PutAliasResponseInner get(String aliasName) { + public SubscriptionAliasResponseInner get(String aliasName) { return getWithResponse(aliasName, Context.NONE).getValue(); } /** * Delete Alias. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. @@ -424,44 +435,18 @@ private Mono> deleteWithResponseAsync(String aliasName) { if (aliasName == null) { return Mono.error(new IllegalArgumentException("Parameter aliasName is required and cannot be null.")); } - final String apiVersion = "2020-09-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.delete(this.client.getEndpoint(), aliasName, apiVersion, accept, context)) + .withContext(context -> service.delete(this.client.getEndpoint(), aliasName, this.client.getApiVersion(), + accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** * Delete Alias. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> deleteWithResponseAsync(String aliasName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (aliasName == null) { - return Mono.error(new IllegalArgumentException("Parameter aliasName is required and cannot be null.")); - } - final String apiVersion = "2020-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), aliasName, apiVersion, accept, context); - } - - /** - * Delete Alias. - * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. @@ -475,8 +460,8 @@ private Mono deleteAsync(String aliasName) { /** * Delete Alias. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -485,14 +470,24 @@ private Mono deleteAsync(String aliasName) { */ @ServiceMethod(returns = ReturnType.SINGLE) public Response deleteWithResponse(String aliasName, Context context) { - return deleteWithResponseAsync(aliasName, context).block(); + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (aliasName == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter aliasName is required and cannot be null.")); + } + final String accept = "application/json"; + return service.deleteSync(this.client.getEndpoint(), aliasName, this.client.getApiVersion(), accept, context); } /** * Delete Alias. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. @@ -503,80 +498,68 @@ public void delete(String aliasName) { } /** - * Get Alias Subscription. + * List Alias Subscription. * * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return alias Subscription along with {@link Response} on successful completion of {@link Mono}. + * @return the list of aliases along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listWithResponseAsync() { + private Mono> listWithResponseAsync() { if (this.client.getEndpoint() == null) { return Mono.error( new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); } - final String apiVersion = "2020-09-01"; final String accept = "application/json"; - return FluxUtil.withContext(context -> service.list(this.client.getEndpoint(), apiVersion, accept, context)) + return FluxUtil + .withContext( + context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** - * Get Alias Subscription. - * - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return alias Subscription along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listWithResponseAsync(Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - final String apiVersion = "2020-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.list(this.client.getEndpoint(), apiVersion, accept, context); - } - - /** - * Get Alias Subscription. + * List Alias Subscription. * * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return alias Subscription on successful completion of {@link Mono}. + * @return the list of aliases on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono listAsync() { + private Mono listAsync() { return listWithResponseAsync().flatMap(res -> Mono.justOrEmpty(res.getValue())); } /** - * Get Alias Subscription. + * List Alias Subscription. * * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return alias Subscription along with {@link Response}. + * @return the list of aliases along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response listWithResponse(Context context) { - return listWithResponseAsync(context).block(); + public Response listWithResponse(Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), accept, context); } /** - * Get Alias Subscription. + * List Alias Subscription. * * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return alias Subscription. + * @return the list of aliases. */ @ServiceMethod(returns = ReturnType.SINGLE) - public PutAliasListResultInner list() { + public SubscriptionAliasListResultInner list() { return listWithResponse(Context.NONE).getValue(); } + + private static final ClientLogger LOGGER = new ClientLogger(AliasClientImpl.class); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/AliasImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/AliasImpl.java index 342bbe61a17a..e967e3d21d85 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/AliasImpl.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/AliasImpl.java @@ -9,12 +9,12 @@ import com.azure.core.util.Context; import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.subscription.fluent.AliasClient; -import com.azure.resourcemanager.subscription.fluent.models.PutAliasListResultInner; -import com.azure.resourcemanager.subscription.fluent.models.PutAliasResponseInner; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasListResultInner; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasResponseInner; import com.azure.resourcemanager.subscription.models.Alias; -import com.azure.resourcemanager.subscription.models.PutAliasListResult; import com.azure.resourcemanager.subscription.models.PutAliasRequest; -import com.azure.resourcemanager.subscription.models.PutAliasResponse; +import com.azure.resourcemanager.subscription.models.SubscriptionAliasListResult; +import com.azure.resourcemanager.subscription.models.SubscriptionAliasResponse; public final class AliasImpl implements Alias { private static final ClientLogger LOGGER = new ClientLogger(AliasImpl.class); @@ -29,38 +29,38 @@ public AliasImpl(AliasClient innerClient, this.serviceManager = serviceManager; } - public PutAliasResponse create(String aliasName, PutAliasRequest body) { - PutAliasResponseInner inner = this.serviceClient().create(aliasName, body); + public SubscriptionAliasResponse create(String aliasName, PutAliasRequest body) { + SubscriptionAliasResponseInner inner = this.serviceClient().create(aliasName, body); if (inner != null) { - return new PutAliasResponseImpl(inner, this.manager()); + return new SubscriptionAliasResponseImpl(inner, this.manager()); } else { return null; } } - public PutAliasResponse create(String aliasName, PutAliasRequest body, Context context) { - PutAliasResponseInner inner = this.serviceClient().create(aliasName, body, context); + public SubscriptionAliasResponse create(String aliasName, PutAliasRequest body, Context context) { + SubscriptionAliasResponseInner inner = this.serviceClient().create(aliasName, body, context); if (inner != null) { - return new PutAliasResponseImpl(inner, this.manager()); + return new SubscriptionAliasResponseImpl(inner, this.manager()); } else { return null; } } - public Response getWithResponse(String aliasName, Context context) { - Response inner = this.serviceClient().getWithResponse(aliasName, context); + public Response getWithResponse(String aliasName, Context context) { + Response inner = this.serviceClient().getWithResponse(aliasName, context); if (inner != null) { return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), - new PutAliasResponseImpl(inner.getValue(), this.manager())); + new SubscriptionAliasResponseImpl(inner.getValue(), this.manager())); } else { return null; } } - public PutAliasResponse get(String aliasName) { - PutAliasResponseInner inner = this.serviceClient().get(aliasName); + public SubscriptionAliasResponse get(String aliasName) { + SubscriptionAliasResponseInner inner = this.serviceClient().get(aliasName); if (inner != null) { - return new PutAliasResponseImpl(inner, this.manager()); + return new SubscriptionAliasResponseImpl(inner, this.manager()); } else { return null; } @@ -74,20 +74,20 @@ public void delete(String aliasName) { this.serviceClient().delete(aliasName); } - public Response listWithResponse(Context context) { - Response inner = this.serviceClient().listWithResponse(context); + public Response listWithResponse(Context context) { + Response inner = this.serviceClient().listWithResponse(context); if (inner != null) { return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), - new PutAliasListResultImpl(inner.getValue(), this.manager())); + new SubscriptionAliasListResultImpl(inner.getValue(), this.manager())); } else { return null; } } - public PutAliasListResult list() { - PutAliasListResultInner inner = this.serviceClient().list(); + public SubscriptionAliasListResult list() { + SubscriptionAliasListResultInner inner = this.serviceClient().list(); if (inner != null) { - return new PutAliasListResultImpl(inner, this.manager()); + return new SubscriptionAliasListResultImpl(inner, this.manager()); } else { return null; } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/BillingAccountPoliciesResponseImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/BillingAccountPoliciesResponseImpl.java new file mode 100644 index 000000000000..92a623137bdd --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/BillingAccountPoliciesResponseImpl.java @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.implementation; + +import com.azure.core.management.SystemData; +import com.azure.resourcemanager.subscription.fluent.models.BillingAccountPoliciesResponseInner; +import com.azure.resourcemanager.subscription.models.BillingAccountPoliciesResponse; +import com.azure.resourcemanager.subscription.models.BillingAccountPoliciesResponseProperties; + +public final class BillingAccountPoliciesResponseImpl implements BillingAccountPoliciesResponse { + private BillingAccountPoliciesResponseInner innerObject; + + private final com.azure.resourcemanager.subscription.SubscriptionManager serviceManager; + + BillingAccountPoliciesResponseImpl(BillingAccountPoliciesResponseInner innerObject, + com.azure.resourcemanager.subscription.SubscriptionManager serviceManager) { + this.innerObject = innerObject; + this.serviceManager = serviceManager; + } + + public String id() { + return this.innerModel().id(); + } + + public String name() { + return this.innerModel().name(); + } + + public String type() { + return this.innerModel().type(); + } + + public BillingAccountPoliciesResponseProperties properties() { + return this.innerModel().properties(); + } + + public SystemData systemData() { + return this.innerModel().systemData(); + } + + public BillingAccountPoliciesResponseInner innerModel() { + return this.innerObject; + } + + private com.azure.resourcemanager.subscription.SubscriptionManager manager() { + return this.serviceManager; + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/BillingAccountsClientImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/BillingAccountsClientImpl.java new file mode 100644 index 000000000000..bf6d77f104be --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/BillingAccountsClientImpl.java @@ -0,0 +1,160 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.implementation; + +import com.azure.core.annotation.ExpectedResponses; +import com.azure.core.annotation.Get; +import com.azure.core.annotation.HeaderParam; +import com.azure.core.annotation.Headers; +import com.azure.core.annotation.Host; +import com.azure.core.annotation.HostParam; +import com.azure.core.annotation.PathParam; +import com.azure.core.annotation.QueryParam; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceInterface; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.annotation.UnexpectedResponseExceptionType; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.RestProxy; +import com.azure.core.management.exception.ManagementException; +import com.azure.core.util.Context; +import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; +import com.azure.resourcemanager.subscription.fluent.BillingAccountsClient; +import com.azure.resourcemanager.subscription.fluent.models.BillingAccountPoliciesResponseInner; +import reactor.core.publisher.Mono; + +/** + * An instance of this class provides access to all the operations defined in BillingAccountsClient. + */ +public final class BillingAccountsClientImpl implements BillingAccountsClient { + /** + * The proxy service used to perform REST calls. + */ + private final BillingAccountsService service; + + /** + * The service client containing this operation class. + */ + private final SubscriptionClientImpl client; + + /** + * Initializes an instance of BillingAccountsClientImpl. + * + * @param client the instance of the service client containing this operation class. + */ + BillingAccountsClientImpl(SubscriptionClientImpl client) { + this.service + = RestProxy.create(BillingAccountsService.class, client.getHttpPipeline(), client.getSerializerAdapter()); + this.client = client; + } + + /** + * The interface defining all the services for SubscriptionClientBillingAccounts to be used by the proxy service to + * perform REST calls. + */ + @Host("{$host}") + @ServiceInterface(name = "SubscriptionClientBillingAccounts") + public interface BillingAccountsService { + @Headers({ "Content-Type: application/json" }) + @Get("/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.Subscription/policies/default") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> getPolicy(@HostParam("$host") String endpoint, + @PathParam("billingAccountId") String billingAccountId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.Subscription/policies/default") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getPolicySync(@HostParam("$host") String endpoint, + @PathParam("billingAccountId") String billingAccountId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, Context context); + } + + /** + * Get Billing Account Policy. + * + * @param billingAccountId Billing Account Id. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return billing Account Policy along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> getPolicyWithResponseAsync(String billingAccountId) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (billingAccountId == null) { + return Mono + .error(new IllegalArgumentException("Parameter billingAccountId is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.getPolicy(this.client.getEndpoint(), billingAccountId, + this.client.getApiVersion(), accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Get Billing Account Policy. + * + * @param billingAccountId Billing Account Id. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return billing Account Policy on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono getPolicyAsync(String billingAccountId) { + return getPolicyWithResponseAsync(billingAccountId).flatMap(res -> Mono.justOrEmpty(res.getValue())); + } + + /** + * Get Billing Account Policy. + * + * @param billingAccountId Billing Account Id. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return billing Account Policy along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getPolicyWithResponse(String billingAccountId, + Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (billingAccountId == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter billingAccountId is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getPolicySync(this.client.getEndpoint(), billingAccountId, this.client.getApiVersion(), accept, + context); + } + + /** + * Get Billing Account Policy. + * + * @param billingAccountId Billing Account Id. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return billing Account Policy. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public BillingAccountPoliciesResponseInner getPolicy(String billingAccountId) { + return getPolicyWithResponse(billingAccountId, Context.NONE).getValue(); + } + + private static final ClientLogger LOGGER = new ClientLogger(BillingAccountsClientImpl.class); +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/BillingAccountsImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/BillingAccountsImpl.java new file mode 100644 index 000000000000..2bb487ede149 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/BillingAccountsImpl.java @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.implementation; + +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.SimpleResponse; +import com.azure.core.util.Context; +import com.azure.core.util.logging.ClientLogger; +import com.azure.resourcemanager.subscription.fluent.BillingAccountsClient; +import com.azure.resourcemanager.subscription.fluent.models.BillingAccountPoliciesResponseInner; +import com.azure.resourcemanager.subscription.models.BillingAccountPoliciesResponse; +import com.azure.resourcemanager.subscription.models.BillingAccounts; + +public final class BillingAccountsImpl implements BillingAccounts { + private static final ClientLogger LOGGER = new ClientLogger(BillingAccountsImpl.class); + + private final BillingAccountsClient innerClient; + + private final com.azure.resourcemanager.subscription.SubscriptionManager serviceManager; + + public BillingAccountsImpl(BillingAccountsClient innerClient, + com.azure.resourcemanager.subscription.SubscriptionManager serviceManager) { + this.innerClient = innerClient; + this.serviceManager = serviceManager; + } + + public Response getPolicyWithResponse(String billingAccountId, Context context) { + Response inner + = this.serviceClient().getPolicyWithResponse(billingAccountId, context); + if (inner != null) { + return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), + new BillingAccountPoliciesResponseImpl(inner.getValue(), this.manager())); + } else { + return null; + } + } + + public BillingAccountPoliciesResponse getPolicy(String billingAccountId) { + BillingAccountPoliciesResponseInner inner = this.serviceClient().getPolicy(billingAccountId); + if (inner != null) { + return new BillingAccountPoliciesResponseImpl(inner, this.manager()); + } else { + return null; + } + } + + private BillingAccountsClient serviceClient() { + return this.innerClient; + } + + private com.azure.resourcemanager.subscription.SubscriptionManager manager() { + return this.serviceManager; + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/PutAliasResponseImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/GetTenantPolicyResponseImpl.java similarity index 58% rename from sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/PutAliasResponseImpl.java rename to sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/GetTenantPolicyResponseImpl.java index fbbf30784329..eb1b70667b1e 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/PutAliasResponseImpl.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/GetTenantPolicyResponseImpl.java @@ -4,16 +4,17 @@ package com.azure.resourcemanager.subscription.implementation; -import com.azure.resourcemanager.subscription.fluent.models.PutAliasResponseInner; -import com.azure.resourcemanager.subscription.models.PutAliasResponse; -import com.azure.resourcemanager.subscription.models.PutAliasResponseProperties; +import com.azure.core.management.SystemData; +import com.azure.resourcemanager.subscription.fluent.models.GetTenantPolicyResponseInner; +import com.azure.resourcemanager.subscription.models.GetTenantPolicyResponse; +import com.azure.resourcemanager.subscription.models.TenantPolicy; -public final class PutAliasResponseImpl implements PutAliasResponse { - private PutAliasResponseInner innerObject; +public final class GetTenantPolicyResponseImpl implements GetTenantPolicyResponse { + private GetTenantPolicyResponseInner innerObject; private final com.azure.resourcemanager.subscription.SubscriptionManager serviceManager; - PutAliasResponseImpl(PutAliasResponseInner innerObject, + GetTenantPolicyResponseImpl(GetTenantPolicyResponseInner innerObject, com.azure.resourcemanager.subscription.SubscriptionManager serviceManager) { this.innerObject = innerObject; this.serviceManager = serviceManager; @@ -31,11 +32,15 @@ public String type() { return this.innerModel().type(); } - public PutAliasResponseProperties properties() { + public TenantPolicy properties() { return this.innerModel().properties(); } - public PutAliasResponseInner innerModel() { + public SystemData systemData() { + return this.innerModel().systemData(); + } + + public GetTenantPolicyResponseInner innerModel() { return this.innerObject; } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/LocationImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/LocationImpl.java deleted file mode 100644 index 73aa8d012c81..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/LocationImpl.java +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.implementation; - -import com.azure.resourcemanager.subscription.fluent.models.LocationInner; -import com.azure.resourcemanager.subscription.models.Location; - -public final class LocationImpl implements Location { - private LocationInner innerObject; - - private final com.azure.resourcemanager.subscription.SubscriptionManager serviceManager; - - LocationImpl(LocationInner innerObject, com.azure.resourcemanager.subscription.SubscriptionManager serviceManager) { - this.innerObject = innerObject; - this.serviceManager = serviceManager; - } - - public String id() { - return this.innerModel().id(); - } - - public String subscriptionId() { - return this.innerModel().subscriptionId(); - } - - public String name() { - return this.innerModel().name(); - } - - public String displayName() { - return this.innerModel().displayName(); - } - - public String latitude() { - return this.innerModel().latitude(); - } - - public String longitude() { - return this.innerModel().longitude(); - } - - public LocationInner innerModel() { - return this.innerObject; - } - - private com.azure.resourcemanager.subscription.SubscriptionManager manager() { - return this.serviceManager; - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/OperationListResultImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/OperationImpl.java similarity index 52% rename from sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/OperationListResultImpl.java rename to sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/OperationImpl.java index 5fa68bda8133..0d0a24b868f5 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/OperationListResultImpl.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/OperationImpl.java @@ -4,37 +4,34 @@ package com.azure.resourcemanager.subscription.implementation; -import com.azure.resourcemanager.subscription.fluent.models.OperationListResultInner; +import com.azure.resourcemanager.subscription.fluent.models.OperationInner; import com.azure.resourcemanager.subscription.models.Operation; -import com.azure.resourcemanager.subscription.models.OperationListResult; -import java.util.Collections; -import java.util.List; +import com.azure.resourcemanager.subscription.models.OperationDisplay; -public final class OperationListResultImpl implements OperationListResult { - private OperationListResultInner innerObject; +public final class OperationImpl implements Operation { + private OperationInner innerObject; private final com.azure.resourcemanager.subscription.SubscriptionManager serviceManager; - OperationListResultImpl(OperationListResultInner innerObject, + OperationImpl(OperationInner innerObject, com.azure.resourcemanager.subscription.SubscriptionManager serviceManager) { this.innerObject = innerObject; this.serviceManager = serviceManager; } - public List value() { - List inner = this.innerModel().value(); - if (inner != null) { - return Collections.unmodifiableList(inner); - } else { - return Collections.emptyList(); - } + public String name() { + return this.innerModel().name(); } - public String nextLink() { - return this.innerModel().nextLink(); + public Boolean isDataAction() { + return this.innerModel().isDataAction(); } - public OperationListResultInner innerModel() { + public OperationDisplay display() { + return this.innerModel().display(); + } + + public OperationInner innerModel() { return this.innerObject; } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/OperationsClientImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/OperationsClientImpl.java index d55b1a2da3b6..a27879889427 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/OperationsClientImpl.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/OperationsClientImpl.java @@ -10,18 +10,25 @@ import com.azure.core.annotation.Headers; import com.azure.core.annotation.Host; import com.azure.core.annotation.HostParam; +import com.azure.core.annotation.PathParam; import com.azure.core.annotation.QueryParam; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceInterface; import com.azure.core.annotation.ServiceMethod; import com.azure.core.annotation.UnexpectedResponseExceptionType; +import com.azure.core.http.rest.PagedFlux; +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.PagedResponse; +import com.azure.core.http.rest.PagedResponseBase; import com.azure.core.http.rest.Response; import com.azure.core.http.rest.RestProxy; import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.subscription.fluent.OperationsClient; -import com.azure.resourcemanager.subscription.fluent.models.OperationListResultInner; +import com.azure.resourcemanager.subscription.fluent.models.OperationInner; +import com.azure.resourcemanager.subscription.models.OperationListResult; import reactor.core.publisher.Mono; /** @@ -54,14 +61,35 @@ public final class OperationsClientImpl implements OperationsClient { * perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "SubscriptionClientOp") + @ServiceInterface(name = "SubscriptionClientOperations") public interface OperationsService { @Headers({ "Content-Type: application/json" }) @Get("/providers/Microsoft.Subscription/operations") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> list(@HostParam("$host") String endpoint, + Mono> list(@HostParam("$host") String endpoint, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/providers/Microsoft.Subscription/operations") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listSync(@HostParam("$host") String endpoint, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> listNext(@PathParam(value = "nextLink", encoded = true) String nextLink, + @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listNextSync(@PathParam(value = "nextLink", encoded = true) String nextLink, + @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); } /** @@ -69,21 +97,57 @@ Mono> list(@HostParam("$host") String endpoin * * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list operations along with {@link Response} on successful completion of + * @return result of the request to list operations along with {@link PagedResponse} on successful completion of * {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listWithResponseAsync() { + private Mono> listSinglePageAsync() { if (this.client.getEndpoint() == null) { return Mono.error( new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); } - final String apiVersion = "2020-09-01"; final String accept = "application/json"; - return FluxUtil.withContext(context -> service.list(this.client.getEndpoint(), apiVersion, accept, context)) + return FluxUtil + .withContext( + context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), accept, context)) + .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), + res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } + /** + * Lists all of the available Microsoft.Subscription API operations. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return result of the request to list operations as paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listAsync() { + return new PagedFlux<>(() -> listSinglePageAsync(), nextLink -> listNextSinglePageAsync(nextLink)); + } + + /** + * Lists all of the available Microsoft.Subscription API operations. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return result of the request to list operations along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listSinglePage() { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + /** * Lists all of the available Microsoft.Subscription API operations. * @@ -91,19 +155,20 @@ private Mono> listWithResponseAsync() { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list operations along with {@link Response} on successful completion of - * {@link Mono}. + * @return result of the request to list operations along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listWithResponseAsync(Context context) { + private PagedResponse listSinglePage(Context context) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } - final String apiVersion = "2020-09-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.list(this.client.getEndpoint(), apiVersion, accept, context); + Response res + = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } /** @@ -111,11 +176,11 @@ private Mono> listWithResponseAsync(Context c * * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list operations on successful completion of {@link Mono}. + * @return result of the request to list operations as paginated response with {@link PagedIterable}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono listAsync() { - return listWithResponseAsync().flatMap(res -> Mono.justOrEmpty(res.getValue())); + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable list() { + return new PagedIterable<>(() -> listSinglePage(), nextLink -> listNextSinglePage(nextLink)); } /** @@ -125,22 +190,92 @@ private Mono listAsync() { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list operations along with {@link Response}. + * @return result of the request to list operations as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable list(Context context) { + return new PagedIterable<>(() -> listSinglePage(context), nextLink -> listNextSinglePage(nextLink, context)); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return result of the request to list operations along with {@link PagedResponse} on successful completion of + * {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response listWithResponse(Context context) { - return listWithResponseAsync(context).block(); + private Mono> listNextSinglePageAsync(String nextLink) { + if (nextLink == null) { + return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context)) + .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), + res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** - * Lists all of the available Microsoft.Subscription API operations. + * Get the next page of items. * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list operations. + * @return result of the request to list operations along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public OperationListResultInner list() { - return listWithResponse(Context.NONE).getValue(); + private PagedResponse listNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return result of the request to list operations along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listNextSinglePage(String nextLink, Context context) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); } + + private static final ClientLogger LOGGER = new ClientLogger(OperationsClientImpl.class); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/OperationsImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/OperationsImpl.java index 2f20acbcb44b..f2763dab2576 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/OperationsImpl.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/OperationsImpl.java @@ -4,13 +4,12 @@ package com.azure.resourcemanager.subscription.implementation; -import com.azure.core.http.rest.Response; -import com.azure.core.http.rest.SimpleResponse; +import com.azure.core.http.rest.PagedIterable; import com.azure.core.util.Context; import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.subscription.fluent.OperationsClient; -import com.azure.resourcemanager.subscription.fluent.models.OperationListResultInner; -import com.azure.resourcemanager.subscription.models.OperationListResult; +import com.azure.resourcemanager.subscription.fluent.models.OperationInner; +import com.azure.resourcemanager.subscription.models.Operation; import com.azure.resourcemanager.subscription.models.Operations; public final class OperationsImpl implements Operations { @@ -26,23 +25,14 @@ public OperationsImpl(OperationsClient innerClient, this.serviceManager = serviceManager; } - public Response listWithResponse(Context context) { - Response inner = this.serviceClient().listWithResponse(context); - if (inner != null) { - return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), - new OperationListResultImpl(inner.getValue(), this.manager())); - } else { - return null; - } + public PagedIterable list() { + PagedIterable inner = this.serviceClient().list(); + return ResourceManagerUtils.mapPage(inner, inner1 -> new OperationImpl(inner1, this.manager())); } - public OperationListResult list() { - OperationListResultInner inner = this.serviceClient().list(); - if (inner != null) { - return new OperationListResultImpl(inner, this.manager()); - } else { - return null; - } + public PagedIterable list(Context context) { + PagedIterable inner = this.serviceClient().list(context); + return ResourceManagerUtils.mapPage(inner, inner1 -> new OperationImpl(inner1, this.manager())); } private OperationsClient serviceClient() { diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/PutAliasListResultImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionAliasListResultImpl.java similarity index 54% rename from sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/PutAliasListResultImpl.java rename to sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionAliasListResultImpl.java index aad5acf1a9e2..ca88e9fb9cc1 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/PutAliasListResultImpl.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionAliasListResultImpl.java @@ -4,30 +4,30 @@ package com.azure.resourcemanager.subscription.implementation; -import com.azure.resourcemanager.subscription.fluent.models.PutAliasListResultInner; -import com.azure.resourcemanager.subscription.fluent.models.PutAliasResponseInner; -import com.azure.resourcemanager.subscription.models.PutAliasListResult; -import com.azure.resourcemanager.subscription.models.PutAliasResponse; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasListResultInner; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasResponseInner; +import com.azure.resourcemanager.subscription.models.SubscriptionAliasListResult; +import com.azure.resourcemanager.subscription.models.SubscriptionAliasResponse; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; -public final class PutAliasListResultImpl implements PutAliasListResult { - private PutAliasListResultInner innerObject; +public final class SubscriptionAliasListResultImpl implements SubscriptionAliasListResult { + private SubscriptionAliasListResultInner innerObject; private final com.azure.resourcemanager.subscription.SubscriptionManager serviceManager; - PutAliasListResultImpl(PutAliasListResultInner innerObject, + SubscriptionAliasListResultImpl(SubscriptionAliasListResultInner innerObject, com.azure.resourcemanager.subscription.SubscriptionManager serviceManager) { this.innerObject = innerObject; this.serviceManager = serviceManager; } - public List value() { - List inner = this.innerModel().value(); + public List value() { + List inner = this.innerModel().value(); if (inner != null) { return Collections.unmodifiableList(inner.stream() - .map(inner1 -> new PutAliasResponseImpl(inner1, this.manager())) + .map(inner1 -> new SubscriptionAliasResponseImpl(inner1, this.manager())) .collect(Collectors.toList())); } else { return Collections.emptyList(); @@ -38,7 +38,7 @@ public String nextLink() { return this.innerModel().nextLink(); } - public PutAliasListResultInner innerModel() { + public SubscriptionAliasListResultInner innerModel() { return this.innerObject; } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionAliasResponseImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionAliasResponseImpl.java new file mode 100644 index 000000000000..9312d97b1af0 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionAliasResponseImpl.java @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.implementation; + +import com.azure.core.management.SystemData; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasResponseInner; +import com.azure.resourcemanager.subscription.models.SubscriptionAliasResponse; +import com.azure.resourcemanager.subscription.models.SubscriptionAliasResponseProperties; + +public final class SubscriptionAliasResponseImpl implements SubscriptionAliasResponse { + private SubscriptionAliasResponseInner innerObject; + + private final com.azure.resourcemanager.subscription.SubscriptionManager serviceManager; + + SubscriptionAliasResponseImpl(SubscriptionAliasResponseInner innerObject, + com.azure.resourcemanager.subscription.SubscriptionManager serviceManager) { + this.innerObject = innerObject; + this.serviceManager = serviceManager; + } + + public String id() { + return this.innerModel().id(); + } + + public String name() { + return this.innerModel().name(); + } + + public String type() { + return this.innerModel().type(); + } + + public SubscriptionAliasResponseProperties properties() { + return this.innerModel().properties(); + } + + public SystemData systemData() { + return this.innerModel().systemData(); + } + + public SubscriptionAliasResponseInner innerModel() { + return this.innerObject; + } + + private com.azure.resourcemanager.subscription.SubscriptionManager manager() { + return this.serviceManager; + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionClientImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionClientImpl.java index fa87e26d40b4..889452607bc0 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionClientImpl.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionClientImpl.java @@ -15,20 +15,24 @@ import com.azure.core.management.exception.ManagementException; import com.azure.core.management.polling.PollResult; import com.azure.core.management.polling.PollerFactory; +import com.azure.core.management.polling.SyncPollerFactory; +import com.azure.core.util.BinaryData; import com.azure.core.util.Context; import com.azure.core.util.CoreUtils; import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.polling.AsyncPollResponse; import com.azure.core.util.polling.LongRunningOperationStatus; import com.azure.core.util.polling.PollerFlux; +import com.azure.core.util.polling.SyncPoller; import com.azure.core.util.serializer.SerializerAdapter; import com.azure.core.util.serializer.SerializerEncoding; import com.azure.resourcemanager.subscription.fluent.AliasClient; +import com.azure.resourcemanager.subscription.fluent.BillingAccountsClient; import com.azure.resourcemanager.subscription.fluent.OperationsClient; import com.azure.resourcemanager.subscription.fluent.SubscriptionClient; import com.azure.resourcemanager.subscription.fluent.SubscriptionOperationsClient; +import com.azure.resourcemanager.subscription.fluent.SubscriptionPoliciesClient; import com.azure.resourcemanager.subscription.fluent.SubscriptionsClient; -import com.azure.resourcemanager.subscription.fluent.TenantsClient; import java.io.IOException; import java.lang.reflect.Type; import java.nio.ByteBuffer; @@ -57,6 +61,20 @@ public String getEndpoint() { return this.endpoint; } + /** + * Api Version. + */ + private final String apiVersion; + + /** + * Gets Api Version. + * + * @return the apiVersion value. + */ + public String getApiVersion() { + return this.apiVersion; + } + /** * The HTTP pipeline to send requests through. */ @@ -113,20 +131,6 @@ public SubscriptionsClient getSubscriptions() { return this.subscriptions; } - /** - * The TenantsClient object to access its operations. - */ - private final TenantsClient tenants; - - /** - * Gets the TenantsClient object to access its operations. - * - * @return the TenantsClient object. - */ - public TenantsClient getTenants() { - return this.tenants; - } - /** * The SubscriptionOperationsClient object to access its operations. */ @@ -169,6 +173,34 @@ public AliasClient getAlias() { return this.alias; } + /** + * The SubscriptionPoliciesClient object to access its operations. + */ + private final SubscriptionPoliciesClient subscriptionPolicies; + + /** + * Gets the SubscriptionPoliciesClient object to access its operations. + * + * @return the SubscriptionPoliciesClient object. + */ + public SubscriptionPoliciesClient getSubscriptionPolicies() { + return this.subscriptionPolicies; + } + + /** + * The BillingAccountsClient object to access its operations. + */ + private final BillingAccountsClient billingAccounts; + + /** + * Gets the BillingAccountsClient object to access its operations. + * + * @return the BillingAccountsClient object. + */ + public BillingAccountsClient getBillingAccounts() { + return this.billingAccounts; + } + /** * Initializes an instance of SubscriptionClient client. * @@ -184,11 +216,13 @@ public AliasClient getAlias() { this.serializerAdapter = serializerAdapter; this.defaultPollInterval = defaultPollInterval; this.endpoint = endpoint; + this.apiVersion = "2021-10-01"; this.subscriptions = new SubscriptionsClientImpl(this); - this.tenants = new TenantsClientImpl(this); this.subscriptionOperations = new SubscriptionOperationsClientImpl(this); this.operations = new OperationsClientImpl(this); this.alias = new AliasClientImpl(this); + this.subscriptionPolicies = new SubscriptionPoliciesClientImpl(this); + this.billingAccounts = new BillingAccountsClientImpl(this); } /** @@ -228,6 +262,23 @@ public PollerFlux, U> getLroResult(Mono type of poll result. + * @param type of final result. + * @return SyncPoller for poll result and final result. + */ + public SyncPoller, U> getLroResult(Response activationResponse, + Type pollResultType, Type finalResultType, Context context) { + return SyncPollerFactory.create(serializerAdapter, httpPipeline, pollResultType, finalResultType, + defaultPollInterval, () -> activationResponse, context); + } + /** * Gets the final result, or an error, based on last async poll response. * diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionCreationResultImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionCreationResultImpl.java new file mode 100644 index 000000000000..907c118c2ed1 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionCreationResultImpl.java @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.implementation; + +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionCreationResultInner; +import com.azure.resourcemanager.subscription.models.SubscriptionCreationResult; + +public final class SubscriptionCreationResultImpl implements SubscriptionCreationResult { + private SubscriptionCreationResultInner innerObject; + + private final com.azure.resourcemanager.subscription.SubscriptionManager serviceManager; + + SubscriptionCreationResultImpl(SubscriptionCreationResultInner innerObject, + com.azure.resourcemanager.subscription.SubscriptionManager serviceManager) { + this.innerObject = innerObject; + this.serviceManager = serviceManager; + } + + public String subscriptionLink() { + return this.innerModel().subscriptionLink(); + } + + public SubscriptionCreationResultInner innerModel() { + return this.innerObject; + } + + private com.azure.resourcemanager.subscription.SubscriptionManager manager() { + return this.serviceManager; + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionOperationsClientImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionOperationsClientImpl.java index 7d17ac77d61a..5f3f468cdd0f 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionOperationsClientImpl.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionOperationsClientImpl.java @@ -4,29 +4,26 @@ package com.azure.resourcemanager.subscription.implementation; -import com.azure.core.annotation.BodyParam; import com.azure.core.annotation.ExpectedResponses; +import com.azure.core.annotation.Get; import com.azure.core.annotation.HeaderParam; import com.azure.core.annotation.Headers; import com.azure.core.annotation.Host; import com.azure.core.annotation.HostParam; import com.azure.core.annotation.PathParam; -import com.azure.core.annotation.Post; import com.azure.core.annotation.QueryParam; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceInterface; import com.azure.core.annotation.ServiceMethod; import com.azure.core.annotation.UnexpectedResponseExceptionType; -import com.azure.core.http.rest.Response; import com.azure.core.http.rest.RestProxy; import com.azure.core.management.exception.ManagementException; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.subscription.fluent.SubscriptionOperationsClient; -import com.azure.resourcemanager.subscription.fluent.models.CanceledSubscriptionIdInner; -import com.azure.resourcemanager.subscription.fluent.models.EnabledSubscriptionIdInner; -import com.azure.resourcemanager.subscription.fluent.models.RenamedSubscriptionIdInner; -import com.azure.resourcemanager.subscription.models.SubscriptionName; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionCreationResultInner; +import com.azure.resourcemanager.subscription.models.SubscriptionOperationsGetResponse; import reactor.core.publisher.Mono; /** @@ -59,336 +56,106 @@ public final class SubscriptionOperationsClientImpl implements SubscriptionOpera * service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "SubscriptionClientSu") + @ServiceInterface(name = "SubscriptionClientSubscriptionOperations") public interface SubscriptionOperationsService { @Headers({ "Content-Type: application/json" }) - @Post("/subscriptions/{subscriptionId}/providers/Microsoft.Subscription/cancel") - @ExpectedResponses({ 200 }) + @Get("/providers/Microsoft.Subscription/subscriptionOperations/{operationId}") + @ExpectedResponses({ 200, 202 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> cancel(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + Mono get(@HostParam("$host") String endpoint, + @PathParam("operationId") String operationId, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) - @Post("/subscriptions/{subscriptionId}/providers/Microsoft.Subscription/rename") - @ExpectedResponses({ 200 }) + @Get("/providers/Microsoft.Subscription/subscriptionOperations/{operationId}") + @ExpectedResponses({ 200, 202 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> rename(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, - @BodyParam("application/json") SubscriptionName body, @HeaderParam("Accept") String accept, - Context context); - - @Headers({ "Content-Type: application/json" }) - @Post("/subscriptions/{subscriptionId}/providers/Microsoft.Subscription/enable") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(ManagementException.class) - Mono> enable(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + SubscriptionOperationsGetResponse getSync(@HostParam("$host") String endpoint, + @PathParam("operationId") String operationId, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); } /** - * The operation to cancel a subscription. + * Get the status of the pending Microsoft.Subscription API operations. * - * @param subscriptionId Subscription Id. + * @param operationId The operation ID, which can be found from the Location field in the generate recommendation + * response header. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the canceled subscription along with {@link Response} on successful completion of {@link Mono}. + * @return the status of the pending Microsoft.Subscription API operations on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> cancelWithResponseAsync(String subscriptionId) { + private Mono getWithResponseAsync(String operationId) { if (this.client.getEndpoint() == null) { return Mono.error( new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); } - if (subscriptionId == null) { - return Mono.error(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); + if (operationId == null) { + return Mono.error(new IllegalArgumentException("Parameter operationId is required and cannot be null.")); } - final String apiVersion = "2020-09-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.cancel(this.client.getEndpoint(), subscriptionId, apiVersion, accept, context)) + .withContext(context -> service.get(this.client.getEndpoint(), operationId, this.client.getApiVersion(), + accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** - * The operation to cancel a subscription. - * - * @param subscriptionId Subscription Id. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the canceled subscription along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> cancelWithResponseAsync(String subscriptionId, - Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (subscriptionId == null) { - return Mono.error(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); - } - final String apiVersion = "2020-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.cancel(this.client.getEndpoint(), subscriptionId, apiVersion, accept, context); - } - - /** - * The operation to cancel a subscription. - * - * @param subscriptionId Subscription Id. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the canceled subscription on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono cancelAsync(String subscriptionId) { - return cancelWithResponseAsync(subscriptionId).flatMap(res -> Mono.justOrEmpty(res.getValue())); - } - - /** - * The operation to cancel a subscription. - * - * @param subscriptionId Subscription Id. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the canceled subscription along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response cancelWithResponse(String subscriptionId, Context context) { - return cancelWithResponseAsync(subscriptionId, context).block(); - } - - /** - * The operation to cancel a subscription. - * - * @param subscriptionId Subscription Id. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the canceled subscription. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public CanceledSubscriptionIdInner cancel(String subscriptionId) { - return cancelWithResponse(subscriptionId, Context.NONE).getValue(); - } - - /** - * The operation to rename a subscription. - * - * @param subscriptionId Subscription Id. - * @param body Subscription Name. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being renamed along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> renameWithResponseAsync(String subscriptionId, - SubscriptionName body) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (subscriptionId == null) { - return Mono.error(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); - } - if (body == null) { - return Mono.error(new IllegalArgumentException("Parameter body is required and cannot be null.")); - } else { - body.validate(); - } - final String apiVersion = "2020-09-01"; - final String accept = "application/json"; - return FluxUtil - .withContext( - context -> service.rename(this.client.getEndpoint(), subscriptionId, apiVersion, body, accept, context)) - .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); - } - - /** - * The operation to rename a subscription. - * - * @param subscriptionId Subscription Id. - * @param body Subscription Name. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being renamed along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> renameWithResponseAsync(String subscriptionId, - SubscriptionName body, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (subscriptionId == null) { - return Mono.error(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); - } - if (body == null) { - return Mono.error(new IllegalArgumentException("Parameter body is required and cannot be null.")); - } else { - body.validate(); - } - final String apiVersion = "2020-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.rename(this.client.getEndpoint(), subscriptionId, apiVersion, body, accept, context); - } - - /** - * The operation to rename a subscription. + * Get the status of the pending Microsoft.Subscription API operations. * - * @param subscriptionId Subscription Id. - * @param body Subscription Name. + * @param operationId The operation ID, which can be found from the Location field in the generate recommendation + * response header. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being renamed on successful completion of {@link Mono}. + * @return the status of the pending Microsoft.Subscription API operations on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono renameAsync(String subscriptionId, SubscriptionName body) { - return renameWithResponseAsync(subscriptionId, body).flatMap(res -> Mono.justOrEmpty(res.getValue())); + private Mono getAsync(String operationId) { + return getWithResponseAsync(operationId).flatMap(res -> Mono.justOrEmpty(res.getValue())); } /** - * The operation to rename a subscription. + * Get the status of the pending Microsoft.Subscription API operations. * - * @param subscriptionId Subscription Id. - * @param body Subscription Name. + * @param operationId The operation ID, which can be found from the Location field in the generate recommendation + * response header. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being renamed along with {@link Response}. + * @return the status of the pending Microsoft.Subscription API operations. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response renameWithResponse(String subscriptionId, SubscriptionName body, - Context context) { - return renameWithResponseAsync(subscriptionId, body, context).block(); - } - - /** - * The operation to rename a subscription. - * - * @param subscriptionId Subscription Id. - * @param body Subscription Name. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being renamed. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public RenamedSubscriptionIdInner rename(String subscriptionId, SubscriptionName body) { - return renameWithResponse(subscriptionId, body, Context.NONE).getValue(); - } - - /** - * The operation to enable a subscription. - * - * @param subscriptionId Subscription Id. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being enabled along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> enableWithResponseAsync(String subscriptionId) { + public SubscriptionOperationsGetResponse getWithResponse(String operationId, Context context) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } - if (subscriptionId == null) { - return Mono.error(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); + if (operationId == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter operationId is required and cannot be null.")); } - final String apiVersion = "2020-09-01"; final String accept = "application/json"; - return FluxUtil - .withContext( - context -> service.enable(this.client.getEndpoint(), subscriptionId, apiVersion, accept, context)) - .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + return service.getSync(this.client.getEndpoint(), operationId, this.client.getApiVersion(), accept, context); } /** - * The operation to enable a subscription. + * Get the status of the pending Microsoft.Subscription API operations. * - * @param subscriptionId Subscription Id. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being enabled along with {@link Response} on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> enableWithResponseAsync(String subscriptionId, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (subscriptionId == null) { - return Mono.error(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); - } - final String apiVersion = "2020-09-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.enable(this.client.getEndpoint(), subscriptionId, apiVersion, accept, context); - } - - /** - * The operation to enable a subscription. - * - * @param subscriptionId Subscription Id. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being enabled on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono enableAsync(String subscriptionId) { - return enableWithResponseAsync(subscriptionId).flatMap(res -> Mono.justOrEmpty(res.getValue())); - } - - /** - * The operation to enable a subscription. - * - * @param subscriptionId Subscription Id. - * @param context The context to associate with this operation. + * @param operationId The operation ID, which can be found from the Location field in the generate recommendation + * response header. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being enabled along with {@link Response}. + * @return the status of the pending Microsoft.Subscription API operations. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response enableWithResponse(String subscriptionId, Context context) { - return enableWithResponseAsync(subscriptionId, context).block(); + public SubscriptionCreationResultInner get(String operationId) { + return getWithResponse(operationId, Context.NONE).getValue(); } - /** - * The operation to enable a subscription. - * - * @param subscriptionId Subscription Id. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being enabled. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public EnabledSubscriptionIdInner enable(String subscriptionId) { - return enableWithResponse(subscriptionId, Context.NONE).getValue(); - } + private static final ClientLogger LOGGER = new ClientLogger(SubscriptionOperationsClientImpl.class); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionOperationsImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionOperationsImpl.java index 461a3a9fcfe2..459591569bb5 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionOperationsImpl.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionOperationsImpl.java @@ -9,14 +9,10 @@ import com.azure.core.util.Context; import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.subscription.fluent.SubscriptionOperationsClient; -import com.azure.resourcemanager.subscription.fluent.models.CanceledSubscriptionIdInner; -import com.azure.resourcemanager.subscription.fluent.models.EnabledSubscriptionIdInner; -import com.azure.resourcemanager.subscription.fluent.models.RenamedSubscriptionIdInner; -import com.azure.resourcemanager.subscription.models.CanceledSubscriptionId; -import com.azure.resourcemanager.subscription.models.EnabledSubscriptionId; -import com.azure.resourcemanager.subscription.models.RenamedSubscriptionId; -import com.azure.resourcemanager.subscription.models.SubscriptionName; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionCreationResultInner; +import com.azure.resourcemanager.subscription.models.SubscriptionCreationResult; import com.azure.resourcemanager.subscription.models.SubscriptionOperations; +import com.azure.resourcemanager.subscription.models.SubscriptionOperationsGetResponse; public final class SubscriptionOperationsImpl implements SubscriptionOperations { private static final ClientLogger LOGGER = new ClientLogger(SubscriptionOperationsImpl.class); @@ -31,60 +27,20 @@ public SubscriptionOperationsImpl(SubscriptionOperationsClient innerClient, this.serviceManager = serviceManager; } - public Response cancelWithResponse(String subscriptionId, Context context) { - Response inner = this.serviceClient().cancelWithResponse(subscriptionId, context); + public Response getWithResponse(String operationId, Context context) { + SubscriptionOperationsGetResponse inner = this.serviceClient().getWithResponse(operationId, context); if (inner != null) { return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), - new CanceledSubscriptionIdImpl(inner.getValue(), this.manager())); + new SubscriptionCreationResultImpl(inner.getValue(), this.manager())); } else { return null; } } - public CanceledSubscriptionId cancel(String subscriptionId) { - CanceledSubscriptionIdInner inner = this.serviceClient().cancel(subscriptionId); + public SubscriptionCreationResult get(String operationId) { + SubscriptionCreationResultInner inner = this.serviceClient().get(operationId); if (inner != null) { - return new CanceledSubscriptionIdImpl(inner, this.manager()); - } else { - return null; - } - } - - public Response renameWithResponse(String subscriptionId, SubscriptionName body, - Context context) { - Response inner - = this.serviceClient().renameWithResponse(subscriptionId, body, context); - if (inner != null) { - return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), - new RenamedSubscriptionIdImpl(inner.getValue(), this.manager())); - } else { - return null; - } - } - - public RenamedSubscriptionId rename(String subscriptionId, SubscriptionName body) { - RenamedSubscriptionIdInner inner = this.serviceClient().rename(subscriptionId, body); - if (inner != null) { - return new RenamedSubscriptionIdImpl(inner, this.manager()); - } else { - return null; - } - } - - public Response enableWithResponse(String subscriptionId, Context context) { - Response inner = this.serviceClient().enableWithResponse(subscriptionId, context); - if (inner != null) { - return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), - new EnabledSubscriptionIdImpl(inner.getValue(), this.manager())); - } else { - return null; - } - } - - public EnabledSubscriptionId enable(String subscriptionId) { - EnabledSubscriptionIdInner inner = this.serviceClient().enable(subscriptionId); - if (inner != null) { - return new EnabledSubscriptionIdImpl(inner, this.manager()); + return new SubscriptionCreationResultImpl(inner, this.manager()); } else { return null; } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionPoliciesClientImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionPoliciesClientImpl.java new file mode 100644 index 000000000000..af1b59f7d5d4 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionPoliciesClientImpl.java @@ -0,0 +1,474 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.implementation; + +import com.azure.core.annotation.BodyParam; +import com.azure.core.annotation.ExpectedResponses; +import com.azure.core.annotation.Get; +import com.azure.core.annotation.HeaderParam; +import com.azure.core.annotation.Headers; +import com.azure.core.annotation.Host; +import com.azure.core.annotation.HostParam; +import com.azure.core.annotation.PathParam; +import com.azure.core.annotation.Put; +import com.azure.core.annotation.QueryParam; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceInterface; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.annotation.UnexpectedResponseExceptionType; +import com.azure.core.http.rest.PagedFlux; +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.PagedResponse; +import com.azure.core.http.rest.PagedResponseBase; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.RestProxy; +import com.azure.core.management.exception.ManagementException; +import com.azure.core.util.Context; +import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; +import com.azure.resourcemanager.subscription.fluent.SubscriptionPoliciesClient; +import com.azure.resourcemanager.subscription.fluent.models.GetTenantPolicyResponseInner; +import com.azure.resourcemanager.subscription.models.GetTenantPolicyListResponse; +import com.azure.resourcemanager.subscription.models.PutTenantPolicyRequestProperties; +import reactor.core.publisher.Mono; + +/** + * An instance of this class provides access to all the operations defined in SubscriptionPoliciesClient. + */ +public final class SubscriptionPoliciesClientImpl implements SubscriptionPoliciesClient { + /** + * The proxy service used to perform REST calls. + */ + private final SubscriptionPoliciesService service; + + /** + * The service client containing this operation class. + */ + private final SubscriptionClientImpl client; + + /** + * Initializes an instance of SubscriptionPoliciesClientImpl. + * + * @param client the instance of the service client containing this operation class. + */ + SubscriptionPoliciesClientImpl(SubscriptionClientImpl client) { + this.service = RestProxy.create(SubscriptionPoliciesService.class, client.getHttpPipeline(), + client.getSerializerAdapter()); + this.client = client; + } + + /** + * The interface defining all the services for SubscriptionClientSubscriptionPolicies to be used by the proxy + * service to perform REST calls. + */ + @Host("{$host}") + @ServiceInterface(name = "SubscriptionClientSubscriptionPolicies") + public interface SubscriptionPoliciesService { + @Headers({ "Content-Type: application/json" }) + @Put("/providers/Microsoft.Subscription/policies/default") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> addUpdatePolicyForTenant(@HostParam("$host") String endpoint, + @QueryParam("api-version") String apiVersion, + @BodyParam("application/json") PutTenantPolicyRequestProperties body, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Content-Type: application/json" }) + @Put("/providers/Microsoft.Subscription/policies/default") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response addUpdatePolicyForTenantSync(@HostParam("$host") String endpoint, + @QueryParam("api-version") String apiVersion, + @BodyParam("application/json") PutTenantPolicyRequestProperties body, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/providers/Microsoft.Subscription/policies/default") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> getPolicyForTenant(@HostParam("$host") String endpoint, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/providers/Microsoft.Subscription/policies/default") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response getPolicyForTenantSync(@HostParam("$host") String endpoint, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/providers/Microsoft.Subscription/policies") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> listPolicyForTenant(@HostParam("$host") String endpoint, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/providers/Microsoft.Subscription/policies") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listPolicyForTenantSync(@HostParam("$host") String endpoint, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> listPolicyForTenantNext( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response listPolicyForTenantNextSync( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("$host") String endpoint, + @HeaderParam("Accept") String accept, Context context); + } + + /** + * Create or Update Subscription tenant policy for user's tenant. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return tenant policy Information along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> + addUpdatePolicyForTenantWithResponseAsync(PutTenantPolicyRequestProperties body) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (body == null) { + return Mono.error(new IllegalArgumentException("Parameter body is required and cannot be null.")); + } else { + body.validate(); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.addUpdatePolicyForTenant(this.client.getEndpoint(), + this.client.getApiVersion(), body, accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Create or Update Subscription tenant policy for user's tenant. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return tenant policy Information on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono addUpdatePolicyForTenantAsync(PutTenantPolicyRequestProperties body) { + return addUpdatePolicyForTenantWithResponseAsync(body).flatMap(res -> Mono.justOrEmpty(res.getValue())); + } + + /** + * Create or Update Subscription tenant policy for user's tenant. + * + * @param body The body parameter. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return tenant policy Information along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response + addUpdatePolicyForTenantWithResponse(PutTenantPolicyRequestProperties body, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (body == null) { + throw LOGGER.atError().log(new IllegalArgumentException("Parameter body is required and cannot be null.")); + } else { + body.validate(); + } + final String accept = "application/json"; + return service.addUpdatePolicyForTenantSync(this.client.getEndpoint(), this.client.getApiVersion(), body, + accept, context); + } + + /** + * Create or Update Subscription tenant policy for user's tenant. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return tenant policy Information. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public GetTenantPolicyResponseInner addUpdatePolicyForTenant(PutTenantPolicyRequestProperties body) { + return addUpdatePolicyForTenantWithResponse(body, Context.NONE).getValue(); + } + + /** + * Get the subscription tenant policy for the user's tenant. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant along with {@link Response} on successful completion + * of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> getPolicyForTenantWithResponseAsync() { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.getPolicyForTenant(this.client.getEndpoint(), this.client.getApiVersion(), + accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Get the subscription tenant policy for the user's tenant. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono getPolicyForTenantAsync() { + return getPolicyForTenantWithResponseAsync().flatMap(res -> Mono.justOrEmpty(res.getValue())); + } + + /** + * Get the subscription tenant policy for the user's tenant. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getPolicyForTenantWithResponse(Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getPolicyForTenantSync(this.client.getEndpoint(), this.client.getApiVersion(), accept, context); + } + + /** + * Get the subscription tenant policy for the user's tenant. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public GetTenantPolicyResponseInner getPolicyForTenant() { + return getPolicyForTenantWithResponse(Context.NONE).getValue(); + } + + /** + * Get the subscription tenant policy for the user's tenant. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant along with {@link PagedResponse} on successful + * completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> listPolicyForTenantSinglePageAsync() { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.listPolicyForTenant(this.client.getEndpoint(), this.client.getApiVersion(), + accept, context)) + .>map(res -> new PagedResponseBase<>(res.getRequest(), + res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Get the subscription tenant policy for the user's tenant. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant as paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux listPolicyForTenantAsync() { + return new PagedFlux<>(() -> listPolicyForTenantSinglePageAsync(), + nextLink -> listPolicyForTenantNextSinglePageAsync(nextLink)); + } + + /** + * Get the subscription tenant policy for the user's tenant. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listPolicyForTenantSinglePage() { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listPolicyForTenantSync(this.client.getEndpoint(), + this.client.getApiVersion(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + + /** + * Get the subscription tenant policy for the user's tenant. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listPolicyForTenantSinglePage(Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listPolicyForTenantSync(this.client.getEndpoint(), this.client.getApiVersion(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + + /** + * Get the subscription tenant policy for the user's tenant. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listPolicyForTenant() { + return new PagedIterable<>(() -> listPolicyForTenantSinglePage(), + nextLink -> listPolicyForTenantNextSinglePage(nextLink)); + } + + /** + * Get the subscription tenant policy for the user's tenant. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listPolicyForTenant(Context context) { + return new PagedIterable<>(() -> listPolicyForTenantSinglePage(context), + nextLink -> listPolicyForTenantNextSinglePage(nextLink, context)); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant along with {@link PagedResponse} on successful + * completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> listPolicyForTenantNextSinglePageAsync(String nextLink) { + if (nextLink == null) { + return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext( + context -> service.listPolicyForTenantNext(nextLink, this.client.getEndpoint(), accept, context)) + .>map(res -> new PagedResponseBase<>(res.getRequest(), + res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listPolicyForTenantNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listPolicyForTenantNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listPolicyForTenantNextSinglePage(String nextLink, + Context context) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.listPolicyForTenantNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), + res.getValue().nextLink(), null); + } + + private static final ClientLogger LOGGER = new ClientLogger(SubscriptionPoliciesClientImpl.class); +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionPoliciesImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionPoliciesImpl.java new file mode 100644 index 000000000000..b7d4b91d34e3 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionPoliciesImpl.java @@ -0,0 +1,88 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.implementation; + +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.SimpleResponse; +import com.azure.core.util.Context; +import com.azure.core.util.logging.ClientLogger; +import com.azure.resourcemanager.subscription.fluent.SubscriptionPoliciesClient; +import com.azure.resourcemanager.subscription.fluent.models.GetTenantPolicyResponseInner; +import com.azure.resourcemanager.subscription.models.GetTenantPolicyResponse; +import com.azure.resourcemanager.subscription.models.PutTenantPolicyRequestProperties; +import com.azure.resourcemanager.subscription.models.SubscriptionPolicies; + +public final class SubscriptionPoliciesImpl implements SubscriptionPolicies { + private static final ClientLogger LOGGER = new ClientLogger(SubscriptionPoliciesImpl.class); + + private final SubscriptionPoliciesClient innerClient; + + private final com.azure.resourcemanager.subscription.SubscriptionManager serviceManager; + + public SubscriptionPoliciesImpl(SubscriptionPoliciesClient innerClient, + com.azure.resourcemanager.subscription.SubscriptionManager serviceManager) { + this.innerClient = innerClient; + this.serviceManager = serviceManager; + } + + public Response addUpdatePolicyForTenantWithResponse(PutTenantPolicyRequestProperties body, + Context context) { + Response inner + = this.serviceClient().addUpdatePolicyForTenantWithResponse(body, context); + if (inner != null) { + return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), + new GetTenantPolicyResponseImpl(inner.getValue(), this.manager())); + } else { + return null; + } + } + + public GetTenantPolicyResponse addUpdatePolicyForTenant(PutTenantPolicyRequestProperties body) { + GetTenantPolicyResponseInner inner = this.serviceClient().addUpdatePolicyForTenant(body); + if (inner != null) { + return new GetTenantPolicyResponseImpl(inner, this.manager()); + } else { + return null; + } + } + + public Response getPolicyForTenantWithResponse(Context context) { + Response inner = this.serviceClient().getPolicyForTenantWithResponse(context); + if (inner != null) { + return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), + new GetTenantPolicyResponseImpl(inner.getValue(), this.manager())); + } else { + return null; + } + } + + public GetTenantPolicyResponse getPolicyForTenant() { + GetTenantPolicyResponseInner inner = this.serviceClient().getPolicyForTenant(); + if (inner != null) { + return new GetTenantPolicyResponseImpl(inner, this.manager()); + } else { + return null; + } + } + + public PagedIterable listPolicyForTenant() { + PagedIterable inner = this.serviceClient().listPolicyForTenant(); + return ResourceManagerUtils.mapPage(inner, inner1 -> new GetTenantPolicyResponseImpl(inner1, this.manager())); + } + + public PagedIterable listPolicyForTenant(Context context) { + PagedIterable inner = this.serviceClient().listPolicyForTenant(context); + return ResourceManagerUtils.mapPage(inner, inner1 -> new GetTenantPolicyResponseImpl(inner1, this.manager())); + } + + private SubscriptionPoliciesClient serviceClient() { + return this.innerClient; + } + + private com.azure.resourcemanager.subscription.SubscriptionManager manager() { + return this.serviceManager; + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionsClientImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionsClientImpl.java index 87fd9ef2bbf4..d875f196d7fc 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionsClientImpl.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionsClientImpl.java @@ -4,6 +4,7 @@ package com.azure.resourcemanager.subscription.implementation; +import com.azure.core.annotation.BodyParam; import com.azure.core.annotation.ExpectedResponses; import com.azure.core.annotation.Get; import com.azure.core.annotation.HeaderParam; @@ -11,25 +12,31 @@ import com.azure.core.annotation.Host; import com.azure.core.annotation.HostParam; import com.azure.core.annotation.PathParam; +import com.azure.core.annotation.Post; import com.azure.core.annotation.QueryParam; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceInterface; import com.azure.core.annotation.ServiceMethod; import com.azure.core.annotation.UnexpectedResponseExceptionType; -import com.azure.core.http.rest.PagedFlux; -import com.azure.core.http.rest.PagedIterable; -import com.azure.core.http.rest.PagedResponse; -import com.azure.core.http.rest.PagedResponseBase; import com.azure.core.http.rest.Response; import com.azure.core.http.rest.RestProxy; import com.azure.core.management.exception.ManagementException; +import com.azure.core.management.polling.PollResult; +import com.azure.core.util.BinaryData; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; +import com.azure.core.util.logging.ClientLogger; +import com.azure.core.util.polling.PollerFlux; +import com.azure.core.util.polling.SyncPoller; import com.azure.resourcemanager.subscription.fluent.SubscriptionsClient; -import com.azure.resourcemanager.subscription.fluent.models.LocationInner; -import com.azure.resourcemanager.subscription.fluent.models.SubscriptionInner; -import com.azure.resourcemanager.subscription.models.LocationListResult; -import com.azure.resourcemanager.subscription.models.SubscriptionListResult; +import com.azure.resourcemanager.subscription.fluent.models.AcceptOwnershipStatusResponseInner; +import com.azure.resourcemanager.subscription.fluent.models.CanceledSubscriptionIdInner; +import com.azure.resourcemanager.subscription.fluent.models.EnabledSubscriptionIdInner; +import com.azure.resourcemanager.subscription.fluent.models.RenamedSubscriptionIdInner; +import com.azure.resourcemanager.subscription.models.AcceptOwnershipRequest; +import com.azure.resourcemanager.subscription.models.SubscriptionName; +import java.nio.ByteBuffer; +import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; /** @@ -62,54 +69,104 @@ public final class SubscriptionsClientImpl implements SubscriptionsClient { * perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "SubscriptionClientSu") + @ServiceInterface(name = "SubscriptionClientSubscriptions") public interface SubscriptionsService { @Headers({ "Content-Type: application/json" }) - @Get("/subscriptions/{subscriptionId}/locations") + @Post("/subscriptions/{subscriptionId}/providers/Microsoft.Subscription/cancel") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> listLocations(@HostParam("$host") String endpoint, + Mono> cancel(@HostParam("$host") String endpoint, @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) - @Get("/subscriptions/{subscriptionId}") + @Post("/subscriptions/{subscriptionId}/providers/Microsoft.Subscription/cancel") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> get(@HostParam("$host") String endpoint, + Response cancelSync(@HostParam("$host") String endpoint, @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) - @Get("/subscriptions") + @Post("/subscriptions/{subscriptionId}/providers/Microsoft.Subscription/rename") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> list(@HostParam("$host") String endpoint, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + Mono> rename(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + @BodyParam("application/json") SubscriptionName body, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/providers/Microsoft.Subscription/rename") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response renameSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + @BodyParam("application/json") SubscriptionName body, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/providers/Microsoft.Subscription/enable") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> enable(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, Context context); @Headers({ "Content-Type: application/json" }) - @Get("{nextLink}") + @Post("/subscriptions/{subscriptionId}/providers/Microsoft.Subscription/enable") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(ManagementException.class) - Mono> listNext(@PathParam(value = "nextLink", encoded = true) String nextLink, - @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); + Response enableSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/providers/Microsoft.Subscription/subscriptions/{subscriptionId}/acceptOwnership") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono>> acceptOwnership(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + @BodyParam("application/json") AcceptOwnershipRequest body, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/providers/Microsoft.Subscription/subscriptions/{subscriptionId}/acceptOwnership") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response acceptOwnershipSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + @BodyParam("application/json") AcceptOwnershipRequest body, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/providers/Microsoft.Subscription/subscriptions/{subscriptionId}/acceptOwnershipStatus") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> acceptOwnershipStatus(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/providers/Microsoft.Subscription/subscriptions/{subscriptionId}/acceptOwnershipStatus") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response acceptOwnershipStatusSync(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, Context context); } /** - * Gets all available geo-locations. - * - * This operation provides all the locations that are available for resource providers; however, each resource - * provider may support a subset of this list. + * The operation to cancel a subscription. * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return location list operation response along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return the ID of the canceled subscription along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listLocationsSinglePageAsync(String subscriptionId) { + private Mono> cancelWithResponseAsync(String subscriptionId) { if (this.client.getEndpoint() == null) { return Mono.error( new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); @@ -117,155 +174,175 @@ private Mono> listLocationsSinglePageAsync(String s if (subscriptionId == null) { return Mono.error(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); } - final String apiVersion = "2016-06-01"; final String accept = "application/json"; - return FluxUtil.withContext( - context -> service.listLocations(this.client.getEndpoint(), subscriptionId, apiVersion, accept, context)) - .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), - res.getHeaders(), res.getValue().value(), null, null)) + return FluxUtil + .withContext(context -> service.cancel(this.client.getEndpoint(), subscriptionId, + this.client.getApiVersion(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** - * Gets all available geo-locations. + * The operation to cancel a subscription. * - * This operation provides all the locations that are available for resource providers; however, each resource - * provider may support a subset of this list. + * @param subscriptionId Subscription Id. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the ID of the canceled subscription on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono cancelAsync(String subscriptionId) { + return cancelWithResponseAsync(subscriptionId).flatMap(res -> Mono.justOrEmpty(res.getValue())); + } + + /** + * The operation to cancel a subscription. * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return location list operation response along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return the ID of the canceled subscription along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listLocationsSinglePageAsync(String subscriptionId, Context context) { + public Response cancelWithResponse(String subscriptionId, Context context) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); } if (subscriptionId == null) { - return Mono.error(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); } - final String apiVersion = "2016-06-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.listLocations(this.client.getEndpoint(), subscriptionId, apiVersion, accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), null, null)); + return service.cancelSync(this.client.getEndpoint(), subscriptionId, this.client.getApiVersion(), accept, + context); } /** - * Gets all available geo-locations. + * The operation to cancel a subscription. * - * This operation provides all the locations that are available for resource providers; however, each resource - * provider may support a subset of this list. - * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return location list operation response as paginated response with {@link PagedFlux}. + * @return the ID of the canceled subscription. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listLocationsAsync(String subscriptionId) { - return new PagedFlux<>(() -> listLocationsSinglePageAsync(subscriptionId)); + @ServiceMethod(returns = ReturnType.SINGLE) + public CanceledSubscriptionIdInner cancel(String subscriptionId) { + return cancelWithResponse(subscriptionId, Context.NONE).getValue(); } /** - * Gets all available geo-locations. - * - * This operation provides all the locations that are available for resource providers; however, each resource - * provider may support a subset of this list. + * The operation to rename a subscription. * - * @param subscriptionId The ID of the target subscription. - * @param context The context to associate with this operation. + * @param subscriptionId Subscription Id. + * @param body Subscription Name. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return location list operation response as paginated response with {@link PagedFlux}. + * @return the ID of the subscriptions that is being renamed along with {@link Response} on successful completion of + * {@link Mono}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listLocationsAsync(String subscriptionId, Context context) { - return new PagedFlux<>(() -> listLocationsSinglePageAsync(subscriptionId, context)); + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> renameWithResponseAsync(String subscriptionId, + SubscriptionName body) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (subscriptionId == null) { + return Mono.error(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); + } + if (body == null) { + return Mono.error(new IllegalArgumentException("Parameter body is required and cannot be null.")); + } else { + body.validate(); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.rename(this.client.getEndpoint(), subscriptionId, + this.client.getApiVersion(), body, accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** - * Gets all available geo-locations. - * - * This operation provides all the locations that are available for resource providers; however, each resource - * provider may support a subset of this list. + * The operation to rename a subscription. * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. + * @param body Subscription Name. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return location list operation response as paginated response with {@link PagedIterable}. + * @return the ID of the subscriptions that is being renamed on successful completion of {@link Mono}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listLocations(String subscriptionId) { - return new PagedIterable<>(listLocationsAsync(subscriptionId)); + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono renameAsync(String subscriptionId, SubscriptionName body) { + return renameWithResponseAsync(subscriptionId, body).flatMap(res -> Mono.justOrEmpty(res.getValue())); } /** - * Gets all available geo-locations. + * The operation to rename a subscription. * - * This operation provides all the locations that are available for resource providers; however, each resource - * provider may support a subset of this list. - * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. + * @param body Subscription Name. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return location list operation response as paginated response with {@link PagedIterable}. + * @return the ID of the subscriptions that is being renamed along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listLocations(String subscriptionId, Context context) { - return new PagedIterable<>(listLocationsAsync(subscriptionId, context)); + @ServiceMethod(returns = ReturnType.SINGLE) + public Response renameWithResponse(String subscriptionId, SubscriptionName body, + Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (subscriptionId == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); + } + if (body == null) { + throw LOGGER.atError().log(new IllegalArgumentException("Parameter body is required and cannot be null.")); + } else { + body.validate(); + } + final String accept = "application/json"; + return service.renameSync(this.client.getEndpoint(), subscriptionId, this.client.getApiVersion(), body, accept, + context); } /** - * Gets details about a specified subscription. + * The operation to rename a subscription. * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. + * @param body Subscription Name. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return details about a specified subscription along with {@link Response} on successful completion of - * {@link Mono}. + * @return the ID of the subscriptions that is being renamed. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getWithResponseAsync(String subscriptionId) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (subscriptionId == null) { - return Mono.error(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); - } - final String apiVersion = "2016-06-01"; - final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.get(this.client.getEndpoint(), subscriptionId, apiVersion, accept, context)) - .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + public RenamedSubscriptionIdInner rename(String subscriptionId, SubscriptionName body) { + return renameWithResponse(subscriptionId, body, Context.NONE).getValue(); } /** - * Gets details about a specified subscription. + * The operation to enable a subscription. * - * @param subscriptionId The ID of the target subscription. - * @param context The context to associate with this operation. + * @param subscriptionId Subscription Id. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return details about a specified subscription along with {@link Response} on successful completion of + * @return the ID of the subscriptions that is being enabled along with {@link Response} on successful completion of * {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getWithResponseAsync(String subscriptionId, Context context) { + private Mono> enableWithResponseAsync(String subscriptionId) { if (this.client.getEndpoint() == null) { return Mono.error( new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); @@ -273,202 +350,340 @@ private Mono> getWithResponseAsync(String subscripti if (subscriptionId == null) { return Mono.error(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); } - final String apiVersion = "2016-06-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), subscriptionId, apiVersion, accept, context); + return FluxUtil + .withContext(context -> service.enable(this.client.getEndpoint(), subscriptionId, + this.client.getApiVersion(), accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** - * Gets details about a specified subscription. + * The operation to enable a subscription. * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return details about a specified subscription on successful completion of {@link Mono}. + * @return the ID of the subscriptions that is being enabled on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono getAsync(String subscriptionId) { - return getWithResponseAsync(subscriptionId).flatMap(res -> Mono.justOrEmpty(res.getValue())); + private Mono enableAsync(String subscriptionId) { + return enableWithResponseAsync(subscriptionId).flatMap(res -> Mono.justOrEmpty(res.getValue())); } /** - * Gets details about a specified subscription. + * The operation to enable a subscription. * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return details about a specified subscription along with {@link Response}. + * @return the ID of the subscriptions that is being enabled along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response getWithResponse(String subscriptionId, Context context) { - return getWithResponseAsync(subscriptionId, context).block(); + public Response enableWithResponse(String subscriptionId, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (subscriptionId == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); + } + final String accept = "application/json"; + return service.enableSync(this.client.getEndpoint(), subscriptionId, this.client.getApiVersion(), accept, + context); } /** - * Gets details about a specified subscription. + * The operation to enable a subscription. * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return details about a specified subscription. + * @return the ID of the subscriptions that is being enabled. */ @ServiceMethod(returns = ReturnType.SINGLE) - public SubscriptionInner get(String subscriptionId) { - return getWithResponse(subscriptionId, Context.NONE).getValue(); + public EnabledSubscriptionIdInner enable(String subscriptionId) { + return enableWithResponse(subscriptionId, Context.NONE).getValue(); } /** - * Gets all subscriptions for a tenant. + * Accept subscription ownership. * + * @param subscriptionId Subscription Id. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return all subscriptions for a tenant along with {@link PagedResponse} on successful completion of {@link Mono}. + * @return the {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSinglePageAsync() { + private Mono>> acceptOwnershipWithResponseAsync(String subscriptionId, + AcceptOwnershipRequest body) { if (this.client.getEndpoint() == null) { return Mono.error( new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); } - final String apiVersion = "2016-06-01"; + if (subscriptionId == null) { + return Mono.error(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); + } + if (body == null) { + return Mono.error(new IllegalArgumentException("Parameter body is required and cannot be null.")); + } else { + body.validate(); + } final String accept = "application/json"; - return FluxUtil.withContext(context -> service.list(this.client.getEndpoint(), apiVersion, accept, context)) - .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), - res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) + return FluxUtil + .withContext(context -> service.acceptOwnership(this.client.getEndpoint(), subscriptionId, + this.client.getApiVersion(), body, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** - * Gets all subscriptions for a tenant. + * Accept subscription ownership. * + * @param subscriptionId Subscription Id. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response acceptOwnershipWithResponse(String subscriptionId, AcceptOwnershipRequest body) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (subscriptionId == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); + } + if (body == null) { + throw LOGGER.atError().log(new IllegalArgumentException("Parameter body is required and cannot be null.")); + } else { + body.validate(); + } + final String accept = "application/json"; + return service.acceptOwnershipSync(this.client.getEndpoint(), subscriptionId, this.client.getApiVersion(), body, + accept, Context.NONE); + } + + /** + * Accept subscription ownership. + * + * @param subscriptionId Subscription Id. + * @param body The body parameter. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return all subscriptions for a tenant along with {@link PagedResponse} on successful completion of {@link Mono}. + * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSinglePageAsync(Context context) { + private Response acceptOwnershipWithResponse(String subscriptionId, AcceptOwnershipRequest body, + Context context) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (subscriptionId == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); + } + if (body == null) { + throw LOGGER.atError().log(new IllegalArgumentException("Parameter body is required and cannot be null.")); + } else { + body.validate(); } - final String apiVersion = "2016-06-01"; final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.list(this.client.getEndpoint(), apiVersion, accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + return service.acceptOwnershipSync(this.client.getEndpoint(), subscriptionId, this.client.getApiVersion(), body, + accept, context); + } + + /** + * Accept subscription ownership. + * + * @param subscriptionId Subscription Id. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link PollerFlux} for polling of long-running operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + private PollerFlux, Void> beginAcceptOwnershipAsync(String subscriptionId, + AcceptOwnershipRequest body) { + Mono>> mono = acceptOwnershipWithResponseAsync(subscriptionId, body); + return this.client.getLroResult(mono, this.client.getHttpPipeline(), Void.class, Void.class, + this.client.getContext()); } /** - * Gets all subscriptions for a tenant. + * Accept subscription ownership. * + * @param subscriptionId Subscription Id. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return all subscriptions for a tenant as paginated response with {@link PagedFlux}. + * @return the {@link SyncPoller} for polling of long-running operation. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync() { - return new PagedFlux<>(() -> listSinglePageAsync(), nextLink -> listNextSinglePageAsync(nextLink)); + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, Void> beginAcceptOwnership(String subscriptionId, AcceptOwnershipRequest body) { + Response response = acceptOwnershipWithResponse(subscriptionId, body); + return this.client.getLroResult(response, Void.class, Void.class, Context.NONE); } /** - * Gets all subscriptions for a tenant. + * Accept subscription ownership. * + * @param subscriptionId Subscription Id. + * @param body The body parameter. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return all subscriptions for a tenant as paginated response with {@link PagedFlux}. + * @return the {@link SyncPoller} for polling of long-running operation. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync(Context context) { - return new PagedFlux<>(() -> listSinglePageAsync(context), - nextLink -> listNextSinglePageAsync(nextLink, context)); + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, Void> beginAcceptOwnership(String subscriptionId, AcceptOwnershipRequest body, + Context context) { + Response response = acceptOwnershipWithResponse(subscriptionId, body, context); + return this.client.getLroResult(response, Void.class, Void.class, context); } /** - * Gets all subscriptions for a tenant. + * Accept subscription ownership. * + * @param subscriptionId Subscription Id. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return A {@link Mono} that completes when a successful response is received. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono acceptOwnershipAsync(String subscriptionId, AcceptOwnershipRequest body) { + return beginAcceptOwnershipAsync(subscriptionId, body).last().flatMap(this.client::getLroFinalResultOrError); + } + + /** + * Accept subscription ownership. + * + * @param subscriptionId Subscription Id. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return all subscriptions for a tenant as paginated response with {@link PagedIterable}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable list() { - return new PagedIterable<>(listAsync()); + @ServiceMethod(returns = ReturnType.SINGLE) + public void acceptOwnership(String subscriptionId, AcceptOwnershipRequest body) { + beginAcceptOwnership(subscriptionId, body).getFinalResult(); } /** - * Gets all subscriptions for a tenant. + * Accept subscription ownership. * + * @param subscriptionId Subscription Id. + * @param body The body parameter. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return all subscriptions for a tenant as paginated response with {@link PagedIterable}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable list(Context context) { - return new PagedIterable<>(listAsync(context)); + @ServiceMethod(returns = ReturnType.SINGLE) + public void acceptOwnership(String subscriptionId, AcceptOwnershipRequest body, Context context) { + beginAcceptOwnership(subscriptionId, body, context).getFinalResult(); } /** - * Get the next page of items. + * Accept subscription ownership status. * - * @param nextLink The URL to get the next list of items. + * @param subscriptionId Subscription Id. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return subscription list operation response along with {@link PagedResponse} on successful completion of + * @return subscription Accept Ownership Response along with {@link Response} on successful completion of * {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listNextSinglePageAsync(String nextLink) { - if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); - } + private Mono> + acceptOwnershipStatusWithResponseAsync(String subscriptionId) { if (this.client.getEndpoint() == null) { return Mono.error( new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); } + if (subscriptionId == null) { + return Mono.error(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); + } final String accept = "application/json"; - return FluxUtil.withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context)) - .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), - res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) + return FluxUtil + .withContext(context -> service.acceptOwnershipStatus(this.client.getEndpoint(), subscriptionId, + this.client.getApiVersion(), accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** - * Get the next page of items. + * Accept subscription ownership status. * - * @param nextLink The URL to get the next list of items. + * @param subscriptionId Subscription Id. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return subscription Accept Ownership Response on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono acceptOwnershipStatusAsync(String subscriptionId) { + return acceptOwnershipStatusWithResponseAsync(subscriptionId).flatMap(res -> Mono.justOrEmpty(res.getValue())); + } + + /** + * Accept subscription ownership status. + * + * @param subscriptionId Subscription Id. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return subscription list operation response along with {@link PagedResponse} on successful completion of - * {@link Mono}. + * @return subscription Accept Ownership Response along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listNextSinglePageAsync(String nextLink, Context context) { - if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); - } + public Response acceptOwnershipStatusWithResponse(String subscriptionId, + Context context) { if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (subscriptionId == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.")); } final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.listNext(nextLink, this.client.getEndpoint(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); + return service.acceptOwnershipStatusSync(this.client.getEndpoint(), subscriptionId, this.client.getApiVersion(), + accept, context); } + + /** + * Accept subscription ownership status. + * + * @param subscriptionId Subscription Id. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return subscription Accept Ownership Response. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public AcceptOwnershipStatusResponseInner acceptOwnershipStatus(String subscriptionId) { + return acceptOwnershipStatusWithResponse(subscriptionId, Context.NONE).getValue(); + } + + private static final ClientLogger LOGGER = new ClientLogger(SubscriptionsClientImpl.class); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionsImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionsImpl.java index 7d18bb790bc2..94aeac190529 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionsImpl.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/SubscriptionsImpl.java @@ -4,16 +4,21 @@ package com.azure.resourcemanager.subscription.implementation; -import com.azure.core.http.rest.PagedIterable; import com.azure.core.http.rest.Response; import com.azure.core.http.rest.SimpleResponse; import com.azure.core.util.Context; import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.subscription.fluent.SubscriptionsClient; -import com.azure.resourcemanager.subscription.fluent.models.LocationInner; -import com.azure.resourcemanager.subscription.fluent.models.SubscriptionInner; -import com.azure.resourcemanager.subscription.models.Location; -import com.azure.resourcemanager.subscription.models.Subscription; +import com.azure.resourcemanager.subscription.fluent.models.AcceptOwnershipStatusResponseInner; +import com.azure.resourcemanager.subscription.fluent.models.CanceledSubscriptionIdInner; +import com.azure.resourcemanager.subscription.fluent.models.EnabledSubscriptionIdInner; +import com.azure.resourcemanager.subscription.fluent.models.RenamedSubscriptionIdInner; +import com.azure.resourcemanager.subscription.models.AcceptOwnershipRequest; +import com.azure.resourcemanager.subscription.models.AcceptOwnershipStatusResponse; +import com.azure.resourcemanager.subscription.models.CanceledSubscriptionId; +import com.azure.resourcemanager.subscription.models.EnabledSubscriptionId; +import com.azure.resourcemanager.subscription.models.RenamedSubscriptionId; +import com.azure.resourcemanager.subscription.models.SubscriptionName; import com.azure.resourcemanager.subscription.models.Subscriptions; public final class SubscriptionsImpl implements Subscriptions { @@ -29,43 +34,92 @@ public SubscriptionsImpl(SubscriptionsClient innerClient, this.serviceManager = serviceManager; } - public PagedIterable listLocations(String subscriptionId) { - PagedIterable inner = this.serviceClient().listLocations(subscriptionId); - return ResourceManagerUtils.mapPage(inner, inner1 -> new LocationImpl(inner1, this.manager())); + public Response cancelWithResponse(String subscriptionId, Context context) { + Response inner = this.serviceClient().cancelWithResponse(subscriptionId, context); + if (inner != null) { + return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), + new CanceledSubscriptionIdImpl(inner.getValue(), this.manager())); + } else { + return null; + } } - public PagedIterable listLocations(String subscriptionId, Context context) { - PagedIterable inner = this.serviceClient().listLocations(subscriptionId, context); - return ResourceManagerUtils.mapPage(inner, inner1 -> new LocationImpl(inner1, this.manager())); + public CanceledSubscriptionId cancel(String subscriptionId) { + CanceledSubscriptionIdInner inner = this.serviceClient().cancel(subscriptionId); + if (inner != null) { + return new CanceledSubscriptionIdImpl(inner, this.manager()); + } else { + return null; + } } - public Response getWithResponse(String subscriptionId, Context context) { - Response inner = this.serviceClient().getWithResponse(subscriptionId, context); + public Response renameWithResponse(String subscriptionId, SubscriptionName body, + Context context) { + Response inner + = this.serviceClient().renameWithResponse(subscriptionId, body, context); if (inner != null) { return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), - new SubscriptionImpl(inner.getValue(), this.manager())); + new RenamedSubscriptionIdImpl(inner.getValue(), this.manager())); } else { return null; } } - public Subscription get(String subscriptionId) { - SubscriptionInner inner = this.serviceClient().get(subscriptionId); + public RenamedSubscriptionId rename(String subscriptionId, SubscriptionName body) { + RenamedSubscriptionIdInner inner = this.serviceClient().rename(subscriptionId, body); if (inner != null) { - return new SubscriptionImpl(inner, this.manager()); + return new RenamedSubscriptionIdImpl(inner, this.manager()); } else { return null; } } - public PagedIterable list() { - PagedIterable inner = this.serviceClient().list(); - return ResourceManagerUtils.mapPage(inner, inner1 -> new SubscriptionImpl(inner1, this.manager())); + public Response enableWithResponse(String subscriptionId, Context context) { + Response inner = this.serviceClient().enableWithResponse(subscriptionId, context); + if (inner != null) { + return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), + new EnabledSubscriptionIdImpl(inner.getValue(), this.manager())); + } else { + return null; + } } - public PagedIterable list(Context context) { - PagedIterable inner = this.serviceClient().list(context); - return ResourceManagerUtils.mapPage(inner, inner1 -> new SubscriptionImpl(inner1, this.manager())); + public EnabledSubscriptionId enable(String subscriptionId) { + EnabledSubscriptionIdInner inner = this.serviceClient().enable(subscriptionId); + if (inner != null) { + return new EnabledSubscriptionIdImpl(inner, this.manager()); + } else { + return null; + } + } + + public void acceptOwnership(String subscriptionId, AcceptOwnershipRequest body) { + this.serviceClient().acceptOwnership(subscriptionId, body); + } + + public void acceptOwnership(String subscriptionId, AcceptOwnershipRequest body, Context context) { + this.serviceClient().acceptOwnership(subscriptionId, body, context); + } + + public Response acceptOwnershipStatusWithResponse(String subscriptionId, + Context context) { + Response inner + = this.serviceClient().acceptOwnershipStatusWithResponse(subscriptionId, context); + if (inner != null) { + return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), + new AcceptOwnershipStatusResponseImpl(inner.getValue(), this.manager())); + } else { + return null; + } + } + + public AcceptOwnershipStatusResponse acceptOwnershipStatus(String subscriptionId) { + AcceptOwnershipStatusResponseInner inner = this.serviceClient().acceptOwnershipStatus(subscriptionId); + if (inner != null) { + return new AcceptOwnershipStatusResponseImpl(inner, this.manager()); + } else { + return null; + } } private SubscriptionsClient serviceClient() { diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/TenantIdDescriptionImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/TenantIdDescriptionImpl.java deleted file mode 100644 index 8b7421c1c7f7..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/TenantIdDescriptionImpl.java +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.implementation; - -import com.azure.resourcemanager.subscription.fluent.models.TenantIdDescriptionInner; -import com.azure.resourcemanager.subscription.models.TenantIdDescription; - -public final class TenantIdDescriptionImpl implements TenantIdDescription { - private TenantIdDescriptionInner innerObject; - - private final com.azure.resourcemanager.subscription.SubscriptionManager serviceManager; - - TenantIdDescriptionImpl(TenantIdDescriptionInner innerObject, - com.azure.resourcemanager.subscription.SubscriptionManager serviceManager) { - this.innerObject = innerObject; - this.serviceManager = serviceManager; - } - - public String id() { - return this.innerModel().id(); - } - - public String tenantId() { - return this.innerModel().tenantId(); - } - - public String tenantCategory() { - return this.innerModel().tenantCategory(); - } - - public String country() { - return this.innerModel().country(); - } - - public String countryCode() { - return this.innerModel().countryCode(); - } - - public String displayName() { - return this.innerModel().displayName(); - } - - public String domains() { - return this.innerModel().domains(); - } - - public String defaultDomain() { - return this.innerModel().defaultDomain(); - } - - public String tenantType() { - return this.innerModel().tenantType(); - } - - public TenantIdDescriptionInner innerModel() { - return this.innerObject; - } - - private com.azure.resourcemanager.subscription.SubscriptionManager manager() { - return this.serviceManager; - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/TenantsClientImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/TenantsClientImpl.java deleted file mode 100644 index da1a73c14765..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/TenantsClientImpl.java +++ /dev/null @@ -1,226 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.implementation; - -import com.azure.core.annotation.ExpectedResponses; -import com.azure.core.annotation.Get; -import com.azure.core.annotation.HeaderParam; -import com.azure.core.annotation.Headers; -import com.azure.core.annotation.Host; -import com.azure.core.annotation.HostParam; -import com.azure.core.annotation.PathParam; -import com.azure.core.annotation.QueryParam; -import com.azure.core.annotation.ReturnType; -import com.azure.core.annotation.ServiceInterface; -import com.azure.core.annotation.ServiceMethod; -import com.azure.core.annotation.UnexpectedResponseExceptionType; -import com.azure.core.http.rest.PagedFlux; -import com.azure.core.http.rest.PagedIterable; -import com.azure.core.http.rest.PagedResponse; -import com.azure.core.http.rest.PagedResponseBase; -import com.azure.core.http.rest.Response; -import com.azure.core.http.rest.RestProxy; -import com.azure.core.management.exception.ManagementException; -import com.azure.core.util.Context; -import com.azure.core.util.FluxUtil; -import com.azure.resourcemanager.subscription.fluent.TenantsClient; -import com.azure.resourcemanager.subscription.fluent.models.TenantIdDescriptionInner; -import com.azure.resourcemanager.subscription.models.TenantListResult; -import reactor.core.publisher.Mono; - -/** - * An instance of this class provides access to all the operations defined in TenantsClient. - */ -public final class TenantsClientImpl implements TenantsClient { - /** - * The proxy service used to perform REST calls. - */ - private final TenantsService service; - - /** - * The service client containing this operation class. - */ - private final SubscriptionClientImpl client; - - /** - * Initializes an instance of TenantsClientImpl. - * - * @param client the instance of the service client containing this operation class. - */ - TenantsClientImpl(SubscriptionClientImpl client) { - this.service = RestProxy.create(TenantsService.class, client.getHttpPipeline(), client.getSerializerAdapter()); - this.client = client; - } - - /** - * The interface defining all the services for SubscriptionClientTenants to be used by the proxy service to perform - * REST calls. - */ - @Host("{$host}") - @ServiceInterface(name = "SubscriptionClientTe") - public interface TenantsService { - @Headers({ "Content-Type: application/json" }) - @Get("/tenants") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(ManagementException.class) - Mono> list(@HostParam("$host") String endpoint, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); - - @Headers({ "Content-Type: application/json" }) - @Get("{nextLink}") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(ManagementException.class) - Mono> listNext(@PathParam(value = "nextLink", encoded = true) String nextLink, - @HostParam("$host") String endpoint, @HeaderParam("Accept") String accept, Context context); - } - - /** - * Gets the tenants for your account. - * - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the tenants for your account along with {@link PagedResponse} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSinglePageAsync() { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - final String apiVersion = "2016-06-01"; - final String accept = "application/json"; - return FluxUtil.withContext(context -> service.list(this.client.getEndpoint(), apiVersion, accept, context)) - .>map(res -> new PagedResponseBase<>(res.getRequest(), - res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) - .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); - } - - /** - * Gets the tenants for your account. - * - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the tenants for your account along with {@link PagedResponse} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSinglePageAsync(Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - final String apiVersion = "2016-06-01"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.list(this.client.getEndpoint(), apiVersion, accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); - } - - /** - * Gets the tenants for your account. - * - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the tenants for your account as paginated response with {@link PagedFlux}. - */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync() { - return new PagedFlux<>(() -> listSinglePageAsync(), nextLink -> listNextSinglePageAsync(nextLink)); - } - - /** - * Gets the tenants for your account. - * - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the tenants for your account as paginated response with {@link PagedFlux}. - */ - @ServiceMethod(returns = ReturnType.COLLECTION) - private PagedFlux listAsync(Context context) { - return new PagedFlux<>(() -> listSinglePageAsync(context), - nextLink -> listNextSinglePageAsync(nextLink, context)); - } - - /** - * Gets the tenants for your account. - * - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the tenants for your account as paginated response with {@link PagedIterable}. - */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable list() { - return new PagedIterable<>(listAsync()); - } - - /** - * Gets the tenants for your account. - * - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the tenants for your account as paginated response with {@link PagedIterable}. - */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable list(Context context) { - return new PagedIterable<>(listAsync(context)); - } - - /** - * Get the next page of items. - * - * @param nextLink The URL to get the next list of items. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return tenant Ids information along with {@link PagedResponse} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listNextSinglePageAsync(String nextLink) { - if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); - } - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - final String accept = "application/json"; - return FluxUtil.withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context)) - .>map(res -> new PagedResponseBase<>(res.getRequest(), - res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) - .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); - } - - /** - * Get the next page of items. - * - * @param nextLink The URL to get the next list of items. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return tenant Ids information along with {@link PagedResponse} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listNextSinglePageAsync(String nextLink, Context context) { - if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); - } - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.listNext(nextLink, this.client.getEndpoint(), accept, context) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - res.getValue().value(), res.getValue().nextLink(), null)); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/TenantsImpl.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/TenantsImpl.java deleted file mode 100644 index 3969d2e1cb94..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/implementation/TenantsImpl.java +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.implementation; - -import com.azure.core.http.rest.PagedIterable; -import com.azure.core.util.Context; -import com.azure.core.util.logging.ClientLogger; -import com.azure.resourcemanager.subscription.fluent.TenantsClient; -import com.azure.resourcemanager.subscription.fluent.models.TenantIdDescriptionInner; -import com.azure.resourcemanager.subscription.models.TenantIdDescription; -import com.azure.resourcemanager.subscription.models.Tenants; - -public final class TenantsImpl implements Tenants { - private static final ClientLogger LOGGER = new ClientLogger(TenantsImpl.class); - - private final TenantsClient innerClient; - - private final com.azure.resourcemanager.subscription.SubscriptionManager serviceManager; - - public TenantsImpl(TenantsClient innerClient, - com.azure.resourcemanager.subscription.SubscriptionManager serviceManager) { - this.innerClient = innerClient; - this.serviceManager = serviceManager; - } - - public PagedIterable list() { - PagedIterable inner = this.serviceClient().list(); - return ResourceManagerUtils.mapPage(inner, inner1 -> new TenantIdDescriptionImpl(inner1, this.manager())); - } - - public PagedIterable list(Context context) { - PagedIterable inner = this.serviceClient().list(context); - return ResourceManagerUtils.mapPage(inner, inner1 -> new TenantIdDescriptionImpl(inner1, this.manager())); - } - - private TenantsClient serviceClient() { - return this.innerClient; - } - - private com.azure.resourcemanager.subscription.SubscriptionManager manager() { - return this.serviceManager; - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnership.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnership.java new file mode 100644 index 000000000000..5d4dc30933e1 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnership.java @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The accept ownership state of the resource. + */ +public final class AcceptOwnership extends ExpandableStringEnum { + /** + * Static value Pending for AcceptOwnership. + */ + public static final AcceptOwnership PENDING = fromString("Pending"); + + /** + * Static value Completed for AcceptOwnership. + */ + public static final AcceptOwnership COMPLETED = fromString("Completed"); + + /** + * Static value Expired for AcceptOwnership. + */ + public static final AcceptOwnership EXPIRED = fromString("Expired"); + + /** + * Creates a new instance of AcceptOwnership value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Deprecated + public AcceptOwnership() { + } + + /** + * Creates or finds a AcceptOwnership from its string representation. + * + * @param name a name to look for. + * @return the corresponding AcceptOwnership. + */ + public static AcceptOwnership fromString(String name) { + return fromString(name, AcceptOwnership.class); + } + + /** + * Gets known AcceptOwnership values. + * + * @return known AcceptOwnership values. + */ + public static Collection values() { + return values(AcceptOwnership.class); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnershipRequest.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnershipRequest.java new file mode 100644 index 000000000000..7e4028eb97b8 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnershipRequest.java @@ -0,0 +1,96 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The parameters required to accept subscription ownership. + */ +@Fluent +public final class AcceptOwnershipRequest implements JsonSerializable { + /* + * Accept subscription ownership request properties. + */ + private AcceptOwnershipRequestProperties properties; + + /** + * Creates an instance of AcceptOwnershipRequest class. + */ + public AcceptOwnershipRequest() { + } + + /** + * Get the properties property: Accept subscription ownership request properties. + * + * @return the properties value. + */ + public AcceptOwnershipRequestProperties properties() { + return this.properties; + } + + /** + * Set the properties property: Accept subscription ownership request properties. + * + * @param properties the properties value to set. + * @return the AcceptOwnershipRequest object itself. + */ + public AcceptOwnershipRequest withProperties(AcceptOwnershipRequestProperties properties) { + this.properties = properties; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (properties() != null) { + properties().validate(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("properties", this.properties); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of AcceptOwnershipRequest from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of AcceptOwnershipRequest if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the AcceptOwnershipRequest. + */ + public static AcceptOwnershipRequest fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + AcceptOwnershipRequest deserializedAcceptOwnershipRequest = new AcceptOwnershipRequest(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("properties".equals(fieldName)) { + deserializedAcceptOwnershipRequest.properties = AcceptOwnershipRequestProperties.fromJson(reader); + } else { + reader.skipChildren(); + } + } + + return deserializedAcceptOwnershipRequest; + }); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnershipRequestProperties.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnershipRequestProperties.java new file mode 100644 index 000000000000..7eb267fcf5b1 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnershipRequestProperties.java @@ -0,0 +1,161 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.util.logging.ClientLogger; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.Map; + +/** + * Accept subscription ownership request properties. + */ +@Fluent +public final class AcceptOwnershipRequestProperties implements JsonSerializable { + /* + * The friendly name of the subscription. + */ + private String displayName; + + /* + * Management group Id for the subscription. + */ + private String managementGroupId; + + /* + * Tags for the subscription + */ + private Map tags; + + /** + * Creates an instance of AcceptOwnershipRequestProperties class. + */ + public AcceptOwnershipRequestProperties() { + } + + /** + * Get the displayName property: The friendly name of the subscription. + * + * @return the displayName value. + */ + public String displayName() { + return this.displayName; + } + + /** + * Set the displayName property: The friendly name of the subscription. + * + * @param displayName the displayName value to set. + * @return the AcceptOwnershipRequestProperties object itself. + */ + public AcceptOwnershipRequestProperties withDisplayName(String displayName) { + this.displayName = displayName; + return this; + } + + /** + * Get the managementGroupId property: Management group Id for the subscription. + * + * @return the managementGroupId value. + */ + public String managementGroupId() { + return this.managementGroupId; + } + + /** + * Set the managementGroupId property: Management group Id for the subscription. + * + * @param managementGroupId the managementGroupId value to set. + * @return the AcceptOwnershipRequestProperties object itself. + */ + public AcceptOwnershipRequestProperties withManagementGroupId(String managementGroupId) { + this.managementGroupId = managementGroupId; + return this; + } + + /** + * Get the tags property: Tags for the subscription. + * + * @return the tags value. + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags property: Tags for the subscription. + * + * @param tags the tags value to set. + * @return the AcceptOwnershipRequestProperties object itself. + */ + public AcceptOwnershipRequestProperties withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (displayName() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Missing required property displayName in model AcceptOwnershipRequestProperties")); + } + } + + private static final ClientLogger LOGGER = new ClientLogger(AcceptOwnershipRequestProperties.class); + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("displayName", this.displayName); + jsonWriter.writeStringField("managementGroupId", this.managementGroupId); + jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeString(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of AcceptOwnershipRequestProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of AcceptOwnershipRequestProperties if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the AcceptOwnershipRequestProperties. + */ + public static AcceptOwnershipRequestProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + AcceptOwnershipRequestProperties deserializedAcceptOwnershipRequestProperties + = new AcceptOwnershipRequestProperties(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("displayName".equals(fieldName)) { + deserializedAcceptOwnershipRequestProperties.displayName = reader.getString(); + } else if ("managementGroupId".equals(fieldName)) { + deserializedAcceptOwnershipRequestProperties.managementGroupId = reader.getString(); + } else if ("tags".equals(fieldName)) { + Map tags = reader.readMap(reader1 -> reader1.getString()); + deserializedAcceptOwnershipRequestProperties.tags = tags; + } else { + reader.skipChildren(); + } + } + + return deserializedAcceptOwnershipRequestProperties; + }); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnershipStatusResponse.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnershipStatusResponse.java new file mode 100644 index 000000000000..7b8aa9232a7b --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/AcceptOwnershipStatusResponse.java @@ -0,0 +1,69 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.resourcemanager.subscription.fluent.models.AcceptOwnershipStatusResponseInner; +import java.util.Map; + +/** + * An immutable client-side representation of AcceptOwnershipStatusResponse. + */ +public interface AcceptOwnershipStatusResponse { + /** + * Gets the subscriptionId property: Newly created subscription Id. + * + * @return the subscriptionId value. + */ + String subscriptionId(); + + /** + * Gets the acceptOwnershipState property: The accept ownership state of the resource. + * + * @return the acceptOwnershipState value. + */ + AcceptOwnership acceptOwnershipState(); + + /** + * Gets the provisioningState property: The provisioning state of the resource. + * + * @return the provisioningState value. + */ + Provisioning provisioningState(); + + /** + * Gets the billingOwner property: UPN of the billing owner. + * + * @return the billingOwner value. + */ + String billingOwner(); + + /** + * Gets the subscriptionTenantId property: Tenant Id of the subscription. + * + * @return the subscriptionTenantId value. + */ + String subscriptionTenantId(); + + /** + * Gets the displayName property: The display name of the subscription. + * + * @return the displayName value. + */ + String displayName(); + + /** + * Gets the tags property: Tags for the subscription. + * + * @return the tags value. + */ + Map tags(); + + /** + * Gets the inner com.azure.resourcemanager.subscription.fluent.models.AcceptOwnershipStatusResponseInner object. + * + * @return the inner object. + */ + AcceptOwnershipStatusResponseInner innerModel(); +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Alias.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Alias.java index 9766302f26c9..a33eb2a5bdfa 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Alias.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Alias.java @@ -14,21 +14,21 @@ public interface Alias { /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return subscription Information with the alias. */ - PutAliasResponse create(String aliasName, PutAliasRequest body); + SubscriptionAliasResponse create(String aliasName, PutAliasRequest body); /** * Create Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param body The body parameter. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. @@ -36,38 +36,38 @@ public interface Alias { * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return subscription Information with the alias. */ - PutAliasResponse create(String aliasName, PutAliasRequest body, Context context); + SubscriptionAliasResponse create(String aliasName, PutAliasRequest body, Context context); /** * Get Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return alias Subscription along with {@link Response}. */ - Response getWithResponse(String aliasName, Context context); + Response getWithResponse(String aliasName, Context context); /** * Get Alias Subscription. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return alias Subscription. */ - PutAliasResponse get(String aliasName); + SubscriptionAliasResponse get(String aliasName); /** * Delete Alias. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. @@ -79,8 +79,8 @@ public interface Alias { /** * Delete Alias. * - * @param aliasName Name for this subscription creation request also known as alias. Note that this is not the same - * as subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. + * @param aliasName AliasName is the name for the subscription creation request. Note that this is not the same as + * subscription name and this doesn’t have any other lifecycle need beyond the request for subscription creation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. @@ -88,22 +88,22 @@ public interface Alias { void delete(String aliasName); /** - * Get Alias Subscription. + * List Alias Subscription. * * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return alias Subscription along with {@link Response}. + * @return the list of aliases along with {@link Response}. */ - Response listWithResponse(Context context); + Response listWithResponse(Context context); /** - * Get Alias Subscription. + * List Alias Subscription. * * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return alias Subscription. + * @return the list of aliases. */ - PutAliasListResult list(); + SubscriptionAliasListResult list(); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/BillingAccountPoliciesResponse.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/BillingAccountPoliciesResponse.java new file mode 100644 index 000000000000..4a3b7f8afc30 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/BillingAccountPoliciesResponse.java @@ -0,0 +1,55 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.management.SystemData; +import com.azure.resourcemanager.subscription.fluent.models.BillingAccountPoliciesResponseInner; + +/** + * An immutable client-side representation of BillingAccountPoliciesResponse. + */ +public interface BillingAccountPoliciesResponse { + /** + * Gets the id property: Fully qualified resource Id for the resource. + * + * @return the id value. + */ + String id(); + + /** + * Gets the name property: The name of the resource. + * + * @return the name value. + */ + String name(); + + /** + * Gets the type property: The type of the resource. + * + * @return the type value. + */ + String type(); + + /** + * Gets the properties property: Billing account policies response properties. + * + * @return the properties value. + */ + BillingAccountPoliciesResponseProperties properties(); + + /** + * Gets the systemData property: Metadata pertaining to creation and last modification of the resource. + * + * @return the systemData value. + */ + SystemData systemData(); + + /** + * Gets the inner com.azure.resourcemanager.subscription.fluent.models.BillingAccountPoliciesResponseInner object. + * + * @return the inner object. + */ + BillingAccountPoliciesResponseInner innerModel(); +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/BillingAccountPoliciesResponseProperties.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/BillingAccountPoliciesResponseProperties.java new file mode 100644 index 000000000000..1403e0d287c5 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/BillingAccountPoliciesResponseProperties.java @@ -0,0 +1,131 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Put billing account policies response properties. + */ +@Fluent +public final class BillingAccountPoliciesResponseProperties + implements JsonSerializable { + /* + * Service tenant for the billing account. + */ + private List serviceTenants; + + /* + * Determine if the transfers are allowed for the billing account + */ + private Boolean allowTransfers; + + /** + * Creates an instance of BillingAccountPoliciesResponseProperties class. + */ + public BillingAccountPoliciesResponseProperties() { + } + + /** + * Get the serviceTenants property: Service tenant for the billing account. + * + * @return the serviceTenants value. + */ + public List serviceTenants() { + return this.serviceTenants; + } + + /** + * Set the serviceTenants property: Service tenant for the billing account. + * + * @param serviceTenants the serviceTenants value to set. + * @return the BillingAccountPoliciesResponseProperties object itself. + */ + public BillingAccountPoliciesResponseProperties withServiceTenants(List serviceTenants) { + this.serviceTenants = serviceTenants; + return this; + } + + /** + * Get the allowTransfers property: Determine if the transfers are allowed for the billing account. + * + * @return the allowTransfers value. + */ + public Boolean allowTransfers() { + return this.allowTransfers; + } + + /** + * Set the allowTransfers property: Determine if the transfers are allowed for the billing account. + * + * @param allowTransfers the allowTransfers value to set. + * @return the BillingAccountPoliciesResponseProperties object itself. + */ + public BillingAccountPoliciesResponseProperties withAllowTransfers(Boolean allowTransfers) { + this.allowTransfers = allowTransfers; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (serviceTenants() != null) { + serviceTenants().forEach(e -> e.validate()); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("serviceTenants", this.serviceTenants, + (writer, element) -> writer.writeJson(element)); + jsonWriter.writeBooleanField("allowTransfers", this.allowTransfers); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of BillingAccountPoliciesResponseProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of BillingAccountPoliciesResponseProperties if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the BillingAccountPoliciesResponseProperties. + */ + public static BillingAccountPoliciesResponseProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + BillingAccountPoliciesResponseProperties deserializedBillingAccountPoliciesResponseProperties + = new BillingAccountPoliciesResponseProperties(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("serviceTenants".equals(fieldName)) { + List serviceTenants + = reader.readArray(reader1 -> ServiceTenantResponse.fromJson(reader1)); + deserializedBillingAccountPoliciesResponseProperties.serviceTenants = serviceTenants; + } else if ("allowTransfers".equals(fieldName)) { + deserializedBillingAccountPoliciesResponseProperties.allowTransfers + = reader.getNullable(JsonReader::getBoolean); + } else { + reader.skipChildren(); + } + } + + return deserializedBillingAccountPoliciesResponseProperties; + }); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Tenants.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/BillingAccounts.java similarity index 57% rename from sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Tenants.java rename to sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/BillingAccounts.java index ab8f9c0f8cf4..fa1fa399b04c 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Tenants.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/BillingAccounts.java @@ -4,30 +4,33 @@ package com.azure.resourcemanager.subscription.models; -import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.Response; import com.azure.core.util.Context; /** - * Resource collection API of Tenants. + * Resource collection API of BillingAccounts. */ -public interface Tenants { +public interface BillingAccounts { /** - * Gets the tenants for your account. + * Get Billing Account Policy. * + * @param billingAccountId Billing Account Id. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the tenants for your account as paginated response with {@link PagedIterable}. + * @return billing Account Policy along with {@link Response}. */ - PagedIterable list(); + Response getPolicyWithResponse(String billingAccountId, Context context); /** - * Gets the tenants for your account. + * Get Billing Account Policy. * - * @param context The context to associate with this operation. + * @param billingAccountId Billing Account Id. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the tenants for your account as paginated response with {@link PagedIterable}. + * @return billing Account Policy. */ - PagedIterable list(Context context); + BillingAccountPoliciesResponse getPolicy(String billingAccountId); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/GetTenantPolicyListResponse.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/GetTenantPolicyListResponse.java new file mode 100644 index 000000000000..50b18a008bc0 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/GetTenantPolicyListResponse.java @@ -0,0 +1,104 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import com.azure.resourcemanager.subscription.fluent.models.GetTenantPolicyResponseInner; +import java.io.IOException; +import java.util.List; + +/** + * Tenant policy information list. + */ +@Immutable +public final class GetTenantPolicyListResponse implements JsonSerializable { + /* + * The list of tenant policies. + */ + private List value; + + /* + * The link (url) to the next page of results. + */ + private String nextLink; + + /** + * Creates an instance of GetTenantPolicyListResponse class. + */ + public GetTenantPolicyListResponse() { + } + + /** + * Get the value property: The list of tenant policies. + * + * @return the value value. + */ + public List value() { + return this.value; + } + + /** + * Get the nextLink property: The link (url) to the next page of results. + * + * @return the nextLink value. + */ + public String nextLink() { + return this.nextLink; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (value() != null) { + value().forEach(e -> e.validate()); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of GetTenantPolicyListResponse from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of GetTenantPolicyListResponse if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the GetTenantPolicyListResponse. + */ + public static GetTenantPolicyListResponse fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + GetTenantPolicyListResponse deserializedGetTenantPolicyListResponse = new GetTenantPolicyListResponse(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("value".equals(fieldName)) { + List value + = reader.readArray(reader1 -> GetTenantPolicyResponseInner.fromJson(reader1)); + deserializedGetTenantPolicyListResponse.value = value; + } else if ("nextLink".equals(fieldName)) { + deserializedGetTenantPolicyListResponse.nextLink = reader.getString(); + } else { + reader.skipChildren(); + } + } + + return deserializedGetTenantPolicyListResponse; + }); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasResponse.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/GetTenantPolicyResponse.java similarity index 56% rename from sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasResponse.java rename to sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/GetTenantPolicyResponse.java index 8185746513f5..b20b5f40b05f 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasResponse.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/GetTenantPolicyResponse.java @@ -4,12 +4,13 @@ package com.azure.resourcemanager.subscription.models; -import com.azure.resourcemanager.subscription.fluent.models.PutAliasResponseInner; +import com.azure.core.management.SystemData; +import com.azure.resourcemanager.subscription.fluent.models.GetTenantPolicyResponseInner; /** - * An immutable client-side representation of PutAliasResponse. + * An immutable client-side representation of GetTenantPolicyResponse. */ -public interface PutAliasResponse { +public interface GetTenantPolicyResponse { /** * Gets the id property: Fully qualified resource Id for the resource. * @@ -32,16 +33,23 @@ public interface PutAliasResponse { String type(); /** - * Gets the properties property: Put Alias response properties. + * Gets the properties property: Tenant policy properties. * * @return the properties value. */ - PutAliasResponseProperties properties(); + TenantPolicy properties(); /** - * Gets the inner com.azure.resourcemanager.subscription.fluent.models.PutAliasResponseInner object. + * Gets the systemData property: Metadata pertaining to creation and last modification of the resource. + * + * @return the systemData value. + */ + SystemData systemData(); + + /** + * Gets the inner com.azure.resourcemanager.subscription.fluent.models.GetTenantPolicyResponseInner object. * * @return the inner object. */ - PutAliasResponseInner innerModel(); + GetTenantPolicyResponseInner innerModel(); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Location.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Location.java deleted file mode 100644 index e66e7e2062c5..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Location.java +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.models; - -import com.azure.resourcemanager.subscription.fluent.models.LocationInner; - -/** - * An immutable client-side representation of Location. - */ -public interface Location { - /** - * Gets the id property: The fully qualified ID of the location. For example, - * /subscriptions/00000000-0000-0000-0000-000000000000/locations/westus. - * - * @return the id value. - */ - String id(); - - /** - * Gets the subscriptionId property: The subscription ID. - * - * @return the subscriptionId value. - */ - String subscriptionId(); - - /** - * Gets the name property: The location name. - * - * @return the name value. - */ - String name(); - - /** - * Gets the displayName property: The display name of the location. - * - * @return the displayName value. - */ - String displayName(); - - /** - * Gets the latitude property: The latitude of the location. - * - * @return the latitude value. - */ - String latitude(); - - /** - * Gets the longitude property: The longitude of the location. - * - * @return the longitude value. - */ - String longitude(); - - /** - * Gets the inner com.azure.resourcemanager.subscription.fluent.models.LocationInner object. - * - * @return the inner object. - */ - LocationInner innerModel(); -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/LocationListResult.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/LocationListResult.java deleted file mode 100644 index e63064951fa7..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/LocationListResult.java +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.models; - -import com.azure.core.annotation.Fluent; -import com.azure.json.JsonReader; -import com.azure.json.JsonSerializable; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import com.azure.resourcemanager.subscription.fluent.models.LocationInner; -import java.io.IOException; -import java.util.List; - -/** - * Location list operation response. - */ -@Fluent -public final class LocationListResult implements JsonSerializable { - /* - * An array of locations. - */ - private List value; - - /** - * Creates an instance of LocationListResult class. - */ - public LocationListResult() { - } - - /** - * Get the value property: An array of locations. - * - * @return the value value. - */ - public List value() { - return this.value; - } - - /** - * Set the value property: An array of locations. - * - * @param value the value value to set. - * @return the LocationListResult object itself. - */ - public LocationListResult withValue(List value) { - this.value = value; - return this; - } - - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - if (value() != null) { - value().forEach(e -> e.validate()); - } - } - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeJson(element)); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of LocationListResult from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of LocationListResult if the JsonReader was pointing to an instance of it, or null if it was - * pointing to JSON null. - * @throws IOException If an error occurs while reading the LocationListResult. - */ - public static LocationListResult fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - LocationListResult deserializedLocationListResult = new LocationListResult(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("value".equals(fieldName)) { - List value = reader.readArray(reader1 -> LocationInner.fromJson(reader1)); - deserializedLocationListResult.value = value; - } else { - reader.skipChildren(); - } - } - - return deserializedLocationListResult; - }); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Operation.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Operation.java index 223a62b4955f..b8d4367a21b6 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Operation.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Operation.java @@ -4,121 +4,37 @@ package com.azure.resourcemanager.subscription.models; -import com.azure.core.annotation.Fluent; -import com.azure.json.JsonReader; -import com.azure.json.JsonSerializable; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import java.io.IOException; +import com.azure.resourcemanager.subscription.fluent.models.OperationInner; /** - * REST API operation. + * An immutable client-side representation of Operation. */ -@Fluent -public final class Operation implements JsonSerializable { - /* - * Operation name: {provider}/{resource}/{operation} - */ - private String name; - - /* - * The object that represents the operation. - */ - private OperationDisplay display; - - /** - * Creates an instance of Operation class. - */ - public Operation() { - } - +public interface Operation { /** - * Get the name property: Operation name: {provider}/{resource}/{operation}. + * Gets the name property: Operation name: {provider}/{resource}/{operation}. * * @return the name value. */ - public String name() { - return this.name; - } + String name(); /** - * Set the name property: Operation name: {provider}/{resource}/{operation}. + * Gets the isDataAction property: Indicates whether the operation is a data action. * - * @param name the name value to set. - * @return the Operation object itself. + * @return the isDataAction value. */ - public Operation withName(String name) { - this.name = name; - return this; - } + Boolean isDataAction(); /** - * Get the display property: The object that represents the operation. + * Gets the display property: The object that represents the operation. * * @return the display value. */ - public OperationDisplay display() { - return this.display; - } - - /** - * Set the display property: The object that represents the operation. - * - * @param display the display value to set. - * @return the Operation object itself. - */ - public Operation withDisplay(OperationDisplay display) { - this.display = display; - return this; - } - - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - if (display() != null) { - display().validate(); - } - } + OperationDisplay display(); /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - jsonWriter.writeStringField("name", this.name); - jsonWriter.writeJsonField("display", this.display); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of Operation from the JsonReader. + * Gets the inner com.azure.resourcemanager.subscription.fluent.models.OperationInner object. * - * @param jsonReader The JsonReader being read. - * @return An instance of Operation if the JsonReader was pointing to an instance of it, or null if it was pointing - * to JSON null. - * @throws IOException If an error occurs while reading the Operation. + * @return the inner object. */ - public static Operation fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - Operation deserializedOperation = new Operation(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("name".equals(fieldName)) { - deserializedOperation.name = reader.getString(); - } else if ("display".equals(fieldName)) { - deserializedOperation.display = OperationDisplay.fromJson(reader); - } else { - reader.skipChildren(); - } - } - - return deserializedOperation; - }); - } + OperationInner innerModel(); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/OperationDisplay.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/OperationDisplay.java index 2447e8aedc86..063ccdd6cc78 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/OperationDisplay.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/OperationDisplay.java @@ -31,6 +31,11 @@ public final class OperationDisplay implements JsonSerializable { + /* + * List of operations. + */ + private List value; + + /* + * URL to get the next set of operation list results if there are any. + */ + private String nextLink; + + /** + * Creates an instance of OperationListResult class. + */ + public OperationListResult() { + } + /** - * Gets the value property: List of operations. + * Get the value property: List of operations. * * @return the value value. */ - List value(); + public List value() { + return this.value; + } + + /** + * Set the value property: List of operations. + * + * @param value the value value to set. + * @return the OperationListResult object itself. + */ + public OperationListResult withValue(List value) { + this.value = value; + return this; + } /** - * Gets the nextLink property: URL to get the next set of operation list results if there are any. + * Get the nextLink property: URL to get the next set of operation list results if there are any. * * @return the nextLink value. */ - String nextLink(); + public String nextLink() { + return this.nextLink; + } + + /** + * Set the nextLink property: URL to get the next set of operation list results if there are any. + * + * @param nextLink the nextLink value to set. + * @return the OperationListResult object itself. + */ + public OperationListResult withNextLink(String nextLink) { + this.nextLink = nextLink; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (value() != null) { + value().forEach(e -> e.validate()); + } + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("nextLink", this.nextLink); + return jsonWriter.writeEndObject(); + } /** - * Gets the inner com.azure.resourcemanager.subscription.fluent.models.OperationListResultInner object. + * Reads an instance of OperationListResult from the JsonReader. * - * @return the inner object. + * @param jsonReader The JsonReader being read. + * @return An instance of OperationListResult if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the OperationListResult. */ - OperationListResultInner innerModel(); + public static OperationListResult fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + OperationListResult deserializedOperationListResult = new OperationListResult(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("value".equals(fieldName)) { + List value = reader.readArray(reader1 -> OperationInner.fromJson(reader1)); + deserializedOperationListResult.value = value; + } else if ("nextLink".equals(fieldName)) { + deserializedOperationListResult.nextLink = reader.getString(); + } else { + reader.skipChildren(); + } + } + + return deserializedOperationListResult; + }); + } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Operations.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Operations.java index 53fc8bdb085e..f8ff69f92ef4 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Operations.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Operations.java @@ -4,7 +4,7 @@ package com.azure.resourcemanager.subscription.models; -import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.PagedIterable; import com.azure.core.util.Context; /** @@ -14,20 +14,20 @@ public interface Operations { /** * Lists all of the available Microsoft.Subscription API operations. * - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list operations along with {@link Response}. + * @return result of the request to list operations as paginated response with {@link PagedIterable}. */ - Response listWithResponse(Context context); + PagedIterable list(); /** * Lists all of the available Microsoft.Subscription API operations. * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return result of the request to list operations. + * @return result of the request to list operations as paginated response with {@link PagedIterable}. */ - OperationListResult list(); + PagedIterable list(Context context); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Provisioning.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Provisioning.java new file mode 100644 index 000000000000..5b5cfd378de5 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Provisioning.java @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The provisioning state of the resource. + */ +public final class Provisioning extends ExpandableStringEnum { + /** + * Static value Pending for Provisioning. + */ + public static final Provisioning PENDING = fromString("Pending"); + + /** + * Static value Accepted for Provisioning. + */ + public static final Provisioning ACCEPTED = fromString("Accepted"); + + /** + * Static value Succeeded for Provisioning. + */ + public static final Provisioning SUCCEEDED = fromString("Succeeded"); + + /** + * Creates a new instance of Provisioning value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Deprecated + public Provisioning() { + } + + /** + * Creates or finds a Provisioning from its string representation. + * + * @param name a name to look for. + * @return the corresponding Provisioning. + */ + public static Provisioning fromString(String name) { + return fromString(name, Provisioning.class); + } + + /** + * Gets known Provisioning values. + * + * @return known Provisioning values. + */ + public static Collection values() { + return values(Provisioning.class); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasRequest.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasRequest.java index 6eee633eec6c..21df61a86989 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasRequest.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasRequest.java @@ -5,7 +5,6 @@ package com.azure.resourcemanager.subscription.models; import com.azure.core.annotation.Fluent; -import com.azure.core.util.logging.ClientLogger; import com.azure.json.JsonReader; import com.azure.json.JsonSerializable; import com.azure.json.JsonToken; @@ -54,16 +53,11 @@ public PutAliasRequest withProperties(PutAliasRequestProperties properties) { * @throws IllegalArgumentException thrown if the instance is not valid. */ public void validate() { - if (properties() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Missing required property properties in model PutAliasRequest")); - } else { + if (properties() != null) { properties().validate(); } } - private static final ClientLogger LOGGER = new ClientLogger(PutAliasRequest.class); - /** * {@inheritDoc} */ @@ -80,7 +74,6 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { * @param jsonReader The JsonReader being read. * @return An instance of PutAliasRequest if the JsonReader was pointing to an instance of it, or null if it was * pointing to JSON null. - * @throws IllegalStateException If the deserialized JSON object was missing any required properties. * @throws IOException If an error occurs while reading the PutAliasRequest. */ public static PutAliasRequest fromJson(JsonReader jsonReader) throws IOException { diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasRequestAdditionalProperties.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasRequestAdditionalProperties.java new file mode 100644 index 000000000000..9d035ad0c188 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasRequestAdditionalProperties.java @@ -0,0 +1,181 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.Map; + +/** + * Put subscription additional properties. + */ +@Fluent +public final class PutAliasRequestAdditionalProperties + implements JsonSerializable { + /* + * Management group Id for the subscription. + */ + private String managementGroupId; + + /* + * Tenant Id of the subscription + */ + private String subscriptionTenantId; + + /* + * Owner Id of the subscription + */ + private String subscriptionOwnerId; + + /* + * Tags for the subscription + */ + private Map tags; + + /** + * Creates an instance of PutAliasRequestAdditionalProperties class. + */ + public PutAliasRequestAdditionalProperties() { + } + + /** + * Get the managementGroupId property: Management group Id for the subscription. + * + * @return the managementGroupId value. + */ + public String managementGroupId() { + return this.managementGroupId; + } + + /** + * Set the managementGroupId property: Management group Id for the subscription. + * + * @param managementGroupId the managementGroupId value to set. + * @return the PutAliasRequestAdditionalProperties object itself. + */ + public PutAliasRequestAdditionalProperties withManagementGroupId(String managementGroupId) { + this.managementGroupId = managementGroupId; + return this; + } + + /** + * Get the subscriptionTenantId property: Tenant Id of the subscription. + * + * @return the subscriptionTenantId value. + */ + public String subscriptionTenantId() { + return this.subscriptionTenantId; + } + + /** + * Set the subscriptionTenantId property: Tenant Id of the subscription. + * + * @param subscriptionTenantId the subscriptionTenantId value to set. + * @return the PutAliasRequestAdditionalProperties object itself. + */ + public PutAliasRequestAdditionalProperties withSubscriptionTenantId(String subscriptionTenantId) { + this.subscriptionTenantId = subscriptionTenantId; + return this; + } + + /** + * Get the subscriptionOwnerId property: Owner Id of the subscription. + * + * @return the subscriptionOwnerId value. + */ + public String subscriptionOwnerId() { + return this.subscriptionOwnerId; + } + + /** + * Set the subscriptionOwnerId property: Owner Id of the subscription. + * + * @param subscriptionOwnerId the subscriptionOwnerId value to set. + * @return the PutAliasRequestAdditionalProperties object itself. + */ + public PutAliasRequestAdditionalProperties withSubscriptionOwnerId(String subscriptionOwnerId) { + this.subscriptionOwnerId = subscriptionOwnerId; + return this; + } + + /** + * Get the tags property: Tags for the subscription. + * + * @return the tags value. + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags property: Tags for the subscription. + * + * @param tags the tags value to set. + * @return the PutAliasRequestAdditionalProperties object itself. + */ + public PutAliasRequestAdditionalProperties withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("managementGroupId", this.managementGroupId); + jsonWriter.writeStringField("subscriptionTenantId", this.subscriptionTenantId); + jsonWriter.writeStringField("subscriptionOwnerId", this.subscriptionOwnerId); + jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeString(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of PutAliasRequestAdditionalProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of PutAliasRequestAdditionalProperties if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the PutAliasRequestAdditionalProperties. + */ + public static PutAliasRequestAdditionalProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + PutAliasRequestAdditionalProperties deserializedPutAliasRequestAdditionalProperties + = new PutAliasRequestAdditionalProperties(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("managementGroupId".equals(fieldName)) { + deserializedPutAliasRequestAdditionalProperties.managementGroupId = reader.getString(); + } else if ("subscriptionTenantId".equals(fieldName)) { + deserializedPutAliasRequestAdditionalProperties.subscriptionTenantId = reader.getString(); + } else if ("subscriptionOwnerId".equals(fieldName)) { + deserializedPutAliasRequestAdditionalProperties.subscriptionOwnerId = reader.getString(); + } else if ("tags".equals(fieldName)) { + Map tags = reader.readMap(reader1 -> reader1.getString()); + deserializedPutAliasRequestAdditionalProperties.tags = tags; + } else { + reader.skipChildren(); + } + } + + return deserializedPutAliasRequestAdditionalProperties; + }); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasRequestProperties.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasRequestProperties.java index efa30e68c2b0..195f8ca7edc1 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasRequestProperties.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasRequestProperties.java @@ -27,7 +27,11 @@ public final class PutAliasRequestProperties implements JsonSerializable { - /* - * Newly created subscription Id. - */ - private String subscriptionId; - - /* - * The provisioning state of the resource. - */ - private ProvisioningState provisioningState; - - /** - * Creates an instance of PutAliasResponseProperties class. - */ - public PutAliasResponseProperties() { - } - - /** - * Get the subscriptionId property: Newly created subscription Id. - * - * @return the subscriptionId value. - */ - public String subscriptionId() { - return this.subscriptionId; - } - - /** - * Get the provisioningState property: The provisioning state of the resource. - * - * @return the provisioningState value. - */ - public ProvisioningState provisioningState() { - return this.provisioningState; - } - - /** - * Set the provisioningState property: The provisioning state of the resource. - * - * @param provisioningState the provisioningState value to set. - * @return the PutAliasResponseProperties object itself. - */ - public PutAliasResponseProperties withProvisioningState(ProvisioningState provisioningState) { - this.provisioningState = provisioningState; - return this; - } - - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - } - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - jsonWriter.writeStringField("provisioningState", - this.provisioningState == null ? null : this.provisioningState.toString()); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of PutAliasResponseProperties from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of PutAliasResponseProperties if the JsonReader was pointing to an instance of it, or null if - * it was pointing to JSON null. - * @throws IOException If an error occurs while reading the PutAliasResponseProperties. - */ - public static PutAliasResponseProperties fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - PutAliasResponseProperties deserializedPutAliasResponseProperties = new PutAliasResponseProperties(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("subscriptionId".equals(fieldName)) { - deserializedPutAliasResponseProperties.subscriptionId = reader.getString(); - } else if ("provisioningState".equals(fieldName)) { - deserializedPutAliasResponseProperties.provisioningState - = ProvisioningState.fromString(reader.getString()); - } else { - reader.skipChildren(); - } - } - - return deserializedPutAliasResponseProperties; - }); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutTenantPolicyRequestProperties.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutTenantPolicyRequestProperties.java new file mode 100644 index 000000000000..b3cf29353807 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutTenantPolicyRequestProperties.java @@ -0,0 +1,161 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; +import java.util.Objects; +import java.util.UUID; + +/** + * Put tenant policy request properties. + */ +@Fluent +public final class PutTenantPolicyRequestProperties implements JsonSerializable { + /* + * Blocks the leaving of subscriptions from user's tenant. + */ + private Boolean blockSubscriptionsLeavingTenant; + + /* + * Blocks the entering of subscriptions into user's tenant. + */ + private Boolean blockSubscriptionsIntoTenant; + + /* + * List of user objectIds that are exempted from the set subscription tenant policies for the user's tenant. + */ + private List exemptedPrincipals; + + /** + * Creates an instance of PutTenantPolicyRequestProperties class. + */ + public PutTenantPolicyRequestProperties() { + } + + /** + * Get the blockSubscriptionsLeavingTenant property: Blocks the leaving of subscriptions from user's tenant. + * + * @return the blockSubscriptionsLeavingTenant value. + */ + public Boolean blockSubscriptionsLeavingTenant() { + return this.blockSubscriptionsLeavingTenant; + } + + /** + * Set the blockSubscriptionsLeavingTenant property: Blocks the leaving of subscriptions from user's tenant. + * + * @param blockSubscriptionsLeavingTenant the blockSubscriptionsLeavingTenant value to set. + * @return the PutTenantPolicyRequestProperties object itself. + */ + public PutTenantPolicyRequestProperties + withBlockSubscriptionsLeavingTenant(Boolean blockSubscriptionsLeavingTenant) { + this.blockSubscriptionsLeavingTenant = blockSubscriptionsLeavingTenant; + return this; + } + + /** + * Get the blockSubscriptionsIntoTenant property: Blocks the entering of subscriptions into user's tenant. + * + * @return the blockSubscriptionsIntoTenant value. + */ + public Boolean blockSubscriptionsIntoTenant() { + return this.blockSubscriptionsIntoTenant; + } + + /** + * Set the blockSubscriptionsIntoTenant property: Blocks the entering of subscriptions into user's tenant. + * + * @param blockSubscriptionsIntoTenant the blockSubscriptionsIntoTenant value to set. + * @return the PutTenantPolicyRequestProperties object itself. + */ + public PutTenantPolicyRequestProperties withBlockSubscriptionsIntoTenant(Boolean blockSubscriptionsIntoTenant) { + this.blockSubscriptionsIntoTenant = blockSubscriptionsIntoTenant; + return this; + } + + /** + * Get the exemptedPrincipals property: List of user objectIds that are exempted from the set subscription tenant + * policies for the user's tenant. + * + * @return the exemptedPrincipals value. + */ + public List exemptedPrincipals() { + return this.exemptedPrincipals; + } + + /** + * Set the exemptedPrincipals property: List of user objectIds that are exempted from the set subscription tenant + * policies for the user's tenant. + * + * @param exemptedPrincipals the exemptedPrincipals value to set. + * @return the PutTenantPolicyRequestProperties object itself. + */ + public PutTenantPolicyRequestProperties withExemptedPrincipals(List exemptedPrincipals) { + this.exemptedPrincipals = exemptedPrincipals; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeBooleanField("blockSubscriptionsLeavingTenant", this.blockSubscriptionsLeavingTenant); + jsonWriter.writeBooleanField("blockSubscriptionsIntoTenant", this.blockSubscriptionsIntoTenant); + jsonWriter.writeArrayField("exemptedPrincipals", this.exemptedPrincipals, + (writer, element) -> writer.writeString(Objects.toString(element, null))); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of PutTenantPolicyRequestProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of PutTenantPolicyRequestProperties if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the PutTenantPolicyRequestProperties. + */ + public static PutTenantPolicyRequestProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + PutTenantPolicyRequestProperties deserializedPutTenantPolicyRequestProperties + = new PutTenantPolicyRequestProperties(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("blockSubscriptionsLeavingTenant".equals(fieldName)) { + deserializedPutTenantPolicyRequestProperties.blockSubscriptionsLeavingTenant + = reader.getNullable(JsonReader::getBoolean); + } else if ("blockSubscriptionsIntoTenant".equals(fieldName)) { + deserializedPutTenantPolicyRequestProperties.blockSubscriptionsIntoTenant + = reader.getNullable(JsonReader::getBoolean); + } else if ("exemptedPrincipals".equals(fieldName)) { + List exemptedPrincipals = reader.readArray( + reader1 -> reader1.getNullable(nonNullReader -> UUID.fromString(nonNullReader.getString()))); + deserializedPutTenantPolicyRequestProperties.exemptedPrincipals = exemptedPrincipals; + } else { + reader.skipChildren(); + } + } + + return deserializedPutTenantPolicyRequestProperties; + }); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/ServiceTenantResponse.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/ServiceTenantResponse.java new file mode 100644 index 000000000000..9fb123969f1e --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/ServiceTenantResponse.java @@ -0,0 +1,121 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Billing account service tenant. + */ +@Fluent +public final class ServiceTenantResponse implements JsonSerializable { + /* + * Service tenant id. + */ + private String tenantId; + + /* + * Service tenant name. + */ + private String tenantName; + + /** + * Creates an instance of ServiceTenantResponse class. + */ + public ServiceTenantResponse() { + } + + /** + * Get the tenantId property: Service tenant id. + * + * @return the tenantId value. + */ + public String tenantId() { + return this.tenantId; + } + + /** + * Set the tenantId property: Service tenant id. + * + * @param tenantId the tenantId value to set. + * @return the ServiceTenantResponse object itself. + */ + public ServiceTenantResponse withTenantId(String tenantId) { + this.tenantId = tenantId; + return this; + } + + /** + * Get the tenantName property: Service tenant name. + * + * @return the tenantName value. + */ + public String tenantName() { + return this.tenantName; + } + + /** + * Set the tenantName property: Service tenant name. + * + * @param tenantName the tenantName value to set. + * @return the ServiceTenantResponse object itself. + */ + public ServiceTenantResponse withTenantName(String tenantName) { + this.tenantName = tenantName; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("tenantId", this.tenantId); + jsonWriter.writeStringField("tenantName", this.tenantName); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ServiceTenantResponse from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ServiceTenantResponse if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the ServiceTenantResponse. + */ + public static ServiceTenantResponse fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ServiceTenantResponse deserializedServiceTenantResponse = new ServiceTenantResponse(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("tenantId".equals(fieldName)) { + deserializedServiceTenantResponse.tenantId = reader.getString(); + } else if ("tenantName".equals(fieldName)) { + deserializedServiceTenantResponse.tenantName = reader.getString(); + } else { + reader.skipChildren(); + } + } + + return deserializedServiceTenantResponse; + }); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SpendingLimit.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SpendingLimit.java deleted file mode 100644 index b2d6179e8487..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SpendingLimit.java +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.models; - -/** - * The subscription spending limit. - */ -public enum SpendingLimit { - /** - * Enum value On. - */ - ON("On"), - - /** - * Enum value Off. - */ - OFF("Off"), - - /** - * Enum value CurrentPeriodOff. - */ - CURRENT_PERIOD_OFF("CurrentPeriodOff"); - - /** - * The actual serialized value for a SpendingLimit instance. - */ - private final String value; - - SpendingLimit(String value) { - this.value = value; - } - - /** - * Parses a serialized value to a SpendingLimit instance. - * - * @param value the serialized value to parse. - * @return the parsed SpendingLimit object, or null if unable to parse. - */ - public static SpendingLimit fromString(String value) { - if (value == null) { - return null; - } - SpendingLimit[] items = SpendingLimit.values(); - for (SpendingLimit item : items) { - if (item.toString().equalsIgnoreCase(value)) { - return item; - } - } - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return this.value; - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Subscription.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Subscription.java deleted file mode 100644 index 48f20f7a286c..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Subscription.java +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.models; - -import com.azure.resourcemanager.subscription.fluent.models.SubscriptionInner; -import java.util.Map; - -/** - * An immutable client-side representation of Subscription. - */ -public interface Subscription { - /** - * Gets the id property: The fully qualified ID for the subscription. For example, - * /subscriptions/00000000-0000-0000-0000-000000000000. - * - * @return the id value. - */ - String id(); - - /** - * Gets the subscriptionId property: The subscription ID. - * - * @return the subscriptionId value. - */ - String subscriptionId(); - - /** - * Gets the displayName property: The subscription display name. - * - * @return the displayName value. - */ - String displayName(); - - /** - * Gets the state property: The subscription state. Possible values are Enabled, Warned, PastDue, Disabled, and - * Deleted. - * - * @return the state value. - */ - SubscriptionState state(); - - /** - * Gets the tenantId property: The tenant ID. For example, 00000000-0000-0000-0000-000000000000. - * - * @return the tenantId value. - */ - String tenantId(); - - /** - * Gets the tags property: Tags for the subscription. - * - * @return the tags value. - */ - Map tags(); - - /** - * Gets the subscriptionPolicies property: The subscription policies. - * - * @return the subscriptionPolicies value. - */ - SubscriptionPolicies subscriptionPolicies(); - - /** - * Gets the authorizationSource property: The authorization source of the request. Valid values are one or more - * combinations of Legacy, RoleBased, Bypassed, Direct and Management. For example, 'Legacy, RoleBased'. - * - * @return the authorizationSource value. - */ - String authorizationSource(); - - /** - * Gets the inner com.azure.resourcemanager.subscription.fluent.models.SubscriptionInner object. - * - * @return the inner object. - */ - SubscriptionInner innerModel(); -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasListResult.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionAliasListResult.java similarity index 63% rename from sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasListResult.java rename to sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionAliasListResult.java index c4bb351e6bd3..12e89717d1f8 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/PutAliasListResult.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionAliasListResult.java @@ -4,19 +4,19 @@ package com.azure.resourcemanager.subscription.models; -import com.azure.resourcemanager.subscription.fluent.models.PutAliasListResultInner; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasListResultInner; import java.util.List; /** - * An immutable client-side representation of PutAliasListResult. + * An immutable client-side representation of SubscriptionAliasListResult. */ -public interface PutAliasListResult { +public interface SubscriptionAliasListResult { /** * Gets the value property: The list of alias. * * @return the value value. */ - List value(); + List value(); /** * Gets the nextLink property: The link (url) to the next page of results. @@ -26,9 +26,9 @@ public interface PutAliasListResult { String nextLink(); /** - * Gets the inner com.azure.resourcemanager.subscription.fluent.models.PutAliasListResultInner object. + * Gets the inner com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasListResultInner object. * * @return the inner object. */ - PutAliasListResultInner innerModel(); + SubscriptionAliasListResultInner innerModel(); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionAliasResponse.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionAliasResponse.java new file mode 100644 index 000000000000..df6f6d9547a8 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionAliasResponse.java @@ -0,0 +1,55 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.management.SystemData; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasResponseInner; + +/** + * An immutable client-side representation of SubscriptionAliasResponse. + */ +public interface SubscriptionAliasResponse { + /** + * Gets the id property: Fully qualified resource Id for the resource. + * + * @return the id value. + */ + String id(); + + /** + * Gets the name property: The name of the resource. + * + * @return the name value. + */ + String name(); + + /** + * Gets the type property: The type of the resource. + * + * @return the type value. + */ + String type(); + + /** + * Gets the properties property: Subscription Alias response properties. + * + * @return the properties value. + */ + SubscriptionAliasResponseProperties properties(); + + /** + * Gets the systemData property: Metadata pertaining to creation and last modification of the resource. + * + * @return the systemData value. + */ + SystemData systemData(); + + /** + * Gets the inner com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasResponseInner object. + * + * @return the inner object. + */ + SubscriptionAliasResponseInner innerModel(); +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionAliasResponseProperties.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionAliasResponseProperties.java new file mode 100644 index 000000000000..9bc24b32b3d3 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionAliasResponseProperties.java @@ -0,0 +1,384 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.Map; + +/** + * Put subscription creation result properties. + */ +@Fluent +public final class SubscriptionAliasResponseProperties + implements JsonSerializable { + /* + * Newly created subscription Id. + */ + private String subscriptionId; + + /* + * The display name of the subscription. + */ + private String displayName; + + /* + * The provisioning state of the resource. + */ + private ProvisioningState provisioningState; + + /* + * Url to accept ownership of the subscription. + */ + private String acceptOwnershipUrl; + + /* + * The accept ownership state of the resource. + */ + private AcceptOwnership acceptOwnershipState; + + /* + * Billing scope of the subscription. + * For CustomerLed and FieldLed - + * /billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}/invoiceSections/{invoiceSectionName} + * For PartnerLed - /billingAccounts/{billingAccountName}/customers/{customerName} + * For Legacy EA - /billingAccounts/{billingAccountName}/enrollmentAccounts/{enrollmentAccountName} + */ + private String billingScope; + + /* + * The workload type of the subscription. It can be either Production or DevTest. + */ + private Workload workload; + + /* + * Reseller Id + */ + private String resellerId; + + /* + * Owner Id of the subscription + */ + private String subscriptionOwnerId; + + /* + * The Management Group Id. + */ + private String managementGroupId; + + /* + * Created Time + */ + private String createdTime; + + /* + * Tags for the subscription + */ + private Map tags; + + /** + * Creates an instance of SubscriptionAliasResponseProperties class. + */ + public SubscriptionAliasResponseProperties() { + } + + /** + * Get the subscriptionId property: Newly created subscription Id. + * + * @return the subscriptionId value. + */ + public String subscriptionId() { + return this.subscriptionId; + } + + /** + * Get the displayName property: The display name of the subscription. + * + * @return the displayName value. + */ + public String displayName() { + return this.displayName; + } + + /** + * Set the displayName property: The display name of the subscription. + * + * @param displayName the displayName value to set. + * @return the SubscriptionAliasResponseProperties object itself. + */ + public SubscriptionAliasResponseProperties withDisplayName(String displayName) { + this.displayName = displayName; + return this; + } + + /** + * Get the provisioningState property: The provisioning state of the resource. + * + * @return the provisioningState value. + */ + public ProvisioningState provisioningState() { + return this.provisioningState; + } + + /** + * Set the provisioningState property: The provisioning state of the resource. + * + * @param provisioningState the provisioningState value to set. + * @return the SubscriptionAliasResponseProperties object itself. + */ + public SubscriptionAliasResponseProperties withProvisioningState(ProvisioningState provisioningState) { + this.provisioningState = provisioningState; + return this; + } + + /** + * Get the acceptOwnershipUrl property: Url to accept ownership of the subscription. + * + * @return the acceptOwnershipUrl value. + */ + public String acceptOwnershipUrl() { + return this.acceptOwnershipUrl; + } + + /** + * Get the acceptOwnershipState property: The accept ownership state of the resource. + * + * @return the acceptOwnershipState value. + */ + public AcceptOwnership acceptOwnershipState() { + return this.acceptOwnershipState; + } + + /** + * Get the billingScope property: Billing scope of the subscription. + * For CustomerLed and FieldLed - + * /billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}/invoiceSections/{invoiceSectionName} + * For PartnerLed - /billingAccounts/{billingAccountName}/customers/{customerName} + * For Legacy EA - /billingAccounts/{billingAccountName}/enrollmentAccounts/{enrollmentAccountName}. + * + * @return the billingScope value. + */ + public String billingScope() { + return this.billingScope; + } + + /** + * Set the billingScope property: Billing scope of the subscription. + * For CustomerLed and FieldLed - + * /billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}/invoiceSections/{invoiceSectionName} + * For PartnerLed - /billingAccounts/{billingAccountName}/customers/{customerName} + * For Legacy EA - /billingAccounts/{billingAccountName}/enrollmentAccounts/{enrollmentAccountName}. + * + * @param billingScope the billingScope value to set. + * @return the SubscriptionAliasResponseProperties object itself. + */ + public SubscriptionAliasResponseProperties withBillingScope(String billingScope) { + this.billingScope = billingScope; + return this; + } + + /** + * Get the workload property: The workload type of the subscription. It can be either Production or DevTest. + * + * @return the workload value. + */ + public Workload workload() { + return this.workload; + } + + /** + * Set the workload property: The workload type of the subscription. It can be either Production or DevTest. + * + * @param workload the workload value to set. + * @return the SubscriptionAliasResponseProperties object itself. + */ + public SubscriptionAliasResponseProperties withWorkload(Workload workload) { + this.workload = workload; + return this; + } + + /** + * Get the resellerId property: Reseller Id. + * + * @return the resellerId value. + */ + public String resellerId() { + return this.resellerId; + } + + /** + * Set the resellerId property: Reseller Id. + * + * @param resellerId the resellerId value to set. + * @return the SubscriptionAliasResponseProperties object itself. + */ + public SubscriptionAliasResponseProperties withResellerId(String resellerId) { + this.resellerId = resellerId; + return this; + } + + /** + * Get the subscriptionOwnerId property: Owner Id of the subscription. + * + * @return the subscriptionOwnerId value. + */ + public String subscriptionOwnerId() { + return this.subscriptionOwnerId; + } + + /** + * Set the subscriptionOwnerId property: Owner Id of the subscription. + * + * @param subscriptionOwnerId the subscriptionOwnerId value to set. + * @return the SubscriptionAliasResponseProperties object itself. + */ + public SubscriptionAliasResponseProperties withSubscriptionOwnerId(String subscriptionOwnerId) { + this.subscriptionOwnerId = subscriptionOwnerId; + return this; + } + + /** + * Get the managementGroupId property: The Management Group Id. + * + * @return the managementGroupId value. + */ + public String managementGroupId() { + return this.managementGroupId; + } + + /** + * Set the managementGroupId property: The Management Group Id. + * + * @param managementGroupId the managementGroupId value to set. + * @return the SubscriptionAliasResponseProperties object itself. + */ + public SubscriptionAliasResponseProperties withManagementGroupId(String managementGroupId) { + this.managementGroupId = managementGroupId; + return this; + } + + /** + * Get the createdTime property: Created Time. + * + * @return the createdTime value. + */ + public String createdTime() { + return this.createdTime; + } + + /** + * Set the createdTime property: Created Time. + * + * @param createdTime the createdTime value to set. + * @return the SubscriptionAliasResponseProperties object itself. + */ + public SubscriptionAliasResponseProperties withCreatedTime(String createdTime) { + this.createdTime = createdTime; + return this; + } + + /** + * Get the tags property: Tags for the subscription. + * + * @return the tags value. + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags property: Tags for the subscription. + * + * @param tags the tags value to set. + * @return the SubscriptionAliasResponseProperties object itself. + */ + public SubscriptionAliasResponseProperties withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("displayName", this.displayName); + jsonWriter.writeStringField("provisioningState", + this.provisioningState == null ? null : this.provisioningState.toString()); + jsonWriter.writeStringField("billingScope", this.billingScope); + jsonWriter.writeStringField("workload", this.workload == null ? null : this.workload.toString()); + jsonWriter.writeStringField("resellerId", this.resellerId); + jsonWriter.writeStringField("subscriptionOwnerId", this.subscriptionOwnerId); + jsonWriter.writeStringField("managementGroupId", this.managementGroupId); + jsonWriter.writeStringField("createdTime", this.createdTime); + jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeString(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of SubscriptionAliasResponseProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of SubscriptionAliasResponseProperties if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the SubscriptionAliasResponseProperties. + */ + public static SubscriptionAliasResponseProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + SubscriptionAliasResponseProperties deserializedSubscriptionAliasResponseProperties + = new SubscriptionAliasResponseProperties(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("subscriptionId".equals(fieldName)) { + deserializedSubscriptionAliasResponseProperties.subscriptionId = reader.getString(); + } else if ("displayName".equals(fieldName)) { + deserializedSubscriptionAliasResponseProperties.displayName = reader.getString(); + } else if ("provisioningState".equals(fieldName)) { + deserializedSubscriptionAliasResponseProperties.provisioningState + = ProvisioningState.fromString(reader.getString()); + } else if ("acceptOwnershipUrl".equals(fieldName)) { + deserializedSubscriptionAliasResponseProperties.acceptOwnershipUrl = reader.getString(); + } else if ("acceptOwnershipState".equals(fieldName)) { + deserializedSubscriptionAliasResponseProperties.acceptOwnershipState + = AcceptOwnership.fromString(reader.getString()); + } else if ("billingScope".equals(fieldName)) { + deserializedSubscriptionAliasResponseProperties.billingScope = reader.getString(); + } else if ("workload".equals(fieldName)) { + deserializedSubscriptionAliasResponseProperties.workload = Workload.fromString(reader.getString()); + } else if ("resellerId".equals(fieldName)) { + deserializedSubscriptionAliasResponseProperties.resellerId = reader.getString(); + } else if ("subscriptionOwnerId".equals(fieldName)) { + deserializedSubscriptionAliasResponseProperties.subscriptionOwnerId = reader.getString(); + } else if ("managementGroupId".equals(fieldName)) { + deserializedSubscriptionAliasResponseProperties.managementGroupId = reader.getString(); + } else if ("createdTime".equals(fieldName)) { + deserializedSubscriptionAliasResponseProperties.createdTime = reader.getString(); + } else if ("tags".equals(fieldName)) { + Map tags = reader.readMap(reader1 -> reader1.getString()); + deserializedSubscriptionAliasResponseProperties.tags = tags; + } else { + reader.skipChildren(); + } + } + + return deserializedSubscriptionAliasResponseProperties; + }); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionCreationResult.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionCreationResult.java new file mode 100644 index 000000000000..30b0b82dbb3f --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionCreationResult.java @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionCreationResultInner; + +/** + * An immutable client-side representation of SubscriptionCreationResult. + */ +public interface SubscriptionCreationResult { + /** + * Gets the subscriptionLink property: The link to the new subscription. Use this link to check the status of + * subscription creation operation. + * + * @return the subscriptionLink value. + */ + String subscriptionLink(); + + /** + * Gets the inner com.azure.resourcemanager.subscription.fluent.models.SubscriptionCreationResultInner object. + * + * @return the inner object. + */ + SubscriptionCreationResultInner innerModel(); +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionListResult.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionListResult.java deleted file mode 100644 index d673782c41df..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionListResult.java +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.models; - -import com.azure.core.annotation.Fluent; -import com.azure.json.JsonReader; -import com.azure.json.JsonSerializable; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import com.azure.resourcemanager.subscription.fluent.models.SubscriptionInner; -import java.io.IOException; -import java.util.List; - -/** - * Subscription list operation response. - */ -@Fluent -public final class SubscriptionListResult implements JsonSerializable { - /* - * An array of subscriptions. - */ - private List value; - - /* - * The URL to get the next set of results. - */ - private String nextLink; - - /** - * Creates an instance of SubscriptionListResult class. - */ - public SubscriptionListResult() { - } - - /** - * Get the value property: An array of subscriptions. - * - * @return the value value. - */ - public List value() { - return this.value; - } - - /** - * Set the value property: An array of subscriptions. - * - * @param value the value value to set. - * @return the SubscriptionListResult object itself. - */ - public SubscriptionListResult withValue(List value) { - this.value = value; - return this; - } - - /** - * Get the nextLink property: The URL to get the next set of results. - * - * @return the nextLink value. - */ - public String nextLink() { - return this.nextLink; - } - - /** - * Set the nextLink property: The URL to get the next set of results. - * - * @param nextLink the nextLink value to set. - * @return the SubscriptionListResult object itself. - */ - public SubscriptionListResult withNextLink(String nextLink) { - this.nextLink = nextLink; - return this; - } - - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - if (value() != null) { - value().forEach(e -> e.validate()); - } - } - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeJson(element)); - jsonWriter.writeStringField("nextLink", this.nextLink); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of SubscriptionListResult from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of SubscriptionListResult if the JsonReader was pointing to an instance of it, or null if it - * was pointing to JSON null. - * @throws IOException If an error occurs while reading the SubscriptionListResult. - */ - public static SubscriptionListResult fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - SubscriptionListResult deserializedSubscriptionListResult = new SubscriptionListResult(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("value".equals(fieldName)) { - List value = reader.readArray(reader1 -> SubscriptionInner.fromJson(reader1)); - deserializedSubscriptionListResult.value = value; - } else if ("nextLink".equals(fieldName)) { - deserializedSubscriptionListResult.nextLink = reader.getString(); - } else { - reader.skipChildren(); - } - } - - return deserializedSubscriptionListResult; - }); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionOperations.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionOperations.java index 58bc3642ce48..5b73fe557b6a 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionOperations.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionOperations.java @@ -12,73 +12,27 @@ */ public interface SubscriptionOperations { /** - * The operation to cancel a subscription. + * Get the status of the pending Microsoft.Subscription API operations. * - * @param subscriptionId Subscription Id. + * @param operationId The operation ID, which can be found from the Location field in the generate recommendation + * response header. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the canceled subscription along with {@link Response}. + * @return the status of the pending Microsoft.Subscription API operations. */ - Response cancelWithResponse(String subscriptionId, Context context); + Response getWithResponse(String operationId, Context context); /** - * The operation to cancel a subscription. + * Get the status of the pending Microsoft.Subscription API operations. * - * @param subscriptionId Subscription Id. + * @param operationId The operation ID, which can be found from the Location field in the generate recommendation + * response header. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the canceled subscription. + * @return the status of the pending Microsoft.Subscription API operations. */ - CanceledSubscriptionId cancel(String subscriptionId); - - /** - * The operation to rename a subscription. - * - * @param subscriptionId Subscription Id. - * @param body Subscription Name. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being renamed along with {@link Response}. - */ - Response renameWithResponse(String subscriptionId, SubscriptionName body, Context context); - - /** - * The operation to rename a subscription. - * - * @param subscriptionId Subscription Id. - * @param body Subscription Name. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being renamed. - */ - RenamedSubscriptionId rename(String subscriptionId, SubscriptionName body); - - /** - * The operation to enable a subscription. - * - * @param subscriptionId Subscription Id. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being enabled along with {@link Response}. - */ - Response enableWithResponse(String subscriptionId, Context context); - - /** - * The operation to enable a subscription. - * - * @param subscriptionId Subscription Id. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the ID of the subscriptions that is being enabled. - */ - EnabledSubscriptionId enable(String subscriptionId); + SubscriptionCreationResult get(String operationId); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionOperationsGetHeaders.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionOperationsGetHeaders.java new file mode 100644 index 000000000000..8b656f0c1c54 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionOperationsGetHeaders.java @@ -0,0 +1,89 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.http.HttpHeaderName; +import com.azure.core.http.HttpHeaders; + +/** + * The SubscriptionOperationsGetHeaders model. + */ +@Fluent +public final class SubscriptionOperationsGetHeaders { + /* + * The Retry-After property. + */ + private Long retryAfter; + + /* + * The Location property. + */ + private String location; + + // HttpHeaders containing the raw property values. + /** + * Creates an instance of SubscriptionOperationsGetHeaders class. + * + * @param rawHeaders The raw HttpHeaders that will be used to create the property values. + */ + public SubscriptionOperationsGetHeaders(HttpHeaders rawHeaders) { + String retryAfter = rawHeaders.getValue(HttpHeaderName.RETRY_AFTER); + if (retryAfter != null) { + this.retryAfter = Long.parseLong(retryAfter); + } else { + this.retryAfter = null; + } + this.location = rawHeaders.getValue(HttpHeaderName.LOCATION); + } + + /** + * Get the retryAfter property: The Retry-After property. + * + * @return the retryAfter value. + */ + public Long retryAfter() { + return this.retryAfter; + } + + /** + * Set the retryAfter property: The Retry-After property. + * + * @param retryAfter the retryAfter value to set. + * @return the SubscriptionOperationsGetHeaders object itself. + */ + public SubscriptionOperationsGetHeaders withRetryAfter(Long retryAfter) { + this.retryAfter = retryAfter; + return this; + } + + /** + * Get the location property: The Location property. + * + * @return the location value. + */ + public String location() { + return this.location; + } + + /** + * Set the location property: The Location property. + * + * @param location the location value to set. + * @return the SubscriptionOperationsGetHeaders object itself. + */ + public SubscriptionOperationsGetHeaders withLocation(String location) { + this.location = location; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionOperationsGetResponse.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionOperationsGetResponse.java new file mode 100644 index 000000000000..bb42c939c57c --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionOperationsGetResponse.java @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.http.HttpHeaders; +import com.azure.core.http.HttpRequest; +import com.azure.core.http.rest.ResponseBase; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionCreationResultInner; + +/** + * Contains all response data for the get operation. + */ +public final class SubscriptionOperationsGetResponse + extends ResponseBase { + /** + * Creates an instance of SubscriptionOperationsGetResponse. + * + * @param request the request which resulted in this SubscriptionOperationsGetResponse. + * @param statusCode the status code of the HTTP response. + * @param rawHeaders the raw headers of the HTTP response. + * @param value the deserialized value of the HTTP response. + * @param headers the deserialized headers of the HTTP response. + */ + public SubscriptionOperationsGetResponse(HttpRequest request, int statusCode, HttpHeaders rawHeaders, + SubscriptionCreationResultInner value, SubscriptionOperationsGetHeaders headers) { + super(request, statusCode, rawHeaders, value, headers); + } + + /** + * Gets the deserialized response body. + * + * @return the deserialized response body. + */ + @Override + public SubscriptionCreationResultInner getValue() { + return super.getValue(); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionPolicies.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionPolicies.java index 776bcf7ee352..011b7b41bb60 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionPolicies.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionPolicies.java @@ -4,113 +4,75 @@ package com.azure.resourcemanager.subscription.models; -import com.azure.core.annotation.Immutable; -import com.azure.json.JsonReader; -import com.azure.json.JsonSerializable; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import java.io.IOException; +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.Response; +import com.azure.core.util.Context; /** - * Subscription policies. + * Resource collection API of SubscriptionPolicies. */ -@Immutable -public final class SubscriptionPolicies implements JsonSerializable { - /* - * The subscription location placement ID. The ID indicates which regions are visible for a subscription. For - * example, a subscription with a location placement Id of Public_2014-09-01 has access to Azure public regions. - */ - private String locationPlacementId; - - /* - * The subscription quota ID. - */ - private String quotaId; - - /* - * The subscription spending limit. - */ - private SpendingLimit spendingLimit; - +public interface SubscriptionPolicies { /** - * Creates an instance of SubscriptionPolicies class. - */ - public SubscriptionPolicies() { - } - - /** - * Get the locationPlacementId property: The subscription location placement ID. The ID indicates which regions are - * visible for a subscription. For example, a subscription with a location placement Id of Public_2014-09-01 has - * access to Azure public regions. + * Create or Update Subscription tenant policy for user's tenant. * - * @return the locationPlacementId value. + * @param body The body parameter. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return tenant policy Information along with {@link Response}. */ - public String locationPlacementId() { - return this.locationPlacementId; - } + Response addUpdatePolicyForTenantWithResponse(PutTenantPolicyRequestProperties body, + Context context); /** - * Get the quotaId property: The subscription quota ID. + * Create or Update Subscription tenant policy for user's tenant. * - * @return the quotaId value. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return tenant policy Information. */ - public String quotaId() { - return this.quotaId; - } + GetTenantPolicyResponse addUpdatePolicyForTenant(PutTenantPolicyRequestProperties body); /** - * Get the spendingLimit property: The subscription spending limit. + * Get the subscription tenant policy for the user's tenant. * - * @return the spendingLimit value. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant along with {@link Response}. */ - public SpendingLimit spendingLimit() { - return this.spendingLimit; - } + Response getPolicyForTenantWithResponse(Context context); /** - * Validates the instance. + * Get the subscription tenant policy for the user's tenant. * - * @throws IllegalArgumentException thrown if the instance is not valid. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant. */ - public void validate() { - } + GetTenantPolicyResponse getPolicyForTenant(); /** - * {@inheritDoc} + * Get the subscription tenant policy for the user's tenant. + * + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant as paginated response with {@link PagedIterable}. */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - return jsonWriter.writeEndObject(); - } + PagedIterable listPolicyForTenant(); /** - * Reads an instance of SubscriptionPolicies from the JsonReader. + * Get the subscription tenant policy for the user's tenant. * - * @param jsonReader The JsonReader being read. - * @return An instance of SubscriptionPolicies if the JsonReader was pointing to an instance of it, or null if it - * was pointing to JSON null. - * @throws IOException If an error occurs while reading the SubscriptionPolicies. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the subscription tenant policy for the user's tenant as paginated response with {@link PagedIterable}. */ - public static SubscriptionPolicies fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - SubscriptionPolicies deserializedSubscriptionPolicies = new SubscriptionPolicies(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("locationPlacementId".equals(fieldName)) { - deserializedSubscriptionPolicies.locationPlacementId = reader.getString(); - } else if ("quotaId".equals(fieldName)) { - deserializedSubscriptionPolicies.quotaId = reader.getString(); - } else if ("spendingLimit".equals(fieldName)) { - deserializedSubscriptionPolicies.spendingLimit = SpendingLimit.fromString(reader.getString()); - } else { - reader.skipChildren(); - } - } - - return deserializedSubscriptionPolicies; - }); - } + PagedIterable listPolicyForTenant(Context context); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionState.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionState.java deleted file mode 100644 index 3bf0a8ad5434..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/SubscriptionState.java +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.models; - -/** - * The subscription state. Possible values are Enabled, Warned, PastDue, Disabled, and Deleted. - */ -public enum SubscriptionState { - /** - * Enum value Enabled. - */ - ENABLED("Enabled"), - - /** - * Enum value Warned. - */ - WARNED("Warned"), - - /** - * Enum value PastDue. - */ - PAST_DUE("PastDue"), - - /** - * Enum value Disabled. - */ - DISABLED("Disabled"), - - /** - * Enum value Deleted. - */ - DELETED("Deleted"); - - /** - * The actual serialized value for a SubscriptionState instance. - */ - private final String value; - - SubscriptionState(String value) { - this.value = value; - } - - /** - * Parses a serialized value to a SubscriptionState instance. - * - * @param value the serialized value to parse. - * @return the parsed SubscriptionState object, or null if unable to parse. - */ - public static SubscriptionState fromString(String value) { - if (value == null) { - return null; - } - SubscriptionState[] items = SubscriptionState.values(); - for (SubscriptionState item : items) { - if (item.toString().equalsIgnoreCase(value)) { - return item; - } - } - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return this.value; - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Subscriptions.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Subscriptions.java index 180392cd5652..8588d8407422 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Subscriptions.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/Subscriptions.java @@ -4,7 +4,6 @@ package com.azure.resourcemanager.subscription.models; -import com.azure.core.http.rest.PagedIterable; import com.azure.core.http.rest.Response; import com.azure.core.util.Context; @@ -13,74 +12,119 @@ */ public interface Subscriptions { /** - * Gets all available geo-locations. + * The operation to cancel a subscription. * - * This operation provides all the locations that are available for resource providers; however, each resource - * provider may support a subset of this list. - * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return location list operation response as paginated response with {@link PagedIterable}. + * @return the ID of the canceled subscription along with {@link Response}. */ - PagedIterable listLocations(String subscriptionId); + Response cancelWithResponse(String subscriptionId, Context context); /** - * Gets all available geo-locations. + * The operation to cancel a subscription. * - * This operation provides all the locations that are available for resource providers; however, each resource - * provider may support a subset of this list. + * @param subscriptionId Subscription Id. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the ID of the canceled subscription. + */ + CanceledSubscriptionId cancel(String subscriptionId); + + /** + * The operation to rename a subscription. * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. + * @param body Subscription Name. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return location list operation response as paginated response with {@link PagedIterable}. + * @return the ID of the subscriptions that is being renamed along with {@link Response}. */ - PagedIterable listLocations(String subscriptionId, Context context); + Response renameWithResponse(String subscriptionId, SubscriptionName body, Context context); /** - * Gets details about a specified subscription. + * The operation to rename a subscription. * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. + * @param body Subscription Name. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the ID of the subscriptions that is being renamed. + */ + RenamedSubscriptionId rename(String subscriptionId, SubscriptionName body); + + /** + * The operation to enable a subscription. + * + * @param subscriptionId Subscription Id. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return details about a specified subscription along with {@link Response}. + * @return the ID of the subscriptions that is being enabled along with {@link Response}. */ - Response getWithResponse(String subscriptionId, Context context); + Response enableWithResponse(String subscriptionId, Context context); /** - * Gets details about a specified subscription. + * The operation to enable a subscription. * - * @param subscriptionId The ID of the target subscription. + * @param subscriptionId Subscription Id. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return details about a specified subscription. + * @return the ID of the subscriptions that is being enabled. */ - Subscription get(String subscriptionId); + EnabledSubscriptionId enable(String subscriptionId); /** - * Gets all subscriptions for a tenant. + * Accept subscription ownership. * + * @param subscriptionId Subscription Id. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return all subscriptions for a tenant as paginated response with {@link PagedIterable}. */ - PagedIterable list(); + void acceptOwnership(String subscriptionId, AcceptOwnershipRequest body); /** - * Gets all subscriptions for a tenant. + * Accept subscription ownership. * + * @param subscriptionId Subscription Id. + * @param body The body parameter. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return all subscriptions for a tenant as paginated response with {@link PagedIterable}. */ - PagedIterable list(Context context); + void acceptOwnership(String subscriptionId, AcceptOwnershipRequest body, Context context); + + /** + * Accept subscription ownership status. + * + * @param subscriptionId Subscription Id. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return subscription Accept Ownership Response along with {@link Response}. + */ + Response acceptOwnershipStatusWithResponse(String subscriptionId, Context context); + + /** + * Accept subscription ownership status. + * + * @param subscriptionId Subscription Id. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return subscription Accept Ownership Response. + */ + AcceptOwnershipStatusResponse acceptOwnershipStatus(String subscriptionId); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/TenantIdDescription.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/TenantIdDescription.java deleted file mode 100644 index 428bd5716c69..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/TenantIdDescription.java +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.models; - -import com.azure.resourcemanager.subscription.fluent.models.TenantIdDescriptionInner; - -/** - * An immutable client-side representation of TenantIdDescription. - */ -public interface TenantIdDescription { - /** - * Gets the id property: The fully qualified ID of the tenant. For example, - * /tenants/00000000-0000-0000-0000-000000000000. - * - * @return the id value. - */ - String id(); - - /** - * Gets the tenantId property: The tenant ID. For example, 00000000-0000-0000-0000-000000000000. - * - * @return the tenantId value. - */ - String tenantId(); - - /** - * Gets the tenantCategory property: The category of the tenant. Possible values are - * TenantCategoryHome,TenantCategoryProjectedBy,TenantCategoryManagedBy. - * - * @return the tenantCategory value. - */ - String tenantCategory(); - - /** - * Gets the country property: The country/region name of the address for the tenant. - * - * @return the country value. - */ - String country(); - - /** - * Gets the countryCode property: The Country/region abbreviation for the tenant. - * - * @return the countryCode value. - */ - String countryCode(); - - /** - * Gets the displayName property: The display name of the tenant. - * - * @return the displayName value. - */ - String displayName(); - - /** - * Gets the domains property: The list of domains for the tenant. - * - * @return the domains value. - */ - String domains(); - - /** - * Gets the defaultDomain property: The default domain for the tenant. - * - * @return the defaultDomain value. - */ - String defaultDomain(); - - /** - * Gets the tenantType property: The tenant type. Only available for Home tenant category. - * - * @return the tenantType value. - */ - String tenantType(); - - /** - * Gets the inner com.azure.resourcemanager.subscription.fluent.models.TenantIdDescriptionInner object. - * - * @return the inner object. - */ - TenantIdDescriptionInner innerModel(); -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/TenantListResult.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/TenantListResult.java deleted file mode 100644 index efcca9b93d6c..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/TenantListResult.java +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.models; - -import com.azure.core.annotation.Fluent; -import com.azure.core.util.logging.ClientLogger; -import com.azure.json.JsonReader; -import com.azure.json.JsonSerializable; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import com.azure.resourcemanager.subscription.fluent.models.TenantIdDescriptionInner; -import java.io.IOException; -import java.util.List; - -/** - * Tenant Ids information. - */ -@Fluent -public final class TenantListResult implements JsonSerializable { - /* - * An array of tenants. - */ - private List value; - - /* - * The URL to use for getting the next set of results. - */ - private String nextLink; - - /** - * Creates an instance of TenantListResult class. - */ - public TenantListResult() { - } - - /** - * Get the value property: An array of tenants. - * - * @return the value value. - */ - public List value() { - return this.value; - } - - /** - * Set the value property: An array of tenants. - * - * @param value the value value to set. - * @return the TenantListResult object itself. - */ - public TenantListResult withValue(List value) { - this.value = value; - return this; - } - - /** - * Get the nextLink property: The URL to use for getting the next set of results. - * - * @return the nextLink value. - */ - public String nextLink() { - return this.nextLink; - } - - /** - * Set the nextLink property: The URL to use for getting the next set of results. - * - * @param nextLink the nextLink value to set. - * @return the TenantListResult object itself. - */ - public TenantListResult withNextLink(String nextLink) { - this.nextLink = nextLink; - return this; - } - - /** - * Validates the instance. - * - * @throws IllegalArgumentException thrown if the instance is not valid. - */ - public void validate() { - if (value() != null) { - value().forEach(e -> e.validate()); - } - if (nextLink() == null) { - throw LOGGER.atError() - .log(new IllegalArgumentException("Missing required property nextLink in model TenantListResult")); - } - } - - private static final ClientLogger LOGGER = new ClientLogger(TenantListResult.class); - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - jsonWriter.writeStringField("nextLink", this.nextLink); - jsonWriter.writeArrayField("value", this.value, (writer, element) -> writer.writeJson(element)); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of TenantListResult from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of TenantListResult if the JsonReader was pointing to an instance of it, or null if it was - * pointing to JSON null. - * @throws IllegalStateException If the deserialized JSON object was missing any required properties. - * @throws IOException If an error occurs while reading the TenantListResult. - */ - public static TenantListResult fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - TenantListResult deserializedTenantListResult = new TenantListResult(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("nextLink".equals(fieldName)) { - deserializedTenantListResult.nextLink = reader.getString(); - } else if ("value".equals(fieldName)) { - List value - = reader.readArray(reader1 -> TenantIdDescriptionInner.fromJson(reader1)); - deserializedTenantListResult.value = value; - } else { - reader.skipChildren(); - } - } - - return deserializedTenantListResult; - }); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/TenantPolicy.java b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/TenantPolicy.java new file mode 100644 index 000000000000..b7e0bedddbbb --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/java/com/azure/resourcemanager/subscription/models/TenantPolicy.java @@ -0,0 +1,174 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; +import java.util.Objects; +import java.util.UUID; + +/** + * Tenant policy. + */ +@Fluent +public final class TenantPolicy implements JsonSerializable { + /* + * Policy Id. + */ + private String policyId; + + /* + * Blocks the leaving of subscriptions from user's tenant. + */ + private Boolean blockSubscriptionsLeavingTenant; + + /* + * Blocks the entering of subscriptions into user's tenant. + */ + private Boolean blockSubscriptionsIntoTenant; + + /* + * List of user objectIds that are exempted from the set subscription tenant policies for the user's tenant. + */ + private List exemptedPrincipals; + + /** + * Creates an instance of TenantPolicy class. + */ + public TenantPolicy() { + } + + /** + * Get the policyId property: Policy Id. + * + * @return the policyId value. + */ + public String policyId() { + return this.policyId; + } + + /** + * Get the blockSubscriptionsLeavingTenant property: Blocks the leaving of subscriptions from user's tenant. + * + * @return the blockSubscriptionsLeavingTenant value. + */ + public Boolean blockSubscriptionsLeavingTenant() { + return this.blockSubscriptionsLeavingTenant; + } + + /** + * Set the blockSubscriptionsLeavingTenant property: Blocks the leaving of subscriptions from user's tenant. + * + * @param blockSubscriptionsLeavingTenant the blockSubscriptionsLeavingTenant value to set. + * @return the TenantPolicy object itself. + */ + public TenantPolicy withBlockSubscriptionsLeavingTenant(Boolean blockSubscriptionsLeavingTenant) { + this.blockSubscriptionsLeavingTenant = blockSubscriptionsLeavingTenant; + return this; + } + + /** + * Get the blockSubscriptionsIntoTenant property: Blocks the entering of subscriptions into user's tenant. + * + * @return the blockSubscriptionsIntoTenant value. + */ + public Boolean blockSubscriptionsIntoTenant() { + return this.blockSubscriptionsIntoTenant; + } + + /** + * Set the blockSubscriptionsIntoTenant property: Blocks the entering of subscriptions into user's tenant. + * + * @param blockSubscriptionsIntoTenant the blockSubscriptionsIntoTenant value to set. + * @return the TenantPolicy object itself. + */ + public TenantPolicy withBlockSubscriptionsIntoTenant(Boolean blockSubscriptionsIntoTenant) { + this.blockSubscriptionsIntoTenant = blockSubscriptionsIntoTenant; + return this; + } + + /** + * Get the exemptedPrincipals property: List of user objectIds that are exempted from the set subscription tenant + * policies for the user's tenant. + * + * @return the exemptedPrincipals value. + */ + public List exemptedPrincipals() { + return this.exemptedPrincipals; + } + + /** + * Set the exemptedPrincipals property: List of user objectIds that are exempted from the set subscription tenant + * policies for the user's tenant. + * + * @param exemptedPrincipals the exemptedPrincipals value to set. + * @return the TenantPolicy object itself. + */ + public TenantPolicy withExemptedPrincipals(List exemptedPrincipals) { + this.exemptedPrincipals = exemptedPrincipals; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeBooleanField("blockSubscriptionsLeavingTenant", this.blockSubscriptionsLeavingTenant); + jsonWriter.writeBooleanField("blockSubscriptionsIntoTenant", this.blockSubscriptionsIntoTenant); + jsonWriter.writeArrayField("exemptedPrincipals", this.exemptedPrincipals, + (writer, element) -> writer.writeString(Objects.toString(element, null))); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TenantPolicy from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TenantPolicy if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the TenantPolicy. + */ + public static TenantPolicy fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TenantPolicy deserializedTenantPolicy = new TenantPolicy(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("policyId".equals(fieldName)) { + deserializedTenantPolicy.policyId = reader.getString(); + } else if ("blockSubscriptionsLeavingTenant".equals(fieldName)) { + deserializedTenantPolicy.blockSubscriptionsLeavingTenant + = reader.getNullable(JsonReader::getBoolean); + } else if ("blockSubscriptionsIntoTenant".equals(fieldName)) { + deserializedTenantPolicy.blockSubscriptionsIntoTenant = reader.getNullable(JsonReader::getBoolean); + } else if ("exemptedPrincipals".equals(fieldName)) { + List exemptedPrincipals = reader.readArray( + reader1 -> reader1.getNullable(nonNullReader -> UUID.fromString(nonNullReader.getString()))); + deserializedTenantPolicy.exemptedPrincipals = exemptedPrincipals; + } else { + reader.skipChildren(); + } + } + + return deserializedTenantPolicy; + }); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-subscription/proxy-config.json b/sdk/subscription/azure-resourcemanager-subscription/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-subscription/proxy-config.json index abba0d3463d2..2084c95c320c 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-subscription/proxy-config.json +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-subscription/proxy-config.json @@ -1 +1 @@ -[["com.azure.resourcemanager.subscription.implementation.AliasClientImpl$AliasService"],["com.azure.resourcemanager.subscription.implementation.OperationsClientImpl$OperationsService"],["com.azure.resourcemanager.subscription.implementation.SubscriptionOperationsClientImpl$SubscriptionOperationsService"],["com.azure.resourcemanager.subscription.implementation.SubscriptionsClientImpl$SubscriptionsService"],["com.azure.resourcemanager.subscription.implementation.TenantsClientImpl$TenantsService"]] \ No newline at end of file +[["com.azure.resourcemanager.subscription.implementation.AliasClientImpl$AliasService"],["com.azure.resourcemanager.subscription.implementation.BillingAccountsClientImpl$BillingAccountsService"],["com.azure.resourcemanager.subscription.implementation.OperationsClientImpl$OperationsService"],["com.azure.resourcemanager.subscription.implementation.SubscriptionOperationsClientImpl$SubscriptionOperationsService"],["com.azure.resourcemanager.subscription.implementation.SubscriptionPoliciesClientImpl$SubscriptionPoliciesService"],["com.azure.resourcemanager.subscription.implementation.SubscriptionsClientImpl$SubscriptionsService"]] \ No newline at end of file diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/main/resources/azure-resourcemanager-subscription.properties b/sdk/subscription/azure-resourcemanager-subscription/src/main/resources/azure-resourcemanager-subscription.properties new file mode 100644 index 000000000000..defbd48204e4 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/main/resources/azure-resourcemanager-subscription.properties @@ -0,0 +1 @@ +version=${project.version} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasCreateSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasCreateSamples.java index c81077d6dfaa..12197a333214 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasCreateSamples.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasCreateSamples.java @@ -5,8 +5,11 @@ package com.azure.resourcemanager.subscription.generated; import com.azure.resourcemanager.subscription.models.PutAliasRequest; +import com.azure.resourcemanager.subscription.models.PutAliasRequestAdditionalProperties; import com.azure.resourcemanager.subscription.models.PutAliasRequestProperties; import com.azure.resourcemanager.subscription.models.Workload; +import java.util.HashMap; +import java.util.Map; /** * Samples for Alias Create. @@ -14,7 +17,7 @@ public final class AliasCreateSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/createAlias.json + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/createAlias.json */ /** * Sample code: CreateAlias. @@ -24,10 +27,26 @@ public final class AliasCreateSamples { public static void createAlias(com.azure.resourcemanager.subscription.SubscriptionManager manager) { manager.alias() .create("aliasForNewSub", new PutAliasRequest().withProperties(new PutAliasRequestProperties() - .withDisplayName("Contoso MCA subscription") + .withDisplayName("Test Subscription") .withWorkload(Workload.PRODUCTION) .withBillingScope( - "/providers/Microsoft.Billing/billingAccounts/e879cf0f-2b4d-5431-109a-f72fc9868693:024cabf4-7321-4cf9-be59-df0c77ca51de_2019-05-31/billingProfiles/PE2Q-NOIT-BG7-TGB/invoiceSections/MTT4-OBS7-PJA-TGB")), + "/billingAccounts/af6231a7-7f8d-4fcc-a993-dd8466108d07:c663dac6-a9a5-405a-8938-cd903e12ab5b_2019_05_31/billingProfiles/QWDQ-QWHI-AUW-SJDO-DJH/invoiceSections/FEUF-EUHE-ISJ-SKDW-DJH") + .withAdditionalProperties(new PutAliasRequestAdditionalProperties() + .withSubscriptionTenantId("66f6e4d6-07dc-4aea-94ea-e12d3026a3c8") + .withSubscriptionOwnerId("f09b39eb-c496-482c-9ab9-afd799572f4c") + .withTags(mapOf("tag1", "Messi", "tag2", "Ronaldo", "tag3", "Lebron")))), com.azure.core.util.Context.NONE); } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; + } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasDeleteSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasDeleteSamples.java index 206e295a25be..debf18311a68 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasDeleteSamples.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasDeleteSamples.java @@ -10,7 +10,7 @@ public final class AliasDeleteSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/deleteAlias.json + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/deleteAlias.json */ /** * Sample code: DeleteAlias. diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasGetSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasGetSamples.java index b4cbe49f0ddc..7f5e2b6d30d1 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasGetSamples.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasGetSamples.java @@ -10,7 +10,7 @@ public final class AliasGetSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/getAlias.json + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/getAlias.json */ /** * Sample code: GetAlias. diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasListSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasListSamples.java index 42eb69959824..67a0b7da5ced 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasListSamples.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/AliasListSamples.java @@ -10,14 +10,14 @@ public final class AliasListSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/listAlias.json + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/listAlias.json */ /** - * Sample code: GetAlias. + * Sample code: ListAlias. * * @param manager Entry point to SubscriptionManager. */ - public static void getAlias(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + public static void listAlias(com.azure.resourcemanager.subscription.SubscriptionManager manager) { manager.alias().listWithResponse(com.azure.core.util.Context.NONE); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/BillingAccountGetPolicySamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/BillingAccountGetPolicySamples.java new file mode 100644 index 000000000000..35539ec2903f --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/BillingAccountGetPolicySamples.java @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +/** + * Samples for BillingAccount GetPolicy. + */ +public final class BillingAccountGetPolicySamples { + /* + * x-ms-original-file: + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/ + * getBillingAccountPolicy.json + */ + /** + * Sample code: GetBillingAccountPolicy. + * + * @param manager Entry point to SubscriptionManager. + */ + public static void getBillingAccountPolicy(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + manager.billingAccounts().getPolicyWithResponse("testBillingAccountId", com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/OperationsListSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/OperationsListSamples.java index 2c20ee781dca..a1d72ff74b3d 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/OperationsListSamples.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/OperationsListSamples.java @@ -10,7 +10,7 @@ public final class OperationsListSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/getOperations.json + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/getOperations.json */ /** * Sample code: getOperations. @@ -18,6 +18,6 @@ public final class OperationsListSamples { * @param manager Entry point to SubscriptionManager. */ public static void getOperations(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.operations().listWithResponse(com.azure.core.util.Context.NONE); + manager.operations().list(com.azure.core.util.Context.NONE); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionAcceptOwnershipSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionAcceptOwnershipSamples.java new file mode 100644 index 000000000000..88446eec630c --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionAcceptOwnershipSamples.java @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.resourcemanager.subscription.models.AcceptOwnershipRequest; +import com.azure.resourcemanager.subscription.models.AcceptOwnershipRequestProperties; +import java.util.HashMap; +import java.util.Map; + +/** + * Samples for Subscription AcceptOwnership. + */ +public final class SubscriptionAcceptOwnershipSamples { + /* + * x-ms-original-file: + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/ + * acceptSubscriptionOwnership.json + */ + /** + * Sample code: AcceptOwnership. + * + * @param manager Entry point to SubscriptionManager. + */ + public static void acceptOwnership(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + manager.subscriptions() + .acceptOwnership("291bba3f-e0a5-47bc-a099-3bdcb2a50a05", + new AcceptOwnershipRequest() + .withProperties(new AcceptOwnershipRequestProperties().withDisplayName("Test Subscription") + .withTags(mapOf("tag1", "Messi", "tag2", "Ronaldo", "tag3", "Lebron"))), + com.azure.core.util.Context.NONE); + } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionAcceptOwnershipStatusSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionAcceptOwnershipStatusSamples.java new file mode 100644 index 000000000000..645ec03f9533 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionAcceptOwnershipStatusSamples.java @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +/** + * Samples for Subscription AcceptOwnershipStatus. + */ +public final class SubscriptionAcceptOwnershipStatusSamples { + /* + * x-ms-original-file: + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/ + * acceptOwnershipStatus.json + */ + /** + * Sample code: AcceptOwnershipStatus. + * + * @param manager Entry point to SubscriptionManager. + */ + public static void acceptOwnershipStatus(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + manager.subscriptions() + .acceptOwnershipStatusWithResponse("291bba3f-e0a5-47bc-a099-3bdcb2a50a05", + com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationCancelSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionCancelSamples.java similarity index 77% rename from sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationCancelSamples.java rename to sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionCancelSamples.java index e16be4946a48..1ee4694d52e4 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationCancelSamples.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionCancelSamples.java @@ -5,12 +5,12 @@ package com.azure.resourcemanager.subscription.generated; /** - * Samples for SubscriptionOperation Cancel. + * Samples for Subscription Cancel. */ -public final class SubscriptionOperationCancelSamples { +public final class SubscriptionCancelSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/cancelSubscription. + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/cancelSubscription. * json */ /** @@ -19,7 +19,7 @@ public final class SubscriptionOperationCancelSamples { * @param manager Entry point to SubscriptionManager. */ public static void cancelSubscription(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.subscriptionOperations() + manager.subscriptions() .cancelWithResponse("83aa47df-e3e9-49ff-877b-94304bf3d3ad", com.azure.core.util.Context.NONE); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationEnableSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionEnableSamples.java similarity index 77% rename from sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationEnableSamples.java rename to sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionEnableSamples.java index 32f811ba5b4a..39b2f61bcac6 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationEnableSamples.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionEnableSamples.java @@ -5,12 +5,12 @@ package com.azure.resourcemanager.subscription.generated; /** - * Samples for SubscriptionOperation Enable. + * Samples for Subscription Enable. */ -public final class SubscriptionOperationEnableSamples { +public final class SubscriptionEnableSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/enableSubscription. + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/enableSubscription. * json */ /** @@ -19,7 +19,7 @@ public final class SubscriptionOperationEnableSamples { * @param manager Entry point to SubscriptionManager. */ public static void enableSubscription(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.subscriptionOperations() + manager.subscriptions() .enableWithResponse("7948bcee-488c-47ce-941c-38e20ede803d", com.azure.core.util.Context.NONE); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionsListSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationGetSamples.java similarity index 50% rename from sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionsListSamples.java rename to sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationGetSamples.java index b8ab1d881944..6b35a515b2d2 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionsListSamples.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationGetSamples.java @@ -5,20 +5,22 @@ package com.azure.resourcemanager.subscription.generated; /** - * Samples for Subscriptions List. + * Samples for SubscriptionOperation Get. */ -public final class SubscriptionsListSamples { +public final class SubscriptionOperationGetSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2016-06-01/examples/listSubscriptions. - * json + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/ + * getSubscriptionOperation.json */ /** - * Sample code: listSubscriptions. + * Sample code: getPendingSubscriptionOperations. * * @param manager Entry point to SubscriptionManager. */ - public static void listSubscriptions(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.subscriptions().list(com.azure.core.util.Context.NONE); + public static void + getPendingSubscriptionOperations(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + manager.subscriptionOperations() + .getWithResponse("e4b8d068-f574-462a-a76f-6fa0afc613c9", com.azure.core.util.Context.NONE); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionPolicyAddUpdatePolicyForTenantSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionPolicyAddUpdatePolicyForTenantSamples.java new file mode 100644 index 000000000000..594fdf89684f --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionPolicyAddUpdatePolicyForTenantSamples.java @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.resourcemanager.subscription.models.PutTenantPolicyRequestProperties; +import java.util.Arrays; +import java.util.UUID; + +/** + * Samples for SubscriptionPolicy AddUpdatePolicyForTenant. + */ +public final class SubscriptionPolicyAddUpdatePolicyForTenantSamples { + /* + * x-ms-original-file: + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/changeTenantPolicy. + * json + */ + /** + * Sample code: TenantPolicy. + * + * @param manager Entry point to SubscriptionManager. + */ + public static void tenantPolicy(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + manager.subscriptionPolicies() + .addUpdatePolicyForTenantWithResponse( + new PutTenantPolicyRequestProperties().withBlockSubscriptionsLeavingTenant(true) + .withBlockSubscriptionsIntoTenant(true) + .withExemptedPrincipals(Arrays.asList(UUID.fromString("e879cf0f-2b4d-5431-109a-f72fc9868693"), + UUID.fromString("9792da87-c97b-410d-a97d-27021ba09ce6"))), + com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionsGetSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionPolicyGetPolicyForTenantSamples.java similarity index 55% rename from sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionsGetSamples.java rename to sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionPolicyGetPolicyForTenantSamples.java index b69a91e0b4db..1e5d9a107b0f 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionsGetSamples.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionPolicyGetPolicyForTenantSamples.java @@ -5,21 +5,20 @@ package com.azure.resourcemanager.subscription.generated; /** - * Samples for Subscriptions Get. + * Samples for SubscriptionPolicy GetPolicyForTenant. */ -public final class SubscriptionsGetSamples { +public final class SubscriptionPolicyGetPolicyForTenantSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2016-06-01/examples/getSubscription. + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/getTenantPolicy. * json */ /** - * Sample code: getSubscription. + * Sample code: getTenantPolicy. * * @param manager Entry point to SubscriptionManager. */ - public static void getSubscription(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.subscriptions() - .getWithResponse("83aa47df-e3e9-49ff-877b-94304bf3d3ad", com.azure.core.util.Context.NONE); + public static void getTenantPolicy(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + manager.subscriptionPolicies().getPolicyForTenantWithResponse(com.azure.core.util.Context.NONE); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionPolicyListPolicyForTenantSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionPolicyListPolicyForTenantSamples.java new file mode 100644 index 000000000000..fb84c22b7868 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionPolicyListPolicyForTenantSamples.java @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +/** + * Samples for SubscriptionPolicy ListPolicyForTenant. + */ +public final class SubscriptionPolicyListPolicyForTenantSamples { + /* + * x-ms-original-file: + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/getTenantPolicyList + * .json + */ + /** + * Sample code: getTenantPolicyList. + * + * @param manager Entry point to SubscriptionManager. + */ + public static void getTenantPolicyList(com.azure.resourcemanager.subscription.SubscriptionManager manager) { + manager.subscriptionPolicies().listPolicyForTenant(com.azure.core.util.Context.NONE); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationRenameSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionRenameSamples.java similarity index 80% rename from sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationRenameSamples.java rename to sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionRenameSamples.java index 65fe11fc3288..1e73f83c7738 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationRenameSamples.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionRenameSamples.java @@ -7,12 +7,12 @@ import com.azure.resourcemanager.subscription.models.SubscriptionName; /** - * Samples for SubscriptionOperation Rename. + * Samples for Subscription Rename. */ -public final class SubscriptionOperationRenameSamples { +public final class SubscriptionRenameSamples { /* * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2020-09-01/examples/renameSubscription. + * specification/subscription/resource-manager/Microsoft.Subscription/stable/2021-10-01/examples/renameSubscription. * json */ /** @@ -21,7 +21,7 @@ public final class SubscriptionOperationRenameSamples { * @param manager Entry point to SubscriptionManager. */ public static void renameSubscription(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.subscriptionOperations() + manager.subscriptions() .renameWithResponse("83aa47df-e3e9-49ff-877b-94304bf3d3ad", new SubscriptionName().withSubscriptionName("Test Sub"), com.azure.core.util.Context.NONE); } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionsListLocationsSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionsListLocationsSamples.java deleted file mode 100644 index baf547d28928..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/SubscriptionsListLocationsSamples.java +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.generated; - -/** - * Samples for Subscriptions ListLocations. - */ -public final class SubscriptionsListLocationsSamples { - /* - * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2016-06-01/examples/listLocations.json - */ - /** - * Sample code: listLocations. - * - * @param manager Entry point to SubscriptionManager. - */ - public static void listLocations(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.subscriptions().listLocations("83aa47df-e3e9-49ff-877b-94304bf3d3ad", com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/TenantsListSamples.java b/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/TenantsListSamples.java deleted file mode 100644 index d4819fa64e29..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/samples/java/com/azure/resourcemanager/subscription/generated/TenantsListSamples.java +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.generated; - -/** - * Samples for Tenants List. - */ -public final class TenantsListSamples { - /* - * x-ms-original-file: - * specification/subscription/resource-manager/Microsoft.Subscription/stable/2016-06-01/examples/listTenants.json - */ - /** - * Sample code: listTenants. - * - * @param manager Entry point to SubscriptionManager. - */ - public static void listTenants(com.azure.resourcemanager.subscription.SubscriptionManager manager) { - manager.tenants().list(com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AcceptOwnershipRequestPropertiesTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AcceptOwnershipRequestPropertiesTests.java new file mode 100644 index 000000000000..bb797ec1b0ff --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AcceptOwnershipRequestPropertiesTests.java @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.models.AcceptOwnershipRequestProperties; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.Assertions; + +public final class AcceptOwnershipRequestPropertiesTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + AcceptOwnershipRequestProperties model = BinaryData.fromString( + "{\"displayName\":\"cxtbzsg\",\"managementGroupId\":\"c\",\"tags\":{\"jeiachboosfl\":\"ewmdw\",\"fqpte\":\"ro\",\"i\":\"hzzvypyq\",\"npvswjdkirso\":\"z\"}}") + .toObject(AcceptOwnershipRequestProperties.class); + Assertions.assertEquals("cxtbzsg", model.displayName()); + Assertions.assertEquals("c", model.managementGroupId()); + Assertions.assertEquals("ewmdw", model.tags().get("jeiachboosfl")); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + AcceptOwnershipRequestProperties model = new AcceptOwnershipRequestProperties().withDisplayName("cxtbzsg") + .withManagementGroupId("c") + .withTags(mapOf("jeiachboosfl", "ewmdw", "fqpte", "ro", "i", "hzzvypyq", "npvswjdkirso", "z")); + model = BinaryData.fromObject(model).toObject(AcceptOwnershipRequestProperties.class); + Assertions.assertEquals("cxtbzsg", model.displayName()); + Assertions.assertEquals("c", model.managementGroupId()); + Assertions.assertEquals("ewmdw", model.tags().get("jeiachboosfl")); + } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AcceptOwnershipRequestTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AcceptOwnershipRequestTests.java new file mode 100644 index 000000000000..28ba61ae23d6 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AcceptOwnershipRequestTests.java @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.models.AcceptOwnershipRequest; +import com.azure.resourcemanager.subscription.models.AcceptOwnershipRequestProperties; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.Assertions; + +public final class AcceptOwnershipRequestTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + AcceptOwnershipRequest model = BinaryData.fromString( + "{\"properties\":{\"displayName\":\"thwxmnteiwaopvkm\",\"managementGroupId\":\"c\",\"tags\":{\"fsrpymzidnse\":\"dcuf\"}}}") + .toObject(AcceptOwnershipRequest.class); + Assertions.assertEquals("thwxmnteiwaopvkm", model.properties().displayName()); + Assertions.assertEquals("c", model.properties().managementGroupId()); + Assertions.assertEquals("dcuf", model.properties().tags().get("fsrpymzidnse")); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + AcceptOwnershipRequest model = new AcceptOwnershipRequest() + .withProperties(new AcceptOwnershipRequestProperties().withDisplayName("thwxmnteiwaopvkm") + .withManagementGroupId("c") + .withTags(mapOf("fsrpymzidnse", "dcuf"))); + model = BinaryData.fromObject(model).toObject(AcceptOwnershipRequest.class); + Assertions.assertEquals("thwxmnteiwaopvkm", model.properties().displayName()); + Assertions.assertEquals("c", model.properties().managementGroupId()); + Assertions.assertEquals("dcuf", model.properties().tags().get("fsrpymzidnse")); + } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AcceptOwnershipStatusResponseInnerTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AcceptOwnershipStatusResponseInnerTests.java new file mode 100644 index 000000000000..4ae60bd7cea5 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AcceptOwnershipStatusResponseInnerTests.java @@ -0,0 +1,47 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.fluent.models.AcceptOwnershipStatusResponseInner; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.Assertions; + +public final class AcceptOwnershipStatusResponseInnerTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + AcceptOwnershipStatusResponseInner model = BinaryData.fromString( + "{\"subscriptionId\":\"qxhcrmn\",\"acceptOwnershipState\":\"Expired\",\"provisioningState\":\"Accepted\",\"billingOwner\":\"whdsoifiyip\",\"subscriptionTenantId\":\"sqwpgrjb\",\"displayName\":\"orcjxvsnby\",\"tags\":{\"pcyshu\":\"bnmo\",\"jjgpb\":\"zafb\",\"jmkljavbqidtqajz\":\"oq\"}}") + .toObject(AcceptOwnershipStatusResponseInner.class); + Assertions.assertEquals("sqwpgrjb", model.subscriptionTenantId()); + Assertions.assertEquals("orcjxvsnby", model.displayName()); + Assertions.assertEquals("bnmo", model.tags().get("pcyshu")); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + AcceptOwnershipStatusResponseInner model + = new AcceptOwnershipStatusResponseInner().withSubscriptionTenantId("sqwpgrjb") + .withDisplayName("orcjxvsnby") + .withTags(mapOf("pcyshu", "bnmo", "jjgpb", "zafb", "jmkljavbqidtqajz", "oq")); + model = BinaryData.fromObject(model).toObject(AcceptOwnershipStatusResponseInner.class); + Assertions.assertEquals("sqwpgrjb", model.subscriptionTenantId()); + Assertions.assertEquals("orcjxvsnby", model.displayName()); + Assertions.assertEquals("bnmo", model.tags().get("pcyshu")); + } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasCreateMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasCreateMockTests.java index f1be02f28192..8a25390d6254 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasCreateMockTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasCreateMockTests.java @@ -6,17 +6,20 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.subscription.SubscriptionManager; import com.azure.resourcemanager.subscription.models.ProvisioningState; import com.azure.resourcemanager.subscription.models.PutAliasRequest; +import com.azure.resourcemanager.subscription.models.PutAliasRequestAdditionalProperties; import com.azure.resourcemanager.subscription.models.PutAliasRequestProperties; -import com.azure.resourcemanager.subscription.models.PutAliasResponse; +import com.azure.resourcemanager.subscription.models.SubscriptionAliasResponse; import com.azure.resourcemanager.subscription.models.Workload; import java.nio.charset.StandardCharsets; import java.time.OffsetDateTime; +import java.util.HashMap; +import java.util.Map; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import reactor.core.publisher.Mono; @@ -25,24 +28,49 @@ public final class AliasCreateMockTests { @Test public void testCreate() throws Exception { String responseStr - = "{\"properties\":{\"subscriptionId\":\"c\",\"provisioningState\":\"Succeeded\"},\"id\":\"wooc\",\"name\":\"cbonqvpk\",\"type\":\"lrxnjeaseiphe\"}"; + = "{\"properties\":{\"subscriptionId\":\"hfiqscjeypvhe\",\"displayName\":\"kgqhcjrefovg\",\"provisioningState\":\"Succeeded\",\"acceptOwnershipUrl\":\"leyyvx\",\"acceptOwnershipState\":\"Expired\",\"billingScope\":\"k\",\"workload\":\"Production\",\"resellerId\":\"pngjcrcczsqpjhvm\",\"subscriptionOwnerId\":\"jvnysounqe\",\"managementGroupId\":\"noae\",\"createdTime\":\"fhyhltrpmopjmcma\",\"tags\":{\"aodsfcpkv\":\"kthfui\"}},\"id\":\"dpuozmyz\",\"name\":\"dagfuaxbezyiuok\",\"type\":\"twhrdxwzywqsm\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); SubscriptionManager manager = SubscriptionManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - PutAliasResponse response = manager.alias() - .create("cfionl", - new PutAliasRequest().withProperties(new PutAliasRequestProperties().withDisplayName("x") - .withWorkload(Workload.PRODUCTION) - .withBillingScope("tzxdpnqbqqwx") - .withSubscriptionId("feallnwsu") - .withResellerId("snjampmng")), + SubscriptionAliasResponse response = manager.alias() + .create("dejbavo", + new PutAliasRequest().withProperties(new PutAliasRequestProperties().withDisplayName("dmoh") + .withWorkload(Workload.DEV_TEST) + .withBillingScope("vudwx") + .withSubscriptionId("dnvowg") + .withResellerId("jugwdkcglhsl") + .withAdditionalProperties( + new PutAliasRequestAdditionalProperties().withManagementGroupId("dyggdtjixhbku") + .withSubscriptionTenantId("qweykhmenev") + .withSubscriptionOwnerId("exfwhy") + .withTags(mapOf("naamde", "bvyvdcsity")))), com.azure.core.util.Context.NONE); + Assertions.assertEquals("kgqhcjrefovg", response.properties().displayName()); Assertions.assertEquals(ProvisioningState.SUCCEEDED, response.properties().provisioningState()); + Assertions.assertEquals("k", response.properties().billingScope()); + Assertions.assertEquals(Workload.PRODUCTION, response.properties().workload()); + Assertions.assertEquals("pngjcrcczsqpjhvm", response.properties().resellerId()); + Assertions.assertEquals("jvnysounqe", response.properties().subscriptionOwnerId()); + Assertions.assertEquals("noae", response.properties().managementGroupId()); + Assertions.assertEquals("fhyhltrpmopjmcma", response.properties().createdTime()); + Assertions.assertEquals("kthfui", response.properties().tags().get("aodsfcpkv")); + } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasDeleteWithResponseMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasDeleteWithResponseMockTests.java index 23aafa58ef16..b402e9bbaaa8 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasDeleteWithResponseMockTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasDeleteWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.subscription.SubscriptionManager; import java.nio.charset.StandardCharsets; @@ -25,9 +25,9 @@ public void testDeleteWithResponse() throws Exception { SubscriptionManager manager = SubscriptionManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - manager.alias().deleteWithResponse("wdslfhotwmcy", com.azure.core.util.Context.NONE); + manager.alias().deleteWithResponse("kcciwwzjuqkhr", com.azure.core.util.Context.NONE); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasGetWithResponseMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasGetWithResponseMockTests.java index b8dcc0e01202..71f234403638 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasGetWithResponseMockTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasGetWithResponseMockTests.java @@ -6,12 +6,13 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.subscription.SubscriptionManager; import com.azure.resourcemanager.subscription.models.ProvisioningState; -import com.azure.resourcemanager.subscription.models.PutAliasResponse; +import com.azure.resourcemanager.subscription.models.SubscriptionAliasResponse; +import com.azure.resourcemanager.subscription.models.Workload; import java.nio.charset.StandardCharsets; import java.time.OffsetDateTime; import org.junit.jupiter.api.Assertions; @@ -22,17 +23,26 @@ public final class AliasGetWithResponseMockTests { @Test public void testGetWithResponse() throws Exception { String responseStr - = "{\"properties\":{\"subscriptionId\":\"eyy\",\"provisioningState\":\"Failed\"},\"id\":\"jbdlwtgrhpdjpju\",\"name\":\"asxazjpqyegualhb\",\"type\":\"xhejjzzvdud\"}"; + = "{\"properties\":{\"subscriptionId\":\"ryocfsfksymdd\",\"displayName\":\"tki\",\"provisioningState\":\"Failed\",\"acceptOwnershipUrl\":\"qyud\",\"acceptOwnershipState\":\"Expired\",\"billingScope\":\"qn\",\"workload\":\"Production\",\"resellerId\":\"zvyifqrvkdvj\",\"subscriptionOwnerId\":\"lrmv\",\"managementGroupId\":\"f\",\"createdTime\":\"t\",\"tags\":{\"ruwiqzbqjvsov\":\"pulexxbczw\"}},\"id\":\"okacspk\",\"name\":\"lhzdobp\",\"type\":\"jmflbvvnch\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); SubscriptionManager manager = SubscriptionManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - PutAliasResponse response = manager.alias().getWithResponse("f", com.azure.core.util.Context.NONE).getValue(); + SubscriptionAliasResponse response + = manager.alias().getWithResponse("surex", com.azure.core.util.Context.NONE).getValue(); + Assertions.assertEquals("tki", response.properties().displayName()); Assertions.assertEquals(ProvisioningState.FAILED, response.properties().provisioningState()); + Assertions.assertEquals("qn", response.properties().billingScope()); + Assertions.assertEquals(Workload.PRODUCTION, response.properties().workload()); + Assertions.assertEquals("zvyifqrvkdvj", response.properties().resellerId()); + Assertions.assertEquals("lrmv", response.properties().subscriptionOwnerId()); + Assertions.assertEquals("f", response.properties().managementGroupId()); + Assertions.assertEquals("t", response.properties().createdTime()); + Assertions.assertEquals("pulexxbczw", response.properties().tags().get("ruwiqzbqjvsov")); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasListWithResponseMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasListWithResponseMockTests.java index fc02f09116b1..0716fed3fc55 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasListWithResponseMockTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/AliasListWithResponseMockTests.java @@ -6,11 +6,11 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.subscription.SubscriptionManager; -import com.azure.resourcemanager.subscription.models.PutAliasListResult; +import com.azure.resourcemanager.subscription.models.SubscriptionAliasListResult; import java.nio.charset.StandardCharsets; import java.time.OffsetDateTime; import org.junit.jupiter.api.Test; @@ -20,16 +20,17 @@ public final class AliasListWithResponseMockTests { @Test public void testListWithResponse() throws Exception { String responseStr - = "{\"value\":[{\"properties\":{\"subscriptionId\":\"jnpg\",\"provisioningState\":\"Failed\"},\"id\":\"tadehxnltyfsopp\",\"name\":\"suesnzw\",\"type\":\"ej\"},{\"properties\":{\"subscriptionId\":\"orxzdmohctbqvud\",\"provisioningState\":\"Accepted\"},\"id\":\"ndnvo\",\"name\":\"gujjugwdkcglh\",\"type\":\"lazjdyggdtjixhbk\"},{\"properties\":{\"subscriptionId\":\"qweykhmenev\",\"provisioningState\":\"Succeeded\"},\"id\":\"xfw\",\"name\":\"ybcibvyvdcsit\",\"type\":\"nnaamdectehfiqsc\"},{\"properties\":{\"subscriptionId\":\"pvhez\",\"provisioningState\":\"Succeeded\"},\"id\":\"q\",\"name\":\"c\",\"type\":\"refovgmkqsleyyvx\"}],\"nextLink\":\"jpkcattpng\"}"; + = "{\"value\":[{\"properties\":{\"subscriptionId\":\"ku\",\"displayName\":\"oskg\",\"provisioningState\":\"Failed\",\"acceptOwnershipUrl\":\"uimjmvx\",\"acceptOwnershipState\":\"Pending\",\"billingScope\":\"ugidyjrr\",\"workload\":\"Production\",\"resellerId\":\"osvexcsonpclhoc\",\"subscriptionOwnerId\":\"slkevle\",\"managementGroupId\":\"zfbuhf\",\"createdTime\":\"faxkffeii\",\"tags\":{\"shxmzsbbzoggigrx\":\"vmezy\",\"ptkoenkoukn\":\"burvjxxjnspy\",\"ngkpocipazy\":\"udwtiukbl\",\"gukgjnpiucgygevq\":\"o\"}},\"id\":\"typmrbpizcdrqjsd\",\"name\":\"ydnfyhxdeoejz\",\"type\":\"cwif\"},{\"properties\":{\"subscriptionId\":\"tgzfbishcbkh\",\"displayName\":\"deyeamdphagalpbu\",\"provisioningState\":\"Failed\",\"acceptOwnershipUrl\":\"pwhonowkg\",\"acceptOwnershipState\":\"Pending\",\"billingScope\":\"nkixzbinj\",\"workload\":\"DevTest\",\"resellerId\":\"tmryw\",\"subscriptionOwnerId\":\"zoqftiyqzrnkcqvy\",\"managementGroupId\":\"whzlsicohoq\",\"createdTime\":\"wvl\",\"tags\":{\"konocu\":\"vwhheunmmqhgyx\",\"zf\":\"oklyaxuconuq\",\"vjektcxsenh\":\"beypewrmjmw\"}},\"id\":\"rsffrzpwvlqdqgbi\",\"name\":\"ylihkaetckt\",\"type\":\"fcivfsnkym\"},{\"properties\":{\"subscriptionId\":\"qhjfbebr\",\"displayName\":\"xerf\",\"provisioningState\":\"Accepted\",\"acceptOwnershipUrl\":\"ttxfvjr\",\"acceptOwnershipState\":\"Completed\",\"billingScope\":\"hxepcyvahfnlj\",\"workload\":\"Production\",\"resellerId\":\"j\",\"subscriptionOwnerId\":\"ujqgidok\",\"managementGroupId\":\"ljyoxgvcltb\",\"createdTime\":\"ncghkje\",\"tags\":{\"smx\":\"hbijhtxfvgxb\",\"pvecxgodeb\":\"eh\",\"pukgriwflzlfb\":\"qkkrb\"}},\"id\":\"puz\",\"name\":\"cispnqzahmgkbr\",\"type\":\"yydhibnuqqk\"},{\"properties\":{\"subscriptionId\":\"a\",\"displayName\":\"gvtqagnbuynh\",\"provisioningState\":\"Failed\",\"acceptOwnershipUrl\":\"mebf\",\"acceptOwnershipState\":\"Pending\",\"billingScope\":\"butr\",\"workload\":\"Production\",\"resellerId\":\"azzmhjrunmpxt\",\"subscriptionOwnerId\":\"bh\",\"managementGroupId\":\"nlankxmyskpb\",\"createdTime\":\"nbtkcxywnytnr\",\"tags\":{\"czfc\":\"lqidyby\",\"rqlfktsthsucocmn\":\"haaxdbabphl\",\"ckzywbiexzfeyue\":\"yazttbtwwrqpue\"}},\"id\":\"ibx\",\"name\":\"jwbhqwalmuz\",\"type\":\"oxaepd\"}],\"nextLink\":\"jancu\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); SubscriptionManager manager = SubscriptionManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - PutAliasListResult response = manager.alias().listWithResponse(com.azure.core.util.Context.NONE).getValue(); + SubscriptionAliasListResult response + = manager.alias().listWithResponse(com.azure.core.util.Context.NONE).getValue(); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/BillingAccountPoliciesResponseInnerTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/BillingAccountPoliciesResponseInnerTests.java new file mode 100644 index 000000000000..fc1b7f71a9fc --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/BillingAccountPoliciesResponseInnerTests.java @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.fluent.models.BillingAccountPoliciesResponseInner; +import com.azure.resourcemanager.subscription.models.BillingAccountPoliciesResponseProperties; +import com.azure.resourcemanager.subscription.models.ServiceTenantResponse; +import java.util.Arrays; +import org.junit.jupiter.api.Assertions; + +public final class BillingAccountPoliciesResponseInnerTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + BillingAccountPoliciesResponseInner model = BinaryData.fromString( + "{\"properties\":{\"serviceTenants\":[{\"tenantId\":\"dntwndeicbtw\",\"tenantName\":\"zao\"},{\"tenantId\":\"uhrhcffcyddgl\",\"tenantName\":\"t\"}],\"allowTransfers\":true},\"id\":\"wpyeicxmqciwqvh\",\"name\":\"hix\",\"type\":\"igdtopbob\"}") + .toObject(BillingAccountPoliciesResponseInner.class); + Assertions.assertEquals("dntwndeicbtw", model.properties().serviceTenants().get(0).tenantId()); + Assertions.assertEquals("zao", model.properties().serviceTenants().get(0).tenantName()); + Assertions.assertTrue(model.properties().allowTransfers()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + BillingAccountPoliciesResponseInner model + = new BillingAccountPoliciesResponseInner().withProperties(new BillingAccountPoliciesResponseProperties() + .withServiceTenants( + Arrays.asList(new ServiceTenantResponse().withTenantId("dntwndeicbtw").withTenantName("zao"), + new ServiceTenantResponse().withTenantId("uhrhcffcyddgl").withTenantName("t"))) + .withAllowTransfers(true)); + model = BinaryData.fromObject(model).toObject(BillingAccountPoliciesResponseInner.class); + Assertions.assertEquals("dntwndeicbtw", model.properties().serviceTenants().get(0).tenantId()); + Assertions.assertEquals("zao", model.properties().serviceTenants().get(0).tenantName()); + Assertions.assertTrue(model.properties().allowTransfers()); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/BillingAccountPoliciesResponsePropertiesTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/BillingAccountPoliciesResponsePropertiesTests.java new file mode 100644 index 000000000000..a2f81c8a6dd9 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/BillingAccountPoliciesResponsePropertiesTests.java @@ -0,0 +1,36 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.models.BillingAccountPoliciesResponseProperties; +import com.azure.resourcemanager.subscription.models.ServiceTenantResponse; +import java.util.Arrays; +import org.junit.jupiter.api.Assertions; + +public final class BillingAccountPoliciesResponsePropertiesTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + BillingAccountPoliciesResponseProperties model = BinaryData.fromString( + "{\"serviceTenants\":[{\"tenantId\":\"m\",\"tenantName\":\"u\"},{\"tenantId\":\"a\",\"tenantName\":\"rzayv\"}],\"allowTransfers\":false}") + .toObject(BillingAccountPoliciesResponseProperties.class); + Assertions.assertEquals("m", model.serviceTenants().get(0).tenantId()); + Assertions.assertEquals("u", model.serviceTenants().get(0).tenantName()); + Assertions.assertFalse(model.allowTransfers()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + BillingAccountPoliciesResponseProperties model + = new BillingAccountPoliciesResponseProperties() + .withServiceTenants(Arrays.asList(new ServiceTenantResponse().withTenantId("m").withTenantName("u"), + new ServiceTenantResponse().withTenantId("a").withTenantName("rzayv"))) + .withAllowTransfers(false); + model = BinaryData.fromObject(model).toObject(BillingAccountPoliciesResponseProperties.class); + Assertions.assertEquals("m", model.serviceTenants().get(0).tenantId()); + Assertions.assertEquals("u", model.serviceTenants().get(0).tenantName()); + Assertions.assertFalse(model.allowTransfers()); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/BillingAccountsGetPolicyWithResponseMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/BillingAccountsGetPolicyWithResponseMockTests.java new file mode 100644 index 000000000000..15dedf40bb2d --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/BillingAccountsGetPolicyWithResponseMockTests.java @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.credential.AccessToken; +import com.azure.core.http.HttpClient; +import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; +import com.azure.core.test.http.MockHttpResponse; +import com.azure.resourcemanager.subscription.SubscriptionManager; +import com.azure.resourcemanager.subscription.models.BillingAccountPoliciesResponse; +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; + +public final class BillingAccountsGetPolicyWithResponseMockTests { + @Test + public void testGetPolicyWithResponse() throws Exception { + String responseStr + = "{\"properties\":{\"serviceTenants\":[{\"tenantId\":\"hsmtxpsiebtfhvp\",\"tenantName\":\"apskrdqm\"},{\"tenantId\":\"jdhtldwkyzxu\",\"tenantName\":\"kn\"},{\"tenantId\":\"scwsv\",\"tenantName\":\"otogtwrupqs\"}],\"allowTransfers\":false},\"id\":\"i\",\"name\":\"ykvceoveil\",\"type\":\"vnotyfjfcnj\"}"; + + HttpClient httpClient + = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); + SubscriptionManager manager = SubscriptionManager.configure() + .withHttpClient(httpClient) + .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); + + BillingAccountPoliciesResponse response = manager.billingAccounts() + .getPolicyWithResponse("baumnyqupedeoj", com.azure.core.util.Context.NONE) + .getValue(); + + Assertions.assertEquals("hsmtxpsiebtfhvp", response.properties().serviceTenants().get(0).tenantId()); + Assertions.assertEquals("apskrdqm", response.properties().serviceTenants().get(0).tenantName()); + Assertions.assertFalse(response.properties().allowTransfers()); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/CanceledSubscriptionIdInnerTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/CanceledSubscriptionIdInnerTests.java index fc7753b780df..d4a2bdb5efb0 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/CanceledSubscriptionIdInnerTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/CanceledSubscriptionIdInnerTests.java @@ -11,7 +11,7 @@ public final class CanceledSubscriptionIdInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { CanceledSubscriptionIdInner model - = BinaryData.fromString("{\"subscriptionId\":\"xth\"}").toObject(CanceledSubscriptionIdInner.class); + = BinaryData.fromString("{\"subscriptionId\":\"mhquvgjxp\"}").toObject(CanceledSubscriptionIdInner.class); } @org.junit.jupiter.api.Test diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/EnabledSubscriptionIdInnerTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/EnabledSubscriptionIdInnerTests.java index 1dca36d03d39..f288b143f4b3 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/EnabledSubscriptionIdInnerTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/EnabledSubscriptionIdInnerTests.java @@ -10,8 +10,8 @@ public final class EnabledSubscriptionIdInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - EnabledSubscriptionIdInner model = BinaryData.fromString("{\"subscriptionId\":\"fygxgispemvtzfk\"}") - .toObject(EnabledSubscriptionIdInner.class); + EnabledSubscriptionIdInner model + = BinaryData.fromString("{\"subscriptionId\":\"sybbejhph\"}").toObject(EnabledSubscriptionIdInner.class); } @org.junit.jupiter.api.Test diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/GetTenantPolicyListResponseTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/GetTenantPolicyListResponseTests.java new file mode 100644 index 000000000000..8449d1981848 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/GetTenantPolicyListResponseTests.java @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.models.GetTenantPolicyListResponse; + +public final class GetTenantPolicyListResponseTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + GetTenantPolicyListResponse model = BinaryData.fromString( + "{\"value\":[{\"properties\":{\"policyId\":\"qp\",\"blockSubscriptionsLeavingTenant\":true,\"blockSubscriptionsIntoTenant\":true,\"exemptedPrincipals\":[\"2b95eae0-4f72-4415-8670-7eafa754eca1\",\"aa241099-ea8c-412c-950c-0a19bcdfd64f\",\"edffc2d8-e98d-4083-b58d-ce32dc97fed0\"]},\"id\":\"pimexgstxgcpodg\",\"name\":\"aajrm\",\"type\":\"djwzrlov\"},{\"properties\":{\"policyId\":\"whijcoejctbza\",\"blockSubscriptionsLeavingTenant\":true,\"blockSubscriptionsIntoTenant\":false,\"exemptedPrincipals\":[\"9b259564-6bc1-4d45-8c15-53935445a00b\",\"4a7d196e-1c00-4d40-b1e0-741e384bd788\",\"68103724-7e6f-4f87-a0c5-4bdfce25d21d\"]},\"id\":\"bfkgukdkex\",\"name\":\"ppofmxaxcfjpgdd\",\"type\":\"ocjjxhvpmouexh\"}],\"nextLink\":\"xibqeojnx\"}") + .toObject(GetTenantPolicyListResponse.class); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + GetTenantPolicyListResponse model = new GetTenantPolicyListResponse(); + model = BinaryData.fromObject(model).toObject(GetTenantPolicyListResponse.class); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/GetTenantPolicyResponseInnerTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/GetTenantPolicyResponseInnerTests.java new file mode 100644 index 000000000000..c1ba26fcdc29 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/GetTenantPolicyResponseInnerTests.java @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.fluent.models.GetTenantPolicyResponseInner; +import com.azure.resourcemanager.subscription.models.TenantPolicy; +import java.util.Arrays; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; + +public final class GetTenantPolicyResponseInnerTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + GetTenantPolicyResponseInner model = BinaryData.fromString( + "{\"properties\":{\"policyId\":\"rlkhbzhfepgzgq\",\"blockSubscriptionsLeavingTenant\":false,\"blockSubscriptionsIntoTenant\":true,\"exemptedPrincipals\":[\"faa5569a-344c-499a-9038-62aefecd133c\",\"fec1e915-abaa-4928-88c9-54a9753b0ee7\",\"b7bcbf80-dfdb-48a4-9820-9f9bf99ccde9\"]},\"id\":\"c\",\"name\":\"aierhhb\",\"type\":\"sglumma\"}") + .toObject(GetTenantPolicyResponseInner.class); + Assertions.assertFalse(model.properties().blockSubscriptionsLeavingTenant()); + Assertions.assertTrue(model.properties().blockSubscriptionsIntoTenant()); + Assertions.assertEquals(UUID.fromString("faa5569a-344c-499a-9038-62aefecd133c"), + model.properties().exemptedPrincipals().get(0)); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + GetTenantPolicyResponseInner model = new GetTenantPolicyResponseInner() + .withProperties(new TenantPolicy().withBlockSubscriptionsLeavingTenant(false) + .withBlockSubscriptionsIntoTenant(true) + .withExemptedPrincipals(Arrays.asList(UUID.fromString("faa5569a-344c-499a-9038-62aefecd133c"), + UUID.fromString("fec1e915-abaa-4928-88c9-54a9753b0ee7"), + UUID.fromString("b7bcbf80-dfdb-48a4-9820-9f9bf99ccde9")))); + model = BinaryData.fromObject(model).toObject(GetTenantPolicyResponseInner.class); + Assertions.assertFalse(model.properties().blockSubscriptionsLeavingTenant()); + Assertions.assertTrue(model.properties().blockSubscriptionsIntoTenant()); + Assertions.assertEquals(UUID.fromString("faa5569a-344c-499a-9038-62aefecd133c"), + model.properties().exemptedPrincipals().get(0)); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/LocationInnerTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/LocationInnerTests.java deleted file mode 100644 index 65b1c1b686d7..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/LocationInnerTests.java +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.generated; - -import com.azure.core.util.BinaryData; -import com.azure.resourcemanager.subscription.fluent.models.LocationInner; - -public final class LocationInnerTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - LocationInner model = BinaryData.fromString( - "{\"id\":\"pewnw\",\"subscriptionId\":\"itjz\",\"name\":\"lusarh\",\"displayName\":\"fcqhsmyurkd\",\"latitude\":\"lx\",\"longitude\":\"kuksjtxukcdm\"}") - .toObject(LocationInner.class); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - LocationInner model = new LocationInner(); - model = BinaryData.fromObject(model).toObject(LocationInner.class); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/LocationListResultTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/LocationListResultTests.java deleted file mode 100644 index 8c888458e351..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/LocationListResultTests.java +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.generated; - -import com.azure.core.util.BinaryData; -import com.azure.resourcemanager.subscription.fluent.models.LocationInner; -import com.azure.resourcemanager.subscription.models.LocationListResult; -import java.util.Arrays; - -public final class LocationListResultTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - LocationListResult model = BinaryData.fromString( - "{\"value\":[{\"id\":\"quvgjxpybczme\",\"subscriptionId\":\"tzopbsphrupidgsy\",\"name\":\"ejhphoyc\",\"displayName\":\"xaobhdxbmtqioqjz\",\"latitude\":\"tbmufpo\",\"longitude\":\"oizh\"},{\"id\":\"rxybqsoq\",\"subscriptionId\":\"gkdmb\",\"name\":\"zlobcufpd\",\"displayName\":\"rbt\",\"latitude\":\"qjnqglhqgnufoooj\",\"longitude\":\"ifsqesaagdfmg\"},{\"id\":\"lhjxr\",\"subscriptionId\":\"kwm\",\"name\":\"ktsizntocipaou\",\"displayName\":\"psqucmpoyf\",\"latitude\":\"fogknygjofjdde\",\"longitude\":\"rd\"}]}") - .toObject(LocationListResult.class); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - LocationListResult model = new LocationListResult() - .withValue(Arrays.asList(new LocationInner(), new LocationInner(), new LocationInner())); - model = BinaryData.fromObject(model).toObject(LocationListResult.class); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationDisplayTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationDisplayTests.java index ce6142786e6e..ccf13e3f44d6 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationDisplayTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationDisplayTests.java @@ -11,21 +11,25 @@ public final class OperationDisplayTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { - OperationDisplay model - = BinaryData.fromString("{\"provider\":\"ftyxolniw\",\"resource\":\"cukjf\",\"operation\":\"iawxklry\"}") - .toObject(OperationDisplay.class); - Assertions.assertEquals("ftyxolniw", model.provider()); - Assertions.assertEquals("cukjf", model.resource()); - Assertions.assertEquals("iawxklry", model.operation()); + OperationDisplay model = BinaryData.fromString( + "{\"provider\":\"ktsizntocipaou\",\"resource\":\"psqucmpoyf\",\"operation\":\"fogknygjofjdde\",\"description\":\"rd\"}") + .toObject(OperationDisplay.class); + Assertions.assertEquals("ktsizntocipaou", model.provider()); + Assertions.assertEquals("psqucmpoyf", model.resource()); + Assertions.assertEquals("fogknygjofjdde", model.operation()); + Assertions.assertEquals("rd", model.description()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - OperationDisplay model - = new OperationDisplay().withProvider("ftyxolniw").withResource("cukjf").withOperation("iawxklry"); + OperationDisplay model = new OperationDisplay().withProvider("ktsizntocipaou") + .withResource("psqucmpoyf") + .withOperation("fogknygjofjdde") + .withDescription("rd"); model = BinaryData.fromObject(model).toObject(OperationDisplay.class); - Assertions.assertEquals("ftyxolniw", model.provider()); - Assertions.assertEquals("cukjf", model.resource()); - Assertions.assertEquals("iawxklry", model.operation()); + Assertions.assertEquals("ktsizntocipaou", model.provider()); + Assertions.assertEquals("psqucmpoyf", model.resource()); + Assertions.assertEquals("fogknygjofjdde", model.operation()); + Assertions.assertEquals("rd", model.description()); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationInnerTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationInnerTests.java new file mode 100644 index 000000000000..0930948726d7 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationInnerTests.java @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.fluent.models.OperationInner; +import com.azure.resourcemanager.subscription.models.OperationDisplay; +import org.junit.jupiter.api.Assertions; + +public final class OperationInnerTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + OperationInner model = BinaryData.fromString( + "{\"name\":\"pdznrbtcqqjnqgl\",\"isDataAction\":false,\"display\":{\"provider\":\"foooj\",\"resource\":\"ifsqesaagdfmg\",\"operation\":\"lhjxr\",\"description\":\"kwm\"}}") + .toObject(OperationInner.class); + Assertions.assertEquals("pdznrbtcqqjnqgl", model.name()); + Assertions.assertFalse(model.isDataAction()); + Assertions.assertEquals("foooj", model.display().provider()); + Assertions.assertEquals("ifsqesaagdfmg", model.display().resource()); + Assertions.assertEquals("lhjxr", model.display().operation()); + Assertions.assertEquals("kwm", model.display().description()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + OperationInner model = new OperationInner().withName("pdznrbtcqqjnqgl") + .withIsDataAction(false) + .withDisplay(new OperationDisplay().withProvider("foooj") + .withResource("ifsqesaagdfmg") + .withOperation("lhjxr") + .withDescription("kwm")); + model = BinaryData.fromObject(model).toObject(OperationInner.class); + Assertions.assertEquals("pdznrbtcqqjnqgl", model.name()); + Assertions.assertFalse(model.isDataAction()); + Assertions.assertEquals("foooj", model.display().provider()); + Assertions.assertEquals("ifsqesaagdfmg", model.display().resource()); + Assertions.assertEquals("lhjxr", model.display().operation()); + Assertions.assertEquals("kwm", model.display().description()); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationListResultInnerTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationListResultInnerTests.java deleted file mode 100644 index 8bdcb2d98832..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationListResultInnerTests.java +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.generated; - -import com.azure.core.util.BinaryData; -import com.azure.resourcemanager.subscription.fluent.models.OperationListResultInner; -import com.azure.resourcemanager.subscription.models.Operation; -import com.azure.resourcemanager.subscription.models.OperationDisplay; -import java.util.Arrays; -import org.junit.jupiter.api.Assertions; - -public final class OperationListResultInnerTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - OperationListResultInner model = BinaryData.fromString( - "{\"value\":[{\"name\":\"ljofxqeofjaeqjh\",\"display\":{\"provider\":\"asvm\",\"resource\":\"jqul\",\"operation\":\"sntnbybkzgcw\"}},{\"name\":\"clxxwrljdo\",\"display\":{\"provider\":\"cqvkocrcjdkwtn\",\"resource\":\"bnjbiksqrglssain\",\"operation\":\"jwnzlljfmp\"}},{\"name\":\"ebvmgxsabkyqd\",\"display\":{\"provider\":\"itcjczdz\",\"resource\":\"ndhkrw\",\"operation\":\"appd\"}}],\"nextLink\":\"dkvwrwjfe\"}") - .toObject(OperationListResultInner.class); - Assertions.assertEquals("ljofxqeofjaeqjh", model.value().get(0).name()); - Assertions.assertEquals("asvm", model.value().get(0).display().provider()); - Assertions.assertEquals("jqul", model.value().get(0).display().resource()); - Assertions.assertEquals("sntnbybkzgcw", model.value().get(0).display().operation()); - Assertions.assertEquals("dkvwrwjfe", model.nextLink()); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - OperationListResultInner model = new OperationListResultInner() - .withValue(Arrays.asList( - new Operation().withName("ljofxqeofjaeqjh") - .withDisplay( - new OperationDisplay().withProvider("asvm").withResource("jqul").withOperation("sntnbybkzgcw")), - new Operation().withName("clxxwrljdo") - .withDisplay(new OperationDisplay().withProvider("cqvkocrcjdkwtn") - .withResource("bnjbiksqrglssain") - .withOperation("jwnzlljfmp")), - new Operation().withName("ebvmgxsabkyqd") - .withDisplay( - new OperationDisplay().withProvider("itcjczdz").withResource("ndhkrw").withOperation("appd")))) - .withNextLink("dkvwrwjfe"); - model = BinaryData.fromObject(model).toObject(OperationListResultInner.class); - Assertions.assertEquals("ljofxqeofjaeqjh", model.value().get(0).name()); - Assertions.assertEquals("asvm", model.value().get(0).display().provider()); - Assertions.assertEquals("jqul", model.value().get(0).display().resource()); - Assertions.assertEquals("sntnbybkzgcw", model.value().get(0).display().operation()); - Assertions.assertEquals("dkvwrwjfe", model.nextLink()); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationListResultTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationListResultTests.java new file mode 100644 index 000000000000..f100e8dcb77e --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationListResultTests.java @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.fluent.models.OperationInner; +import com.azure.resourcemanager.subscription.models.OperationDisplay; +import com.azure.resourcemanager.subscription.models.OperationListResult; +import java.util.Arrays; +import org.junit.jupiter.api.Assertions; + +public final class OperationListResultTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + OperationListResult model = BinaryData.fromString( + "{\"value\":[{\"name\":\"qj\",\"isDataAction\":false,\"display\":{\"provider\":\"muf\",\"resource\":\"wnoi\",\"operation\":\"wlrxyb\",\"description\":\"oqijgkdmbpaz\"}}],\"nextLink\":\"bc\"}") + .toObject(OperationListResult.class); + Assertions.assertEquals("qj", model.value().get(0).name()); + Assertions.assertFalse(model.value().get(0).isDataAction()); + Assertions.assertEquals("muf", model.value().get(0).display().provider()); + Assertions.assertEquals("wnoi", model.value().get(0).display().resource()); + Assertions.assertEquals("wlrxyb", model.value().get(0).display().operation()); + Assertions.assertEquals("oqijgkdmbpaz", model.value().get(0).display().description()); + Assertions.assertEquals("bc", model.nextLink()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + OperationListResult model + = new OperationListResult().withValue(Arrays.asList(new OperationInner().withName("qj") + .withIsDataAction(false) + .withDisplay(new OperationDisplay().withProvider("muf") + .withResource("wnoi") + .withOperation("wlrxyb") + .withDescription("oqijgkdmbpaz")))) + .withNextLink("bc"); + model = BinaryData.fromObject(model).toObject(OperationListResult.class); + Assertions.assertEquals("qj", model.value().get(0).name()); + Assertions.assertFalse(model.value().get(0).isDataAction()); + Assertions.assertEquals("muf", model.value().get(0).display().provider()); + Assertions.assertEquals("wnoi", model.value().get(0).display().resource()); + Assertions.assertEquals("wlrxyb", model.value().get(0).display().operation()); + Assertions.assertEquals("oqijgkdmbpaz", model.value().get(0).display().description()); + Assertions.assertEquals("bc", model.nextLink()); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationTests.java deleted file mode 100644 index 4c54e5d958f6..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationTests.java +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.generated; - -import com.azure.core.util.BinaryData; -import com.azure.resourcemanager.subscription.models.Operation; -import com.azure.resourcemanager.subscription.models.OperationDisplay; -import org.junit.jupiter.api.Assertions; - -public final class OperationTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - Operation model = BinaryData.fromString( - "{\"name\":\"nhutjeltmrldhugj\",\"display\":{\"provider\":\"atqxho\",\"resource\":\"geablgphuticndvk\",\"operation\":\"zwyiftyhxhur\"}}") - .toObject(Operation.class); - Assertions.assertEquals("nhutjeltmrldhugj", model.name()); - Assertions.assertEquals("atqxho", model.display().provider()); - Assertions.assertEquals("geablgphuticndvk", model.display().resource()); - Assertions.assertEquals("zwyiftyhxhur", model.display().operation()); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - Operation model = new Operation().withName("nhutjeltmrldhugj") - .withDisplay(new OperationDisplay().withProvider("atqxho") - .withResource("geablgphuticndvk") - .withOperation("zwyiftyhxhur")); - model = BinaryData.fromObject(model).toObject(Operation.class); - Assertions.assertEquals("nhutjeltmrldhugj", model.name()); - Assertions.assertEquals("atqxho", model.display().provider()); - Assertions.assertEquals("geablgphuticndvk", model.display().resource()); - Assertions.assertEquals("zwyiftyhxhur", model.display().operation()); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationsListMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationsListMockTests.java new file mode 100644 index 000000000000..9d236d011483 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationsListMockTests.java @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.credential.AccessToken; +import com.azure.core.http.HttpClient; +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; +import com.azure.core.test.http.MockHttpResponse; +import com.azure.resourcemanager.subscription.SubscriptionManager; +import com.azure.resourcemanager.subscription.models.Operation; +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; + +public final class OperationsListMockTests { + @Test + public void testList() throws Exception { + String responseStr + = "{\"value\":[{\"name\":\"djpjumasxazjpq\",\"isDataAction\":false,\"display\":{\"provider\":\"lhbxxhejjzzvdud\",\"resource\":\"dslfhotwmcy\",\"operation\":\"wlbjnpgacftade\",\"description\":\"nltyfsoppusuesnz\"}}]}"; + + HttpClient httpClient + = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); + SubscriptionManager manager = SubscriptionManager.configure() + .withHttpClient(httpClient) + .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); + + PagedIterable response = manager.operations().list(com.azure.core.util.Context.NONE); + + Assertions.assertEquals("djpjumasxazjpq", response.iterator().next().name()); + Assertions.assertFalse(response.iterator().next().isDataAction()); + Assertions.assertEquals("lhbxxhejjzzvdud", response.iterator().next().display().provider()); + Assertions.assertEquals("dslfhotwmcy", response.iterator().next().display().resource()); + Assertions.assertEquals("wlbjnpgacftade", response.iterator().next().display().operation()); + Assertions.assertEquals("nltyfsoppusuesnz", response.iterator().next().display().description()); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationsListWithResponseMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationsListWithResponseMockTests.java deleted file mode 100644 index e27cccc19387..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/OperationsListWithResponseMockTests.java +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.generated; - -import com.azure.core.credential.AccessToken; -import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; -import com.azure.core.management.profile.AzureProfile; -import com.azure.core.test.http.MockHttpResponse; -import com.azure.resourcemanager.subscription.SubscriptionManager; -import com.azure.resourcemanager.subscription.models.OperationListResult; -import java.nio.charset.StandardCharsets; -import java.time.OffsetDateTime; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import reactor.core.publisher.Mono; - -public final class OperationsListWithResponseMockTests { - @Test - public void testListWithResponse() throws Exception { - String responseStr - = "{\"value\":[{\"name\":\"rhcffcydd\",\"display\":{\"provider\":\"jthjqkwpyei\",\"resource\":\"mqc\",\"operation\":\"q\"}},{\"name\":\"khixuigdtopbo\",\"display\":{\"provider\":\"ghmewuam\",\"resource\":\"hrzayvvtpgvdf\",\"operation\":\"otkftutqxlngx\"}},{\"name\":\"fgugnxkrxdqmid\",\"display\":{\"provider\":\"zrvqdr\",\"resource\":\"hjybigehoqfbo\",\"operation\":\"kanyktzlcuiywg\"}},{\"name\":\"wgndrvynhzgpp\",\"display\":{\"provider\":\"gyncocpecfvmmc\",\"resource\":\"fsxlzevgbmqjqa\",\"operation\":\"y\"}}],\"nextLink\":\"ivkwlzuvccfwnfnb\"}"; - - HttpClient httpClient - = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); - SubscriptionManager manager = SubscriptionManager.configure() - .withHttpClient(httpClient) - .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); - - OperationListResult response - = manager.operations().listWithResponse(com.azure.core.util.Context.NONE).getValue(); - - Assertions.assertEquals("rhcffcydd", response.value().get(0).name()); - Assertions.assertEquals("jthjqkwpyei", response.value().get(0).display().provider()); - Assertions.assertEquals("mqc", response.value().get(0).display().resource()); - Assertions.assertEquals("q", response.value().get(0).display().operation()); - Assertions.assertEquals("ivkwlzuvccfwnfnb", response.nextLink()); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasListResultInnerTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasListResultInnerTests.java deleted file mode 100644 index 1470c3b4b69d..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasListResultInnerTests.java +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.generated; - -import com.azure.core.util.BinaryData; -import com.azure.resourcemanager.subscription.fluent.models.PutAliasListResultInner; - -public final class PutAliasListResultInnerTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - PutAliasListResultInner model = BinaryData.fromString( - "{\"value\":[{\"properties\":{\"subscriptionId\":\"qux\",\"provisioningState\":\"Succeeded\"},\"id\":\"yjgzjaoyfhrtxiln\",\"name\":\"rkujy\",\"type\":\"vlejuvfqa\"},{\"properties\":{\"subscriptionId\":\"yxwjkcp\",\"provisioningState\":\"Failed\"},\"id\":\"wbxgjvt\",\"name\":\"vpys\",\"type\":\"zdn\"}],\"nextLink\":\"jq\"}") - .toObject(PutAliasListResultInner.class); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - PutAliasListResultInner model = new PutAliasListResultInner(); - model = BinaryData.fromObject(model).toObject(PutAliasListResultInner.class); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasRequestAdditionalPropertiesTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasRequestAdditionalPropertiesTests.java new file mode 100644 index 000000000000..b2171a0a57df --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasRequestAdditionalPropertiesTests.java @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.models.PutAliasRequestAdditionalProperties; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.Assertions; + +public final class PutAliasRequestAdditionalPropertiesTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + PutAliasRequestAdditionalProperties model = BinaryData.fromString( + "{\"managementGroupId\":\"wvukx\",\"subscriptionTenantId\":\"udccsnhsjc\",\"subscriptionOwnerId\":\"ejhkry\",\"tags\":{\"lokjyemkk\":\"apcz\",\"joxzjnchgejspodm\":\"ni\",\"h\":\"ilzyd\"}}") + .toObject(PutAliasRequestAdditionalProperties.class); + Assertions.assertEquals("wvukx", model.managementGroupId()); + Assertions.assertEquals("udccsnhsjc", model.subscriptionTenantId()); + Assertions.assertEquals("ejhkry", model.subscriptionOwnerId()); + Assertions.assertEquals("apcz", model.tags().get("lokjyemkk")); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + PutAliasRequestAdditionalProperties model + = new PutAliasRequestAdditionalProperties().withManagementGroupId("wvukx") + .withSubscriptionTenantId("udccsnhsjc") + .withSubscriptionOwnerId("ejhkry") + .withTags(mapOf("lokjyemkk", "apcz", "joxzjnchgejspodm", "ni", "h", "ilzyd")); + model = BinaryData.fromObject(model).toObject(PutAliasRequestAdditionalProperties.class); + Assertions.assertEquals("wvukx", model.managementGroupId()); + Assertions.assertEquals("udccsnhsjc", model.subscriptionTenantId()); + Assertions.assertEquals("ejhkry", model.subscriptionOwnerId()); + Assertions.assertEquals("apcz", model.tags().get("lokjyemkk")); + } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasRequestPropertiesTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasRequestPropertiesTests.java index e28d914e45f7..559f4b4fb6f6 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasRequestPropertiesTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasRequestPropertiesTests.java @@ -5,35 +5,62 @@ package com.azure.resourcemanager.subscription.generated; import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.models.PutAliasRequestAdditionalProperties; import com.azure.resourcemanager.subscription.models.PutAliasRequestProperties; import com.azure.resourcemanager.subscription.models.Workload; +import java.util.HashMap; +import java.util.Map; import org.junit.jupiter.api.Assertions; public final class PutAliasRequestPropertiesTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { PutAliasRequestProperties model = BinaryData.fromString( - "{\"displayName\":\"akeqs\",\"workload\":\"Production\",\"billingScope\":\"zqqedq\",\"subscriptionId\":\"bciqfouflm\",\"resellerId\":\"kzsmodm\"}") + "{\"displayName\":\"nryrtihf\",\"workload\":\"DevTest\",\"billingScope\":\"bpzvgn\",\"subscriptionId\":\"symglzufcyz\",\"resellerId\":\"hdbihan\",\"additionalProperties\":{\"managementGroupId\":\"fcbjysagithxqha\",\"subscriptionTenantId\":\"fpikxwczb\",\"subscriptionOwnerId\":\"cnpqxuhivyqniwby\",\"tags\":{\"mjgr\":\"xvd\"}}}") .toObject(PutAliasRequestProperties.class); - Assertions.assertEquals("akeqs", model.displayName()); - Assertions.assertEquals(Workload.PRODUCTION, model.workload()); - Assertions.assertEquals("zqqedq", model.billingScope()); - Assertions.assertEquals("bciqfouflm", model.subscriptionId()); - Assertions.assertEquals("kzsmodm", model.resellerId()); + Assertions.assertEquals("nryrtihf", model.displayName()); + Assertions.assertEquals(Workload.DEV_TEST, model.workload()); + Assertions.assertEquals("bpzvgn", model.billingScope()); + Assertions.assertEquals("symglzufcyz", model.subscriptionId()); + Assertions.assertEquals("hdbihan", model.resellerId()); + Assertions.assertEquals("fcbjysagithxqha", model.additionalProperties().managementGroupId()); + Assertions.assertEquals("fpikxwczb", model.additionalProperties().subscriptionTenantId()); + Assertions.assertEquals("cnpqxuhivyqniwby", model.additionalProperties().subscriptionOwnerId()); + Assertions.assertEquals("xvd", model.additionalProperties().tags().get("mjgr")); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - PutAliasRequestProperties model = new PutAliasRequestProperties().withDisplayName("akeqs") - .withWorkload(Workload.PRODUCTION) - .withBillingScope("zqqedq") - .withSubscriptionId("bciqfouflm") - .withResellerId("kzsmodm"); + PutAliasRequestProperties model = new PutAliasRequestProperties().withDisplayName("nryrtihf") + .withWorkload(Workload.DEV_TEST) + .withBillingScope("bpzvgn") + .withSubscriptionId("symglzufcyz") + .withResellerId("hdbihan") + .withAdditionalProperties(new PutAliasRequestAdditionalProperties().withManagementGroupId("fcbjysagithxqha") + .withSubscriptionTenantId("fpikxwczb") + .withSubscriptionOwnerId("cnpqxuhivyqniwby") + .withTags(mapOf("mjgr", "xvd"))); model = BinaryData.fromObject(model).toObject(PutAliasRequestProperties.class); - Assertions.assertEquals("akeqs", model.displayName()); - Assertions.assertEquals(Workload.PRODUCTION, model.workload()); - Assertions.assertEquals("zqqedq", model.billingScope()); - Assertions.assertEquals("bciqfouflm", model.subscriptionId()); - Assertions.assertEquals("kzsmodm", model.resellerId()); + Assertions.assertEquals("nryrtihf", model.displayName()); + Assertions.assertEquals(Workload.DEV_TEST, model.workload()); + Assertions.assertEquals("bpzvgn", model.billingScope()); + Assertions.assertEquals("symglzufcyz", model.subscriptionId()); + Assertions.assertEquals("hdbihan", model.resellerId()); + Assertions.assertEquals("fcbjysagithxqha", model.additionalProperties().managementGroupId()); + Assertions.assertEquals("fpikxwczb", model.additionalProperties().subscriptionTenantId()); + Assertions.assertEquals("cnpqxuhivyqniwby", model.additionalProperties().subscriptionOwnerId()); + Assertions.assertEquals("xvd", model.additionalProperties().tags().get("mjgr")); + } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasRequestTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasRequestTests.java index 8d243d5eb163..104efc9ebf6f 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasRequestTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasRequestTests.java @@ -6,36 +6,63 @@ import com.azure.core.util.BinaryData; import com.azure.resourcemanager.subscription.models.PutAliasRequest; +import com.azure.resourcemanager.subscription.models.PutAliasRequestAdditionalProperties; import com.azure.resourcemanager.subscription.models.PutAliasRequestProperties; import com.azure.resourcemanager.subscription.models.Workload; +import java.util.HashMap; +import java.util.Map; import org.junit.jupiter.api.Assertions; public final class PutAliasRequestTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { PutAliasRequest model = BinaryData.fromString( - "{\"properties\":{\"displayName\":\"wckbasyypnd\",\"workload\":\"Production\",\"billingScope\":\"cbacphejkotynqg\",\"subscriptionId\":\"l\",\"resellerId\":\"dlikwyqkgfgibma\"}}") + "{\"properties\":{\"displayName\":\"ewnwreitjzyfl\",\"workload\":\"DevTest\",\"billingScope\":\"hmofc\",\"subscriptionId\":\"smy\",\"resellerId\":\"kdtmlxhekuk\",\"additionalProperties\":{\"managementGroupId\":\"xukcdmpar\",\"subscriptionTenantId\":\"y\",\"subscriptionOwnerId\":\"nzwuxzd\",\"tags\":{\"u\":\"yrlhmwhfpmrqobm\"}}}}") .toObject(PutAliasRequest.class); - Assertions.assertEquals("wckbasyypnd", model.properties().displayName()); - Assertions.assertEquals(Workload.PRODUCTION, model.properties().workload()); - Assertions.assertEquals("cbacphejkotynqg", model.properties().billingScope()); - Assertions.assertEquals("l", model.properties().subscriptionId()); - Assertions.assertEquals("dlikwyqkgfgibma", model.properties().resellerId()); + Assertions.assertEquals("ewnwreitjzyfl", model.properties().displayName()); + Assertions.assertEquals(Workload.DEV_TEST, model.properties().workload()); + Assertions.assertEquals("hmofc", model.properties().billingScope()); + Assertions.assertEquals("smy", model.properties().subscriptionId()); + Assertions.assertEquals("kdtmlxhekuk", model.properties().resellerId()); + Assertions.assertEquals("xukcdmpar", model.properties().additionalProperties().managementGroupId()); + Assertions.assertEquals("y", model.properties().additionalProperties().subscriptionTenantId()); + Assertions.assertEquals("nzwuxzd", model.properties().additionalProperties().subscriptionOwnerId()); + Assertions.assertEquals("yrlhmwhfpmrqobm", model.properties().additionalProperties().tags().get("u")); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { PutAliasRequest model - = new PutAliasRequest().withProperties(new PutAliasRequestProperties().withDisplayName("wckbasyypnd") - .withWorkload(Workload.PRODUCTION) - .withBillingScope("cbacphejkotynqg") - .withSubscriptionId("l") - .withResellerId("dlikwyqkgfgibma")); + = new PutAliasRequest().withProperties(new PutAliasRequestProperties().withDisplayName("ewnwreitjzyfl") + .withWorkload(Workload.DEV_TEST) + .withBillingScope("hmofc") + .withSubscriptionId("smy") + .withResellerId("kdtmlxhekuk") + .withAdditionalProperties(new PutAliasRequestAdditionalProperties().withManagementGroupId("xukcdmpar") + .withSubscriptionTenantId("y") + .withSubscriptionOwnerId("nzwuxzd") + .withTags(mapOf("u", "yrlhmwhfpmrqobm")))); model = BinaryData.fromObject(model).toObject(PutAliasRequest.class); - Assertions.assertEquals("wckbasyypnd", model.properties().displayName()); - Assertions.assertEquals(Workload.PRODUCTION, model.properties().workload()); - Assertions.assertEquals("cbacphejkotynqg", model.properties().billingScope()); - Assertions.assertEquals("l", model.properties().subscriptionId()); - Assertions.assertEquals("dlikwyqkgfgibma", model.properties().resellerId()); + Assertions.assertEquals("ewnwreitjzyfl", model.properties().displayName()); + Assertions.assertEquals(Workload.DEV_TEST, model.properties().workload()); + Assertions.assertEquals("hmofc", model.properties().billingScope()); + Assertions.assertEquals("smy", model.properties().subscriptionId()); + Assertions.assertEquals("kdtmlxhekuk", model.properties().resellerId()); + Assertions.assertEquals("xukcdmpar", model.properties().additionalProperties().managementGroupId()); + Assertions.assertEquals("y", model.properties().additionalProperties().subscriptionTenantId()); + Assertions.assertEquals("nzwuxzd", model.properties().additionalProperties().subscriptionOwnerId()); + Assertions.assertEquals("yrlhmwhfpmrqobm", model.properties().additionalProperties().tags().get("u")); + } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasResponseInnerTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasResponseInnerTests.java deleted file mode 100644 index d4dcfde8e465..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasResponseInnerTests.java +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.generated; - -import com.azure.core.util.BinaryData; -import com.azure.resourcemanager.subscription.fluent.models.PutAliasResponseInner; -import com.azure.resourcemanager.subscription.models.ProvisioningState; -import com.azure.resourcemanager.subscription.models.PutAliasResponseProperties; -import org.junit.jupiter.api.Assertions; - -public final class PutAliasResponseInnerTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - PutAliasResponseInner model = BinaryData.fromString( - "{\"properties\":{\"subscriptionId\":\"ugpbkw\",\"provisioningState\":\"Succeeded\"},\"id\":\"tduqktapspwgcuer\",\"name\":\"umkdosvqwhbmd\",\"type\":\"bbjfddgmbmbexp\"}") - .toObject(PutAliasResponseInner.class); - Assertions.assertEquals(ProvisioningState.SUCCEEDED, model.properties().provisioningState()); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - PutAliasResponseInner model = new PutAliasResponseInner() - .withProperties(new PutAliasResponseProperties().withProvisioningState(ProvisioningState.SUCCEEDED)); - model = BinaryData.fromObject(model).toObject(PutAliasResponseInner.class); - Assertions.assertEquals(ProvisioningState.SUCCEEDED, model.properties().provisioningState()); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasResponsePropertiesTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasResponsePropertiesTests.java deleted file mode 100644 index 3483d03b2533..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutAliasResponsePropertiesTests.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.generated; - -import com.azure.core.util.BinaryData; -import com.azure.resourcemanager.subscription.models.ProvisioningState; -import com.azure.resourcemanager.subscription.models.PutAliasResponseProperties; -import org.junit.jupiter.api.Assertions; - -public final class PutAliasResponsePropertiesTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - PutAliasResponseProperties model - = BinaryData.fromString("{\"subscriptionId\":\"htqqrolfp\",\"provisioningState\":\"Failed\"}") - .toObject(PutAliasResponseProperties.class); - Assertions.assertEquals(ProvisioningState.FAILED, model.provisioningState()); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - PutAliasResponseProperties model - = new PutAliasResponseProperties().withProvisioningState(ProvisioningState.FAILED); - model = BinaryData.fromObject(model).toObject(PutAliasResponseProperties.class); - Assertions.assertEquals(ProvisioningState.FAILED, model.provisioningState()); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutTenantPolicyRequestPropertiesTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutTenantPolicyRequestPropertiesTests.java new file mode 100644 index 000000000000..8407504f3a65 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/PutTenantPolicyRequestPropertiesTests.java @@ -0,0 +1,37 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.models.PutTenantPolicyRequestProperties; +import java.util.Arrays; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; + +public final class PutTenantPolicyRequestPropertiesTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + PutTenantPolicyRequestProperties model = BinaryData.fromString( + "{\"blockSubscriptionsLeavingTenant\":false,\"blockSubscriptionsIntoTenant\":true,\"exemptedPrincipals\":[\"51f863b4-2638-467d-835b-0be19b493036\"]}") + .toObject(PutTenantPolicyRequestProperties.class); + Assertions.assertFalse(model.blockSubscriptionsLeavingTenant()); + Assertions.assertTrue(model.blockSubscriptionsIntoTenant()); + Assertions.assertEquals(UUID.fromString("51f863b4-2638-467d-835b-0be19b493036"), + model.exemptedPrincipals().get(0)); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + PutTenantPolicyRequestProperties model + = new PutTenantPolicyRequestProperties().withBlockSubscriptionsLeavingTenant(false) + .withBlockSubscriptionsIntoTenant(true) + .withExemptedPrincipals(Arrays.asList(UUID.fromString("51f863b4-2638-467d-835b-0be19b493036"))); + model = BinaryData.fromObject(model).toObject(PutTenantPolicyRequestProperties.class); + Assertions.assertFalse(model.blockSubscriptionsLeavingTenant()); + Assertions.assertTrue(model.blockSubscriptionsIntoTenant()); + Assertions.assertEquals(UUID.fromString("51f863b4-2638-467d-835b-0be19b493036"), + model.exemptedPrincipals().get(0)); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/RenamedSubscriptionIdInnerTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/RenamedSubscriptionIdInnerTests.java index eadd9175b958..485864d895fc 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/RenamedSubscriptionIdInnerTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/RenamedSubscriptionIdInnerTests.java @@ -11,7 +11,7 @@ public final class RenamedSubscriptionIdInnerTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { RenamedSubscriptionIdInner model - = BinaryData.fromString("{\"subscriptionId\":\"ngbwjz\"}").toObject(RenamedSubscriptionIdInner.class); + = BinaryData.fromString("{\"subscriptionId\":\"upi\"}").toObject(RenamedSubscriptionIdInner.class); } @org.junit.jupiter.api.Test diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/ServiceTenantResponseTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/ServiceTenantResponseTests.java new file mode 100644 index 000000000000..1f6f5d001f3d --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/ServiceTenantResponseTests.java @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.models.ServiceTenantResponse; +import org.junit.jupiter.api.Assertions; + +public final class ServiceTenantResponseTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + ServiceTenantResponse model = BinaryData.fromString("{\"tenantId\":\"vdfgiotk\",\"tenantName\":\"utqxlngx\"}") + .toObject(ServiceTenantResponse.class); + Assertions.assertEquals("vdfgiotk", model.tenantId()); + Assertions.assertEquals("utqxlngx", model.tenantName()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + ServiceTenantResponse model = new ServiceTenantResponse().withTenantId("vdfgiotk").withTenantName("utqxlngx"); + model = BinaryData.fromObject(model).toObject(ServiceTenantResponse.class); + Assertions.assertEquals("vdfgiotk", model.tenantId()); + Assertions.assertEquals("utqxlngx", model.tenantName()); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionAliasListResultInnerTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionAliasListResultInnerTests.java new file mode 100644 index 000000000000..d1e9992ced31 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionAliasListResultInnerTests.java @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasListResultInner; + +public final class SubscriptionAliasListResultInnerTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + SubscriptionAliasListResultInner model = BinaryData.fromString( + "{\"value\":[{\"properties\":{\"subscriptionId\":\"gispemvtzfkufubl\",\"displayName\":\"fxqeof\",\"provisioningState\":\"Succeeded\",\"acceptOwnershipUrl\":\"jhqjbasvmsmjqul\",\"acceptOwnershipState\":\"Pending\",\"billingScope\":\"tnb\",\"workload\":\"DevTest\",\"resellerId\":\"gc\",\"subscriptionOwnerId\":\"wclxxwrl\",\"managementGroupId\":\"ouskcqvkocrc\",\"createdTime\":\"kwt\",\"tags\":{\"p\":\"bnjbiksqrglssain\",\"mgxsab\":\"wnzlljfmppeeb\",\"jczdzevndh\":\"yqduujit\"}},\"id\":\"wpdappdsbdkv\",\"name\":\"rwjfe\",\"type\":\"snhu\"},{\"properties\":{\"subscriptionId\":\"ltmrldh\",\"displayName\":\"jzzd\",\"provisioningState\":\"Accepted\",\"acceptOwnershipUrl\":\"hocdgeab\",\"acceptOwnershipState\":\"Expired\",\"billingScope\":\"uticndvkaozwyif\",\"workload\":\"Production\",\"resellerId\":\"hurokftyxoln\",\"subscriptionOwnerId\":\"pwcukjfkgiawxk\",\"managementGroupId\":\"ypl\",\"createdTime\":\"kbasyypn\",\"tags\":{\"hejkotynqgou\":\"sgcbac\",\"kgfg\":\"zndlikwy\",\"qsrxybzqqed\":\"bmadgak\",\"iqfouflmmnkz\":\"ytb\"}},\"id\":\"odmgl\",\"name\":\"ugpbkw\",\"type\":\"mutduqktaps\"},{\"properties\":{\"subscriptionId\":\"cuertu\",\"displayName\":\"dosvqwhbmdgbbjf\",\"provisioningState\":\"Accepted\",\"acceptOwnershipUrl\":\"bmbexppbhtqqro\",\"acceptOwnershipState\":\"Pending\",\"billingScope\":\"psalgbqux\",\"workload\":\"Production\",\"resellerId\":\"jgzjaoyfhrtx\",\"subscriptionOwnerId\":\"n\",\"managementGroupId\":\"kujysvlejuvfq\",\"createdTime\":\"rlyxwjkcprbnw\",\"tags\":{\"dnrujqguhmuouqfp\":\"jvtbvpyss\",\"uizga\":\"wzwbnguitn\"}},\"id\":\"ufizuckyf\",\"name\":\"hr\",\"type\":\"idf\"}],\"nextLink\":\"wdzuhtymwisd\"}") + .toObject(SubscriptionAliasListResultInner.class); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + SubscriptionAliasListResultInner model = new SubscriptionAliasListResultInner(); + model = BinaryData.fromObject(model).toObject(SubscriptionAliasListResultInner.class); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionAliasResponseInnerTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionAliasResponseInnerTests.java new file mode 100644 index 000000000000..c70974e1066a --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionAliasResponseInnerTests.java @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionAliasResponseInner; +import com.azure.resourcemanager.subscription.models.ProvisioningState; +import com.azure.resourcemanager.subscription.models.SubscriptionAliasResponseProperties; +import com.azure.resourcemanager.subscription.models.Workload; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.Assertions; + +public final class SubscriptionAliasResponseInnerTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + SubscriptionAliasResponseInner model = BinaryData.fromString( + "{\"properties\":{\"subscriptionId\":\"yahux\",\"displayName\":\"pmqnja\",\"provisioningState\":\"Failed\",\"acceptOwnershipUrl\":\"jsprozvcpute\",\"acceptOwnershipState\":\"Completed\",\"billingScope\":\"mfdatscmdvpj\",\"workload\":\"DevTest\",\"resellerId\":\"uuvmkjozkrwfnd\",\"subscriptionOwnerId\":\"djpslw\",\"managementGroupId\":\"dpvwryoqpsoaccta\",\"createdTime\":\"kljla\",\"tags\":{\"expa\":\"ryffdfdosy\"}},\"id\":\"akhmsbzjhcrz\",\"name\":\"vdphlxaolthqtr\",\"type\":\"qjbpfzfsin\"}") + .toObject(SubscriptionAliasResponseInner.class); + Assertions.assertEquals("pmqnja", model.properties().displayName()); + Assertions.assertEquals(ProvisioningState.FAILED, model.properties().provisioningState()); + Assertions.assertEquals("mfdatscmdvpj", model.properties().billingScope()); + Assertions.assertEquals(Workload.DEV_TEST, model.properties().workload()); + Assertions.assertEquals("uuvmkjozkrwfnd", model.properties().resellerId()); + Assertions.assertEquals("djpslw", model.properties().subscriptionOwnerId()); + Assertions.assertEquals("dpvwryoqpsoaccta", model.properties().managementGroupId()); + Assertions.assertEquals("kljla", model.properties().createdTime()); + Assertions.assertEquals("ryffdfdosy", model.properties().tags().get("expa")); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + SubscriptionAliasResponseInner model = new SubscriptionAliasResponseInner() + .withProperties(new SubscriptionAliasResponseProperties().withDisplayName("pmqnja") + .withProvisioningState(ProvisioningState.FAILED) + .withBillingScope("mfdatscmdvpj") + .withWorkload(Workload.DEV_TEST) + .withResellerId("uuvmkjozkrwfnd") + .withSubscriptionOwnerId("djpslw") + .withManagementGroupId("dpvwryoqpsoaccta") + .withCreatedTime("kljla") + .withTags(mapOf("expa", "ryffdfdosy"))); + model = BinaryData.fromObject(model).toObject(SubscriptionAliasResponseInner.class); + Assertions.assertEquals("pmqnja", model.properties().displayName()); + Assertions.assertEquals(ProvisioningState.FAILED, model.properties().provisioningState()); + Assertions.assertEquals("mfdatscmdvpj", model.properties().billingScope()); + Assertions.assertEquals(Workload.DEV_TEST, model.properties().workload()); + Assertions.assertEquals("uuvmkjozkrwfnd", model.properties().resellerId()); + Assertions.assertEquals("djpslw", model.properties().subscriptionOwnerId()); + Assertions.assertEquals("dpvwryoqpsoaccta", model.properties().managementGroupId()); + Assertions.assertEquals("kljla", model.properties().createdTime()); + Assertions.assertEquals("ryffdfdosy", model.properties().tags().get("expa")); + } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionAliasResponsePropertiesTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionAliasResponsePropertiesTests.java new file mode 100644 index 000000000000..30b54ff67d71 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionAliasResponsePropertiesTests.java @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.models.ProvisioningState; +import com.azure.resourcemanager.subscription.models.SubscriptionAliasResponseProperties; +import com.azure.resourcemanager.subscription.models.Workload; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.Assertions; + +public final class SubscriptionAliasResponsePropertiesTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + SubscriptionAliasResponseProperties model = BinaryData.fromString( + "{\"subscriptionId\":\"v\",\"displayName\":\"jrwzox\",\"provisioningState\":\"Failed\",\"acceptOwnershipUrl\":\"elluwfziton\",\"acceptOwnershipState\":\"Pending\",\"billingScope\":\"pjkjlxofpdv\",\"workload\":\"DevTest\",\"resellerId\":\"xypininmayhuybbk\",\"subscriptionOwnerId\":\"depoog\",\"managementGroupId\":\"uvamiheognarxzxt\",\"createdTime\":\"o\",\"tags\":{\"bwjzr\":\"ivyevcciqihnhun\"}}") + .toObject(SubscriptionAliasResponseProperties.class); + Assertions.assertEquals("jrwzox", model.displayName()); + Assertions.assertEquals(ProvisioningState.FAILED, model.provisioningState()); + Assertions.assertEquals("pjkjlxofpdv", model.billingScope()); + Assertions.assertEquals(Workload.DEV_TEST, model.workload()); + Assertions.assertEquals("xypininmayhuybbk", model.resellerId()); + Assertions.assertEquals("depoog", model.subscriptionOwnerId()); + Assertions.assertEquals("uvamiheognarxzxt", model.managementGroupId()); + Assertions.assertEquals("o", model.createdTime()); + Assertions.assertEquals("ivyevcciqihnhun", model.tags().get("bwjzr")); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + SubscriptionAliasResponseProperties model = new SubscriptionAliasResponseProperties().withDisplayName("jrwzox") + .withProvisioningState(ProvisioningState.FAILED) + .withBillingScope("pjkjlxofpdv") + .withWorkload(Workload.DEV_TEST) + .withResellerId("xypininmayhuybbk") + .withSubscriptionOwnerId("depoog") + .withManagementGroupId("uvamiheognarxzxt") + .withCreatedTime("o") + .withTags(mapOf("bwjzr", "ivyevcciqihnhun")); + model = BinaryData.fromObject(model).toObject(SubscriptionAliasResponseProperties.class); + Assertions.assertEquals("jrwzox", model.displayName()); + Assertions.assertEquals(ProvisioningState.FAILED, model.provisioningState()); + Assertions.assertEquals("pjkjlxofpdv", model.billingScope()); + Assertions.assertEquals(Workload.DEV_TEST, model.workload()); + Assertions.assertEquals("xypininmayhuybbk", model.resellerId()); + Assertions.assertEquals("depoog", model.subscriptionOwnerId()); + Assertions.assertEquals("uvamiheognarxzxt", model.managementGroupId()); + Assertions.assertEquals("o", model.createdTime()); + Assertions.assertEquals("ivyevcciqihnhun", model.tags().get("bwjzr")); + } + + // Use "Map.of" if available + @SuppressWarnings("unchecked") + private static Map mapOf(Object... inputs) { + Map map = new HashMap<>(); + for (int i = 0; i < inputs.length; i += 2) { + String key = (String) inputs[i]; + T value = (T) inputs[i + 1]; + map.put(key, value); + } + return map; + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionCreationResultInnerTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionCreationResultInnerTests.java new file mode 100644 index 000000000000..3f1b69b2b411 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionCreationResultInnerTests.java @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.fluent.models.SubscriptionCreationResultInner; +import org.junit.jupiter.api.Assertions; + +public final class SubscriptionCreationResultInnerTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + SubscriptionCreationResultInner model = BinaryData.fromString("{\"subscriptionLink\":\"cmsxaobhdxbm\"}") + .toObject(SubscriptionCreationResultInner.class); + Assertions.assertEquals("cmsxaobhdxbm", model.subscriptionLink()); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + SubscriptionCreationResultInner model + = new SubscriptionCreationResultInner().withSubscriptionLink("cmsxaobhdxbm"); + model = BinaryData.fromObject(model).toObject(SubscriptionCreationResultInner.class); + Assertions.assertEquals("cmsxaobhdxbm", model.subscriptionLink()); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionNameTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionNameTests.java index d87bd629774d..357cd1dfe42b 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionNameTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionNameTests.java @@ -12,14 +12,14 @@ public final class SubscriptionNameTests { @org.junit.jupiter.api.Test public void testDeserialize() throws Exception { SubscriptionName model - = BinaryData.fromString("{\"subscriptionName\":\"tusivyevcciqihn\"}").toObject(SubscriptionName.class); - Assertions.assertEquals("tusivyevcciqihn", model.subscriptionName()); + = BinaryData.fromString("{\"subscriptionName\":\"czmehmtzopbsp\"}").toObject(SubscriptionName.class); + Assertions.assertEquals("czmehmtzopbsp", model.subscriptionName()); } @org.junit.jupiter.api.Test public void testSerialize() throws Exception { - SubscriptionName model = new SubscriptionName().withSubscriptionName("tusivyevcciqihn"); + SubscriptionName model = new SubscriptionName().withSubscriptionName("czmehmtzopbsp"); model = BinaryData.fromObject(model).toObject(SubscriptionName.class); - Assertions.assertEquals("tusivyevcciqihn", model.subscriptionName()); + Assertions.assertEquals("czmehmtzopbsp", model.subscriptionName()); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsListLocationsMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationsGetWithResponseMockTests.java similarity index 58% rename from sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsListLocationsMockTests.java rename to sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationsGetWithResponseMockTests.java index 66c22fa71c8f..b209178115f4 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsListLocationsMockTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationsGetWithResponseMockTests.java @@ -6,32 +6,33 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.http.rest.PagedIterable; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.subscription.SubscriptionManager; -import com.azure.resourcemanager.subscription.models.Location; +import com.azure.resourcemanager.subscription.models.SubscriptionCreationResult; import java.nio.charset.StandardCharsets; import java.time.OffsetDateTime; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import reactor.core.publisher.Mono; -public final class SubscriptionsListLocationsMockTests { +public final class SubscriptionOperationsGetWithResponseMockTests { @Test - public void testListLocations() throws Exception { - String responseStr - = "{\"value\":[{\"id\":\"itnwuizgazxufi\",\"subscriptionId\":\"ckyfih\",\"name\":\"idf\",\"displayName\":\"wdzuhtymwisd\",\"latitude\":\"thwxmnteiwaopvkm\",\"longitude\":\"c\"}]}"; + public void testGetWithResponse() throws Exception { + String responseStr = "{\"subscriptionLink\":\"ienjbdlwtgr\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); SubscriptionManager manager = SubscriptionManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - PagedIterable response - = manager.subscriptions().listLocations("uhmuouqfprwzwbn", com.azure.core.util.Context.NONE); + SubscriptionCreationResult response = manager.subscriptionOperations() + .getWithResponse("njeaseipheofloke", com.azure.core.util.Context.NONE) + .getValue(); + Assertions.assertEquals("ienjbdlwtgr", response.subscriptionLink()); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesAddUpdatePolicyForTenantWithResponseMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesAddUpdatePolicyForTenantWithResponseMockTests.java new file mode 100644 index 000000000000..b70e5cce2d11 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesAddUpdatePolicyForTenantWithResponseMockTests.java @@ -0,0 +1,52 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.credential.AccessToken; +import com.azure.core.http.HttpClient; +import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; +import com.azure.core.test.http.MockHttpResponse; +import com.azure.resourcemanager.subscription.SubscriptionManager; +import com.azure.resourcemanager.subscription.models.GetTenantPolicyResponse; +import com.azure.resourcemanager.subscription.models.PutTenantPolicyRequestProperties; +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; +import java.util.Arrays; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; + +public final class SubscriptionPoliciesAddUpdatePolicyForTenantWithResponseMockTests { + @Test + public void testAddUpdatePolicyForTenantWithResponse() throws Exception { + String responseStr + = "{\"properties\":{\"policyId\":\"bniwdj\",\"blockSubscriptionsLeavingTenant\":false,\"blockSubscriptionsIntoTenant\":false,\"exemptedPrincipals\":[\"1a9785a0-8897-4c22-9ce7-68fc76d523c0\"]},\"id\":\"gnxytxhpzxbz\",\"name\":\"fzab\",\"type\":\"lcuhxwtctyqiklb\"}"; + + HttpClient httpClient + = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); + SubscriptionManager manager = SubscriptionManager.configure() + .withHttpClient(httpClient) + .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); + + GetTenantPolicyResponse response = manager.subscriptionPolicies() + .addUpdatePolicyForTenantWithResponse( + new PutTenantPolicyRequestProperties().withBlockSubscriptionsLeavingTenant(true) + .withBlockSubscriptionsIntoTenant(true) + .withExemptedPrincipals(Arrays.asList(UUID.fromString("5672b716-effa-431f-8bf2-eb66626b97b7"), + UUID.fromString("3828b643-ba29-4d42-9ae8-4f014c41bdf6"), + UUID.fromString("baaf9c68-453b-4d0e-a491-f18928520c39"), + UUID.fromString("072162fc-7e49-42f3-b6e4-f0ca25e108bf"))), + com.azure.core.util.Context.NONE) + .getValue(); + + Assertions.assertFalse(response.properties().blockSubscriptionsLeavingTenant()); + Assertions.assertFalse(response.properties().blockSubscriptionsIntoTenant()); + Assertions.assertEquals(UUID.fromString("1a9785a0-8897-4c22-9ce7-68fc76d523c0"), + response.properties().exemptedPrincipals().get(0)); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesGetPolicyForTenantWithResponseMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesGetPolicyForTenantWithResponseMockTests.java new file mode 100644 index 000000000000..19c1061514e7 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesGetPolicyForTenantWithResponseMockTests.java @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.credential.AccessToken; +import com.azure.core.http.HttpClient; +import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; +import com.azure.core.test.http.MockHttpResponse; +import com.azure.resourcemanager.subscription.SubscriptionManager; +import com.azure.resourcemanager.subscription.models.GetTenantPolicyResponse; +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; + +public final class SubscriptionPoliciesGetPolicyForTenantWithResponseMockTests { + @Test + public void testGetPolicyForTenantWithResponse() throws Exception { + String responseStr + = "{\"properties\":{\"policyId\":\"plwzbhvgyugu\",\"blockSubscriptionsLeavingTenant\":true,\"blockSubscriptionsIntoTenant\":true,\"exemptedPrincipals\":[\"3482294d-2fcc-4207-b22d-9e5cee9d56b9\"]},\"id\":\"xquk\",\"name\":\"fpl\",\"type\":\"mg\"}"; + + HttpClient httpClient + = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); + SubscriptionManager manager = SubscriptionManager.configure() + .withHttpClient(httpClient) + .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); + + GetTenantPolicyResponse response = manager.subscriptionPolicies() + .getPolicyForTenantWithResponse(com.azure.core.util.Context.NONE) + .getValue(); + + Assertions.assertTrue(response.properties().blockSubscriptionsLeavingTenant()); + Assertions.assertTrue(response.properties().blockSubscriptionsIntoTenant()); + Assertions.assertEquals(UUID.fromString("3482294d-2fcc-4207-b22d-9e5cee9d56b9"), + response.properties().exemptedPrincipals().get(0)); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesListPolicyForTenantMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesListPolicyForTenantMockTests.java new file mode 100644 index 000000000000..11878a6eccab --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesListPolicyForTenantMockTests.java @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.credential.AccessToken; +import com.azure.core.http.HttpClient; +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; +import com.azure.core.test.http.MockHttpResponse; +import com.azure.resourcemanager.subscription.SubscriptionManager; +import com.azure.resourcemanager.subscription.models.GetTenantPolicyResponse; +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; + +public final class SubscriptionPoliciesListPolicyForTenantMockTests { + @Test + public void testListPolicyForTenant() throws Exception { + String responseStr + = "{\"value\":[{\"properties\":{\"policyId\":\"kjz\",\"blockSubscriptionsLeavingTenant\":false,\"blockSubscriptionsIntoTenant\":false,\"exemptedPrincipals\":[\"16c7317f-d654-4f7b-9ab1-7e393da672ac\",\"fb826feb-5b60-4820-b5f6-48306d75afe5\",\"345bec4d-0153-4111-8e41-d83dd430eb9f\"]},\"id\":\"opwi\",\"name\":\"ighxpk\",\"type\":\"wzbaiue\"}]}"; + + HttpClient httpClient + = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); + SubscriptionManager manager = SubscriptionManager.configure() + .withHttpClient(httpClient) + .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); + + PagedIterable response + = manager.subscriptionPolicies().listPolicyForTenant(com.azure.core.util.Context.NONE); + + Assertions.assertFalse(response.iterator().next().properties().blockSubscriptionsLeavingTenant()); + Assertions.assertFalse(response.iterator().next().properties().blockSubscriptionsIntoTenant()); + Assertions.assertEquals(UUID.fromString("16c7317f-d654-4f7b-9ab1-7e393da672ac"), + response.iterator().next().properties().exemptedPrincipals().get(0)); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesTests.java deleted file mode 100644 index 43b04c3a21f5..000000000000 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionPoliciesTests.java +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.subscription.generated; - -import com.azure.core.util.BinaryData; -import com.azure.resourcemanager.subscription.models.SubscriptionPolicies; - -public final class SubscriptionPoliciesTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - SubscriptionPolicies model = BinaryData - .fromString("{\"locationPlacementId\":\"vd\",\"quotaId\":\"jgrtfwvukxga\",\"spendingLimit\":\"Off\"}") - .toObject(SubscriptionPolicies.class); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - SubscriptionPolicies model = new SubscriptionPolicies(); - model = BinaryData.fromObject(model).toObject(SubscriptionPolicies.class); - } -} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsAcceptOwnershipStatusWithResponseMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsAcceptOwnershipStatusWithResponseMockTests.java new file mode 100644 index 000000000000..f2a910c4efb8 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsAcceptOwnershipStatusWithResponseMockTests.java @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.credential.AccessToken; +import com.azure.core.http.HttpClient; +import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; +import com.azure.core.test.http.MockHttpResponse; +import com.azure.resourcemanager.subscription.SubscriptionManager; +import com.azure.resourcemanager.subscription.models.AcceptOwnershipStatusResponse; +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import reactor.core.publisher.Mono; + +public final class SubscriptionsAcceptOwnershipStatusWithResponseMockTests { + @Test + public void testAcceptOwnershipStatusWithResponse() throws Exception { + String responseStr + = "{\"subscriptionId\":\"oo\",\"acceptOwnershipState\":\"Expired\",\"provisioningState\":\"Pending\",\"billingOwner\":\"v\",\"subscriptionTenantId\":\"m\",\"displayName\":\"qabcypm\",\"tags\":{\"zuvccfwnfnbacfio\":\"w\",\"bxetqgtzxdpn\":\"l\",\"eallnwsubisnj\":\"bqqwxrj\",\"hcbonqvpkvlr\":\"mpmngnzscxaqwoo\"}}"; + + HttpClient httpClient + = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); + SubscriptionManager manager = SubscriptionManager.configure() + .withHttpClient(httpClient) + .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); + + AcceptOwnershipStatusResponse response = manager.subscriptions() + .acceptOwnershipStatusWithResponse("fvm", com.azure.core.util.Context.NONE) + .getValue(); + + Assertions.assertEquals("m", response.subscriptionTenantId()); + Assertions.assertEquals("qabcypm", response.displayName()); + Assertions.assertEquals("w", response.tags().get("zuvccfwnfnbacfio")); + } +} diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationsCancelWithResponseMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsCancelWithResponseMockTests.java similarity index 72% rename from sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationsCancelWithResponseMockTests.java rename to sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsCancelWithResponseMockTests.java index be52dd8d5c6b..fd94deee6e23 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationsCancelWithResponseMockTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsCancelWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.subscription.SubscriptionManager; import com.azure.resourcemanager.subscription.models.CanceledSubscriptionId; @@ -16,21 +16,20 @@ import org.junit.jupiter.api.Test; import reactor.core.publisher.Mono; -public final class SubscriptionOperationsCancelWithResponseMockTests { +public final class SubscriptionsCancelWithResponseMockTests { @Test public void testCancelWithResponse() throws Exception { - String responseStr = "{\"subscriptionId\":\"kexxppof\"}"; + String responseStr = "{\"subscriptionId\":\"dqmidtt\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); SubscriptionManager manager = SubscriptionManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - CanceledSubscriptionId response = manager.subscriptionOperations() - .cancelWithResponse("qsycbkbfkgu", com.azure.core.util.Context.NONE) - .getValue(); + CanceledSubscriptionId response + = manager.subscriptions().cancelWithResponse("efgugnxk", com.azure.core.util.Context.NONE).getValue(); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationsEnableWithResponseMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsEnableWithResponseMockTests.java similarity index 72% rename from sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationsEnableWithResponseMockTests.java rename to sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsEnableWithResponseMockTests.java index f28e910d34f9..465403f1a66b 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationsEnableWithResponseMockTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsEnableWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.subscription.SubscriptionManager; import com.azure.resourcemanager.subscription.models.EnabledSubscriptionId; @@ -16,21 +16,20 @@ import org.junit.jupiter.api.Test; import reactor.core.publisher.Mono; -public final class SubscriptionOperationsEnableWithResponseMockTests { +public final class SubscriptionsEnableWithResponseMockTests { @Test public void testEnableWithResponse() throws Exception { - String responseStr = "{\"subscriptionId\":\"icbtwnpzao\"}"; + String responseStr = "{\"subscriptionId\":\"hzgpphrcgyncocpe\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); SubscriptionManager manager = SubscriptionManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - EnabledSubscriptionId response = manager.subscriptionOperations() - .enableWithResponse("jnxqbzvddntwn", com.azure.core.util.Context.NONE) - .getValue(); + EnabledSubscriptionId response + = manager.subscriptions().enableWithResponse("ywgndrv", com.azure.core.util.Context.NONE).getValue(); } } diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationsRenameWithResponseMockTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsRenameWithResponseMockTests.java similarity index 74% rename from sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationsRenameWithResponseMockTests.java rename to sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsRenameWithResponseMockTests.java index 5a2258fd3335..f065722d914e 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionOperationsRenameWithResponseMockTests.java +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/SubscriptionsRenameWithResponseMockTests.java @@ -6,8 +6,8 @@ import com.azure.core.credential.AccessToken; import com.azure.core.http.HttpClient; -import com.azure.core.management.AzureEnvironment; import com.azure.core.management.profile.AzureProfile; +import com.azure.core.models.AzureCloud; import com.azure.core.test.http.MockHttpResponse; import com.azure.resourcemanager.subscription.SubscriptionManager; import com.azure.resourcemanager.subscription.models.RenamedSubscriptionId; @@ -17,20 +17,20 @@ import org.junit.jupiter.api.Test; import reactor.core.publisher.Mono; -public final class SubscriptionOperationsRenameWithResponseMockTests { +public final class SubscriptionsRenameWithResponseMockTests { @Test public void testRenameWithResponse() throws Exception { - String responseStr = "{\"subscriptionId\":\"bqe\"}"; + String responseStr = "{\"subscriptionId\":\"kanyktzlcuiywg\"}"; HttpClient httpClient = response -> Mono.just(new MockHttpResponse(response, 200, responseStr.getBytes(StandardCharsets.UTF_8))); SubscriptionManager manager = SubscriptionManager.configure() .withHttpClient(httpClient) .authenticate(tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), - new AzureProfile("", "", AzureEnvironment.AZURE)); + new AzureProfile("", "", AzureCloud.AZURE_PUBLIC_CLOUD)); - RenamedSubscriptionId response = manager.subscriptionOperations() - .renameWithResponse("xaxcfjpgddtocjjx", new SubscriptionName().withSubscriptionName("pmouexhdz"), + RenamedSubscriptionId response = manager.subscriptions() + .renameWithResponse("zrvqdr", new SubscriptionName().withSubscriptionName("hjybigehoqfbo"), com.azure.core.util.Context.NONE) .getValue(); diff --git a/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/TenantPolicyTests.java b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/TenantPolicyTests.java new file mode 100644 index 000000000000..ee5a9cccaa74 --- /dev/null +++ b/sdk/subscription/azure-resourcemanager-subscription/src/test/java/com/azure/resourcemanager/subscription/generated/TenantPolicyTests.java @@ -0,0 +1,37 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.subscription.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.subscription.models.TenantPolicy; +import java.util.Arrays; +import java.util.UUID; +import org.junit.jupiter.api.Assertions; + +public final class TenantPolicyTests { + @org.junit.jupiter.api.Test + public void testDeserialize() throws Exception { + TenantPolicy model = BinaryData.fromString( + "{\"policyId\":\"j\",\"blockSubscriptionsLeavingTenant\":false,\"blockSubscriptionsIntoTenant\":true,\"exemptedPrincipals\":[\"a71c6e4b-089c-4aac-8833-260b2bf453ac\",\"d6b00d3e-1cbd-4380-8c9f-2005449f0a25\"]}") + .toObject(TenantPolicy.class); + Assertions.assertFalse(model.blockSubscriptionsLeavingTenant()); + Assertions.assertTrue(model.blockSubscriptionsIntoTenant()); + Assertions.assertEquals(UUID.fromString("a71c6e4b-089c-4aac-8833-260b2bf453ac"), + model.exemptedPrincipals().get(0)); + } + + @org.junit.jupiter.api.Test + public void testSerialize() throws Exception { + TenantPolicy model = new TenantPolicy().withBlockSubscriptionsLeavingTenant(false) + .withBlockSubscriptionsIntoTenant(true) + .withExemptedPrincipals(Arrays.asList(UUID.fromString("a71c6e4b-089c-4aac-8833-260b2bf453ac"), + UUID.fromString("d6b00d3e-1cbd-4380-8c9f-2005449f0a25"))); + model = BinaryData.fromObject(model).toObject(TenantPolicy.class); + Assertions.assertFalse(model.blockSubscriptionsLeavingTenant()); + Assertions.assertTrue(model.blockSubscriptionsIntoTenant()); + Assertions.assertEquals(UUID.fromString("a71c6e4b-089c-4aac-8833-260b2bf453ac"), + model.exemptedPrincipals().get(0)); + } +} From 96ec797ac38090995704e39215a435c2d0ac64ba Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Wed, 7 Jan 2026 23:40:00 -0800 Subject: [PATCH 30/41] Increment package versions for subscription releases (#47654) --- eng/versioning/version_client.txt | 2 +- .../azure-resourcemanager-subscription/CHANGELOG.md | 10 ++++++++++ .../azure-resourcemanager-subscription/pom.xml | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index 841936f5263a..ff7fa333a1ea 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -359,7 +359,7 @@ com.azure.resourcemanager:azure-resourcemanager-servicefabric;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-peering;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-policyinsights;1.0.0;1.1.0-beta.2 com.azure.resourcemanager:azure-resourcemanager-support;1.1.0;1.2.0-beta.1 -com.azure.resourcemanager:azure-resourcemanager-subscription;1.0.0;1.1.0-beta.1 +com.azure.resourcemanager:azure-resourcemanager-subscription;1.0.0;1.1.0-beta.2 com.azure.resourcemanager:azure-resourcemanager-powerbidedicated;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-applicationinsights;1.1.0;1.2.0-beta.2 com.azure.resourcemanager:azure-resourcemanager-deploymentmanager;1.0.0-beta.2;1.0.0-beta.3 diff --git a/sdk/subscription/azure-resourcemanager-subscription/CHANGELOG.md b/sdk/subscription/azure-resourcemanager-subscription/CHANGELOG.md index b6b70e770f28..7c16f0776537 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/CHANGELOG.md +++ b/sdk/subscription/azure-resourcemanager-subscription/CHANGELOG.md @@ -1,5 +1,15 @@ # Release History +## 1.1.0-beta.2 (Unreleased) + +### Features Added + +### Breaking Changes + +### Bugs Fixed + +### Other Changes + ## 1.1.0-beta.1 (2026-01-08) - Azure Resource Manager Subscription client library for Java. This package contains Microsoft Azure SDK for Subscription Management SDK. The subscription client. Package tag package-2021-10. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). diff --git a/sdk/subscription/azure-resourcemanager-subscription/pom.xml b/sdk/subscription/azure-resourcemanager-subscription/pom.xml index 1206ee1d1745..84293d44c58f 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/pom.xml +++ b/sdk/subscription/azure-resourcemanager-subscription/pom.xml @@ -14,7 +14,7 @@ com.azure.resourcemanager azure-resourcemanager-subscription - 1.1.0-beta.1 + 1.1.0-beta.2 jar Microsoft Azure SDK for Subscription Management From 88037ad981058b090a6c37a95dd04cbde9899576 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Thu, 8 Jan 2026 16:40:59 +0800 Subject: [PATCH 31/41] mgmt, ACR, split to 2 internal clients (#47639) --- .../CHANGELOG.md | 11 +- .../ContainerRegistryManager.java | 19 + .../fluent/AgentPoolsClient.java | 1 - .../ContainerRegistryManagementClient.java | 35 +- ...ontainerRegistryTasksManagementClient.java | 82 +++ .../fluent/RegistriesClient.java | 164 ------ .../fluent/RegistryTasksClient.java | 184 +++++++ .../containerregistry/fluent/RunsClient.java | 1 - .../fluent/TaskRunsClient.java | 1 - .../containerregistry/fluent/TasksClient.java | 1 - .../fluent/models/AgentPoolInner.java | 1 - .../fluent/models/AgentPoolProperties.java | 1 - .../AgentPoolPropertiesUpdateParameters.java | 1 - .../models/AgentPoolQueueStatusInner.java | 1 - .../fluent/models/RunGetLogResultInner.java | 1 - .../fluent/models/RunInner.java | 1 - .../fluent/models/RunProperties.java | 1 - .../models/SourceUploadDefinitionInner.java | 1 - .../fluent/models/TaskInner.java | 1 - .../fluent/models/TaskProperties.java | 1 - .../TaskPropertiesUpdateParameters.java | 1 - .../fluent/models/TaskRunInner.java | 1 - .../fluent/models/TaskRunPropertiesInner.java | 1 - .../TaskRunPropertiesUpdateParameters.java | 1 - .../implementation/AgentPoolsClientImpl.java | 53 +- .../implementation/CacheRulesClientImpl.java | 52 +- .../ConnectedRegistriesClientImpl.java | 61 +-- ...ContainerRegistryManagementClientImpl.java | 79 +-- ...rRegistryTasksManagementClientBuilder.java | 138 +++++ ...inerRegistryTasksManagementClientImpl.java | 204 +++++++ .../CredentialSetsClientImpl.java | 52 +- .../implementation/OperationsClientImpl.java | 8 +- .../PrivateEndpointConnectionsClientImpl.java | 42 +- .../implementation/RegistriesClientImpl.java | 505 ++---------------- .../implementation/RegistriesImpl.java | 4 +- .../implementation/RegistryImpl.java | 4 +- .../implementation/RegistryTaskImpl.java | 4 +- .../implementation/RegistryTaskRunImpl.java | 16 +- .../implementation/RegistryTaskRunsImpl.java | 6 +- .../RegistryTasksClientImpl.java | 437 +++++++++++++++ .../implementation/RegistryTasksImpl.java | 10 +- .../ReplicationsClientImpl.java | 52 +- .../implementation/RunsClientImpl.java | 44 +- .../implementation/ScopeMapsClientImpl.java | 52 +- .../implementation/TaskRunsClientImpl.java | 50 +- .../implementation/TasksClientImpl.java | 51 +- .../implementation/TokensClientImpl.java | 52 +- .../implementation/WebhooksClientImpl.java | 78 ++- .../models/AgentPoolListResult.java | 1 - .../models/AgentPoolUpdateParameters.java | 1 - .../models/AgentProperties.java | 1 - .../models/Architecture.java | 1 - .../containerregistry/models/Argument.java | 1 - .../containerregistry/models/AuthInfo.java | 1 - .../models/AuthInfoUpdateParameters.java | 1 - .../models/BaseImageDependency.java | 1 - .../models/BaseImageDependencyType.java | 1 - .../models/BaseImageTrigger.java | 1 - .../models/BaseImageTriggerType.java | 1 - .../BaseImageTriggerUpdateParameters.java | 1 - .../containerregistry/models/Credentials.java | 1 - .../models/CustomRegistryCredentials.java | 1 - .../models/DockerBuildRequest.java | 1 - .../DockerBuildStepUpdateParameters.java | 1 - .../models/DockerTaskStep.java | 1 - .../models/EncodedTaskRunRequest.java | 1 - .../models/EncodedTaskStep.java | 1 - .../EncodedTaskStepUpdateParameters.java | 1 - .../models/FileTaskRunRequest.java | 1 - .../models/FileTaskStep.java | 1 - .../models/FileTaskStepUpdateParameters.java | 1 - .../models/ImageDescriptor.java | 1 - .../models/ImageUpdateTrigger.java | 1 - .../containerregistry/models/OS.java | 1 - .../models/OverrideTaskStepProperties.java | 1 - .../models/PlatformProperties.java | 1 - .../models/PlatformUpdateParameters.java | 1 - .../models/ProvisioningState.java | 2 +- .../models/RunListResult.java | 1 - .../containerregistry/models/RunRequest.java | 1 - .../containerregistry/models/RunStatus.java | 1 - .../containerregistry/models/RunType.java | 1 - .../models/RunUpdateParameters.java | 1 - .../models/SecretObject.java | 1 - .../models/SecretObjectType.java | 1 - .../containerregistry/models/SetValue.java | 1 - .../models/SourceControlType.java | 1 - .../models/SourceProperties.java | 1 - .../models/SourceRegistryCredentials.java | 1 - .../models/SourceRegistryLoginMode.java | 1 - .../models/SourceTrigger.java | 1 - .../models/SourceTriggerDescriptor.java | 1 - .../models/SourceTriggerEvent.java | 1 - .../models/SourceTriggerUpdateParameters.java | 1 - .../models/SourceUpdateParameters.java | 1 - .../containerregistry/models/StepType.java | 1 - .../models/TaskListResult.java | 1 - .../models/TaskRunListResult.java | 1 - .../models/TaskRunRequest.java | 1 - .../models/TaskRunUpdateParameters.java | 1 - .../containerregistry/models/TaskStatus.java | 1 - .../models/TaskStepProperties.java | 1 - .../models/TaskStepUpdateParameters.java | 1 - .../models/TaskUpdateParameters.java | 1 - .../models/TimerTrigger.java | 1 - .../models/TimerTriggerDescriptor.java | 1 - .../models/TimerTriggerUpdateParameters.java | 1 - .../containerregistry/models/TokenType.java | 1 - .../models/TriggerProperties.java | 1 - .../models/TriggerStatus.java | 1 - .../models/TriggerUpdateParameters.java | 1 - .../models/UpdateTriggerPayloadType.java | 1 - .../containerregistry/models/Variant.java | 1 - .../proxy-config.json | 2 +- .../proxy-config.json | 1 + .../reflect-config.json | 1 + .../containerregistry/RegistryTaskTests.java | 2 +- sdk/resourcemanager/api-specs.json | 7 + .../generated/AgentPoolsCreateSamples.java | 51 -- .../generated/AgentPoolsDeleteSamples.java | 28 - .../AgentPoolsGetQueueStatusSamples.java | 29 - .../generated/AgentPoolsGetSamples.java | 28 - .../generated/AgentPoolsListSamples.java | 28 - .../generated/AgentPoolsUpdateSamples.java | 31 -- ...istriesGetBuildSourceUploadUrlSamples.java | 28 - .../RegistriesScheduleRunSamples.java | 261 --------- .../generated/RunsCancelSamples.java | 29 - .../generated/RunsGetLogSasUrlSamples.java | 29 - .../generated/RunsGetSamples.java | 29 - .../generated/RunsListSamples.java | 28 - .../generated/RunsUpdateSamples.java | 31 -- .../generated/TaskRunsCreateSamples.java | 44 -- .../generated/TaskRunsDeleteSamples.java | 28 - .../generated/TaskRunsGetDetailsSamples.java | 28 - .../generated/TaskRunsGetSamples.java | 28 - .../generated/TaskRunsListSamples.java | 28 - .../generated/TaskRunsUpdateSamples.java | 43 -- .../generated/TasksCreateSamples.java | 294 ---------- .../generated/TasksDeleteSamples.java | 28 - .../generated/TasksGetDetailsSamples.java | 28 - .../generated/TasksGetSamples.java | 28 - .../generated/TasksListSamples.java | 28 - .../generated/TasksUpdateSamples.java | 208 -------- 143 files changed, 1439 insertions(+), 2650 deletions(-) create mode 100644 sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/ContainerRegistryTasksManagementClient.java create mode 100644 sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/RegistryTasksClient.java create mode 100644 sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ContainerRegistryTasksManagementClientBuilder.java create mode 100644 sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ContainerRegistryTasksManagementClientImpl.java create mode 100644 sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTasksClientImpl.java create mode 100644 sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/resources/META-INF/native-image/com.azure.resourcemanager/containerregistry_registrytasks/proxy-config.json create mode 100644 sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/resources/META-INF/native-image/com.azure.resourcemanager/containerregistry_registrytasks/reflect-config.json delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsCreateSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsDeleteSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsGetQueueStatusSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsGetSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsListSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsUpdateSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RegistriesGetBuildSourceUploadUrlSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RegistriesScheduleRunSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsCancelSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsGetLogSasUrlSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsGetSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsListSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsUpdateSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsCreateSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsDeleteSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsGetDetailsSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsGetSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsListSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsUpdateSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksCreateSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksDeleteSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksGetDetailsSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksGetSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksListSamples.java delete mode 100644 sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksUpdateSamples.java diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/CHANGELOG.md b/sdk/containerregistry/azure-resourcemanager-containerregistry/CHANGELOG.md index 517e6d80f52c..99040f2dc72c 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/CHANGELOG.md +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/CHANGELOG.md @@ -2,13 +2,16 @@ ## 2.55.0-beta.2 (Unreleased) -### Features Added - ### Breaking Changes -### Bugs Fixed +#### Changes to `ContainerRegistryManagementClient` Class -### Other Changes +- Moved `ContainerRegistryManager.serviceClient().getAgentPools()` to `ContainerRegistryManager.taskClient().getAgentPools()`. +- Moved `ContainerRegistryManager.serviceClient().getRuns()` to `ContainerRegistryManager.taskClient().getRuns()`. +- Moved `ContainerRegistryManager.serviceClient().getTaskRuns()` to `ContainerRegistryManager.taskClient().getTaskRuns()`. +- Moved `ContainerRegistryManager.serviceClient().getTasks()` to `ContainerRegistryManager.taskClient().getTasks()`. +- Moved `ContainerRegistryManager.serviceClient().getRegistries().scheduleRun(...)` to `ContainerRegistryManager.taskClient().getRegistryTasks().scheduleRun(...)`. +- Moved `ContainerRegistryManager.serviceClient().getRegistries().getBuildSourceUploadUrl(...)` to `ContainerRegistryManager.taskClient().getRegistryTasks().getBuildSourceUploadUrl(...)`. ## 2.55.0-beta.1 (2025-12-04) diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/ContainerRegistryManager.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/ContainerRegistryManager.java index 6dc65d0cd3d9..642f98bbe52b 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/ContainerRegistryManager.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/ContainerRegistryManager.java @@ -6,7 +6,9 @@ import com.azure.core.credential.TokenCredential; import com.azure.core.http.HttpPipeline; import com.azure.resourcemanager.containerregistry.fluent.ContainerRegistryManagementClient; +import com.azure.resourcemanager.containerregistry.fluent.ContainerRegistryTasksManagementClient; import com.azure.resourcemanager.containerregistry.implementation.ContainerRegistryManagementClientBuilder; +import com.azure.resourcemanager.containerregistry.implementation.ContainerRegistryTasksManagementClientBuilder; import com.azure.resourcemanager.containerregistry.implementation.RegistriesImpl; import com.azure.resourcemanager.containerregistry.implementation.RegistryTaskRunsImpl; import com.azure.resourcemanager.containerregistry.implementation.RegistryTasksImpl; @@ -28,6 +30,8 @@ public final class ContainerRegistryManager extends Manager regenerateCredentialWithResponse(St @ServiceMethod(returns = ReturnType.SINGLE) RegistryListCredentialsResultInner regenerateCredential(String resourceGroupName, String registryName, RegenerateCredentialParameters regenerateCredentialParameters); - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return run resource properties along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - Mono>> scheduleRunWithResponseAsync(String resourceGroupName, String registryName, - RunRequest runRequest); - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of run resource properties. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - PollerFlux, RunInner> beginScheduleRunAsync(String resourceGroupName, String registryName, - RunRequest runRequest); - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link SyncPoller} for polling of run resource properties. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - SyncPoller, RunInner> beginScheduleRun(String resourceGroupName, String registryName, - RunRequest runRequest); - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link SyncPoller} for polling of run resource properties. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - SyncPoller, RunInner> beginScheduleRun(String resourceGroupName, String registryName, - RunRequest runRequest, Context context); - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return run resource properties on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - Mono scheduleRunAsync(String resourceGroupName, String registryName, RunRequest runRequest); - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return run resource properties. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - RunInner scheduleRun(String resourceGroupName, String registryName, RunRequest runRequest); - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return run resource properties. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - RunInner scheduleRun(String resourceGroupName, String registryName, RunRequest runRequest, Context context); - - /** - * Get the upload location for the user to be able to upload the source. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the upload location for the user to be able to upload the source along with {@link Response} on - * successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - Mono> getBuildSourceUploadUrlWithResponseAsync(String resourceGroupName, - String registryName); - - /** - * Get the upload location for the user to be able to upload the source. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the upload location for the user to be able to upload the source on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - Mono getBuildSourceUploadUrlAsync(String resourceGroupName, String registryName); - - /** - * Get the upload location for the user to be able to upload the source. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the upload location for the user to be able to upload the source along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - Response getBuildSourceUploadUrlWithResponse(String resourceGroupName, - String registryName, Context context); - - /** - * Get the upload location for the user to be able to upload the source. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the upload location for the user to be able to upload the source. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - SourceUploadDefinitionInner getBuildSourceUploadUrl(String resourceGroupName, String registryName); } diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/RegistryTasksClient.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/RegistryTasksClient.java new file mode 100644 index 000000000000..24b172ae4ea6 --- /dev/null +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/RegistryTasksClient.java @@ -0,0 +1,184 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.resourcemanager.containerregistry.fluent; + +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.http.rest.Response; +import com.azure.core.management.polling.PollResult; +import com.azure.core.util.Context; +import com.azure.core.util.polling.PollerFlux; +import com.azure.core.util.polling.SyncPoller; +import com.azure.resourcemanager.containerregistry.fluent.models.RunInner; +import com.azure.resourcemanager.containerregistry.fluent.models.SourceUploadDefinitionInner; +import com.azure.resourcemanager.containerregistry.models.RunRequest; +import java.nio.ByteBuffer; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +/** + * An instance of this class provides access to all the operations defined in RegistryTasksClient. + */ +public interface RegistryTasksClient { + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return run resource properties along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Mono>> scheduleRunWithResponseAsync(String resourceGroupName, String registryName, + RunRequest runRequest); + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link PollerFlux} for polling of run resource properties. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + PollerFlux, RunInner> beginScheduleRunAsync(String resourceGroupName, String registryName, + RunRequest runRequest); + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of run resource properties. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, RunInner> beginScheduleRun(String resourceGroupName, String registryName, + RunRequest runRequest); + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of run resource properties. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + SyncPoller, RunInner> beginScheduleRun(String resourceGroupName, String registryName, + RunRequest runRequest, Context context); + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return run resource properties on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Mono scheduleRunAsync(String resourceGroupName, String registryName, RunRequest runRequest); + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return run resource properties. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + RunInner scheduleRun(String resourceGroupName, String registryName, RunRequest runRequest); + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return run resource properties. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + RunInner scheduleRun(String resourceGroupName, String registryName, RunRequest runRequest, Context context); + + /** + * Get the upload location for the user to be able to upload the source. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the upload location for the user to be able to upload the source along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Mono> getBuildSourceUploadUrlWithResponseAsync(String resourceGroupName, + String registryName); + + /** + * Get the upload location for the user to be able to upload the source. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the upload location for the user to be able to upload the source on successful completion of + * {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Mono getBuildSourceUploadUrlAsync(String resourceGroupName, String registryName); + + /** + * Get the upload location for the user to be able to upload the source. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the upload location for the user to be able to upload the source along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Response getBuildSourceUploadUrlWithResponse(String resourceGroupName, + String registryName, Context context); + + /** + * Get the upload location for the user to be able to upload the source. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the upload location for the user to be able to upload the source. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + SourceUploadDefinitionInner getBuildSourceUploadUrl(String resourceGroupName, String registryName); +} diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/RunsClient.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/RunsClient.java index 229f30005c99..d6c282196a48 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/RunsClient.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/RunsClient.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/TaskRunsClient.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/TaskRunsClient.java index 44919b70d17e..8ab63b2f8e28 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/TaskRunsClient.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/TaskRunsClient.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/TasksClient.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/TasksClient.java index 93e132854de2..65cf89781850 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/TasksClient.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/TasksClient.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolInner.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolInner.java index 49322ead9632..e575d38d296e 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolInner.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolInner.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolProperties.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolProperties.java index a8796ceb0dce..7376202c1ffe 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolProperties.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolProperties.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolPropertiesUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolPropertiesUpdateParameters.java index 56c452919609..0d731bdc76c5 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolPropertiesUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolPropertiesUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolQueueStatusInner.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolQueueStatusInner.java index ce56385fdb1a..e626204e745b 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolQueueStatusInner.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/AgentPoolQueueStatusInner.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/RunGetLogResultInner.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/RunGetLogResultInner.java index 4139898a883a..9d262a72261f 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/RunGetLogResultInner.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/RunGetLogResultInner.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/RunInner.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/RunInner.java index 1d7449348ee0..a98935a66352 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/RunInner.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/RunInner.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/RunProperties.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/RunProperties.java index afb15caa1a57..bcc8c5687eb5 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/RunProperties.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/RunProperties.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/SourceUploadDefinitionInner.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/SourceUploadDefinitionInner.java index 4bd6a1c5e738..2a76cb1c3983 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/SourceUploadDefinitionInner.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/SourceUploadDefinitionInner.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskInner.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskInner.java index 70311f245a8d..e0f7cb0bad67 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskInner.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskInner.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskProperties.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskProperties.java index 2f691252ba66..c04bbc274a5b 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskProperties.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskProperties.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskPropertiesUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskPropertiesUpdateParameters.java index 818113676c2f..07550d431eee 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskPropertiesUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskPropertiesUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskRunInner.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskRunInner.java index 4d9203fa1fb9..c61d51902590 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskRunInner.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskRunInner.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskRunPropertiesInner.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskRunPropertiesInner.java index 63dc11e58390..5259d3728bfd 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskRunPropertiesInner.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskRunPropertiesInner.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskRunPropertiesUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskRunPropertiesUpdateParameters.java index fbb11f0330a5..63f7171e81d5 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskRunPropertiesUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/fluent/models/TaskRunPropertiesUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.fluent.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/AgentPoolsClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/AgentPoolsClientImpl.java index a805c61d0ae6..d99667a60b4e 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/AgentPoolsClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/AgentPoolsClientImpl.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.implementation; @@ -54,25 +53,25 @@ public final class AgentPoolsClientImpl implements AgentPoolsClient { /** * The service client containing this operation class. */ - private final ContainerRegistryManagementClientImpl client; + private final ContainerRegistryTasksManagementClientImpl client; /** * Initializes an instance of AgentPoolsClientImpl. * * @param client the instance of the service client containing this operation class. */ - AgentPoolsClientImpl(ContainerRegistryManagementClientImpl client) { + AgentPoolsClientImpl(ContainerRegistryTasksManagementClientImpl client) { this.service = RestProxy.create(AgentPoolsService.class, client.getHttpPipeline(), client.getSerializerAdapter()); this.client = client; } /** - * The interface defining all the services for ContainerRegistryManagementClientAgentPools to be used by the proxy - * service to perform REST calls. + * The interface defining all the services for ContainerRegistryTasksManagementClientAgentPools to be used by the + * proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "ContainerRegistryManagementClientAgentPools") + @ServiceInterface(name = "ContainerRegistryTasksManagementClientAgentPools") public interface AgentPoolsService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/agentPools/{agentPoolName}") @@ -176,11 +175,10 @@ public Mono> getWithResponseAsync(String resourceGroupN if (agentPoolName == null) { return Mono.error(new IllegalArgumentException("Parameter agentPoolName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, agentPoolName, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), agentPoolName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -218,11 +216,10 @@ private Mono> getWithResponseAsync(String resourceGroup if (agentPoolName == null) { return Mono.error(new IllegalArgumentException("Parameter agentPoolName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, registryName, - apiVersion, agentPoolName, accept, context); + this.client.getApiVersion(), agentPoolName, accept, context); } /** @@ -315,11 +312,11 @@ public Mono>> createWithResponseAsync(String resourceG } else { agentPool.validate(); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.create(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, agentPoolName, agentPool, accept, context)) + .withContext( + context -> service.create(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + registryName, this.client.getApiVersion(), agentPoolName, agentPool, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -363,11 +360,10 @@ private Mono>> createWithResponseAsync(String resource } else { agentPool.validate(); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.create(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, agentPoolName, agentPool, accept, context); + registryName, this.client.getApiVersion(), agentPoolName, agentPool, accept, context); } /** @@ -560,11 +556,10 @@ public Mono>> deleteWithResponseAsync(String resourceG if (agentPoolName == null) { return Mono.error(new IllegalArgumentException("Parameter agentPoolName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, agentPoolName, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), agentPoolName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -601,11 +596,10 @@ private Mono>> deleteWithResponseAsync(String resource if (agentPoolName == null) { return Mono.error(new IllegalArgumentException("Parameter agentPoolName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, agentPoolName, accept, context); + registryName, this.client.getApiVersion(), agentPoolName, accept, context); } /** @@ -791,11 +785,11 @@ public Mono>> updateWithResponseAsync(String resourceG } else { updateParameters.validate(); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, agentPoolName, updateParameters, accept, context)) + .withContext( + context -> service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + registryName, this.client.getApiVersion(), agentPoolName, updateParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -840,11 +834,10 @@ private Mono>> updateWithResponseAsync(String resource } else { updateParameters.validate(); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, agentPoolName, updateParameters, accept, context); + registryName, this.client.getApiVersion(), agentPoolName, updateParameters, accept, context); } /** @@ -1032,11 +1025,10 @@ private Mono> listSinglePageAsync(String resourceG if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.list(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -1071,12 +1063,11 @@ private Mono> listSinglePageAsync(String resourceG if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service .list(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, registryName, - apiVersion, accept, context) + this.client.getApiVersion(), accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -1178,11 +1169,10 @@ public Mono> getQueueStatusWithResponseAsync if (agentPoolName == null) { return Mono.error(new IllegalArgumentException("Parameter agentPoolName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.getQueueStatus(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, agentPoolName, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), agentPoolName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -1220,11 +1210,10 @@ private Mono> getQueueStatusWithResponseAsyn if (agentPoolName == null) { return Mono.error(new IllegalArgumentException("Parameter agentPoolName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.getQueueStatus(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, agentPoolName, accept, context); + registryName, this.client.getApiVersion(), agentPoolName, accept, context); } /** diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/CacheRulesClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/CacheRulesClientImpl.java index 80259eabafc2..d13e96681ec0 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/CacheRulesClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/CacheRulesClientImpl.java @@ -157,11 +157,10 @@ private Mono> listSinglePageAsync(String resourceG if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, accept, context)) + .withContext(context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -197,12 +196,11 @@ private Mono> listSinglePageAsync(String resourceG if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); return service - .list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, accept, context) + .list(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -308,11 +306,10 @@ public Mono> getWithResponseAsync(String resourceGroupN if (cacheRuleName == null) { return Mono.error(new IllegalArgumentException("Parameter cacheRuleName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, cacheRuleName, accept, context)) + .withContext(context -> service.get(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, cacheRuleName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -350,11 +347,10 @@ private Mono> getWithResponseAsync(String resourceGroup if (cacheRuleName == null) { return Mono.error(new IllegalArgumentException("Parameter cacheRuleName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, cacheRuleName, accept, context); + return service.get(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, cacheRuleName, accept, context); } /** @@ -448,12 +444,11 @@ public Mono>> createWithResponseAsync(String resourceG } else { cacheRuleCreateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.create(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, cacheRuleName, cacheRuleCreateParameters, accept, context)) + .withContext(context -> service.create(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, cacheRuleName, + cacheRuleCreateParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -498,11 +493,10 @@ private Mono>> createWithResponseAsync(String resource } else { cacheRuleCreateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.create(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, cacheRuleName, cacheRuleCreateParameters, accept, context); + return service.create(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, cacheRuleName, cacheRuleCreateParameters, accept, context); } /** @@ -705,12 +699,11 @@ public Mono>> updateWithResponseAsync(String resourceG } else { cacheRuleUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, cacheRuleName, cacheRuleUpdateParameters, accept, context)) + .withContext(context -> service.update(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, cacheRuleName, + cacheRuleUpdateParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -755,11 +748,10 @@ private Mono>> updateWithResponseAsync(String resource } else { cacheRuleUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, cacheRuleName, cacheRuleUpdateParameters, accept, context); + return service.update(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, cacheRuleName, cacheRuleUpdateParameters, accept, context); } /** @@ -956,10 +948,9 @@ public Mono>> deleteWithResponseAsync(String resourceG if (cacheRuleName == null) { return Mono.error(new IllegalArgumentException("Parameter cacheRuleName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.delete(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, cacheRuleName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -997,11 +988,10 @@ private Mono>> deleteWithResponseAsync(String resource if (cacheRuleName == null) { return Mono.error(new IllegalArgumentException("Parameter cacheRuleName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, cacheRuleName, accept, context); + return service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, cacheRuleName, accept, context); } /** diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ConnectedRegistriesClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ConnectedRegistriesClientImpl.java index babaa45ad9aa..b6ad0c58b8fa 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ConnectedRegistriesClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ConnectedRegistriesClientImpl.java @@ -175,11 +175,10 @@ private Mono> listSinglePageAsync(String r if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, filter, accept, context)) + .withContext(context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, filter, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -218,12 +217,11 @@ private Mono> listSinglePageAsync(String r if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); return service - .list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, filter, accept, context) + .list(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, filter, accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -360,11 +358,9 @@ public Mono> getWithResponseAsync(String resour return Mono .error(new IllegalArgumentException("Parameter connectedRegistryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, connectedRegistryName, accept, context)) + return FluxUtil.withContext(context -> service.get(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, connectedRegistryName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -403,11 +399,10 @@ private Mono> getWithResponseAsync(String resou return Mono .error(new IllegalArgumentException("Parameter connectedRegistryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, connectedRegistryName, accept, context); + return service.get(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, connectedRegistryName, accept, context); } /** @@ -503,10 +498,9 @@ public Mono>> createWithResponseAsync(String resourceG } else { connectedRegistryCreateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.create(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.create(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, connectedRegistryName, connectedRegistryCreateParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -554,11 +548,10 @@ private Mono>> createWithResponseAsync(String resource } else { connectedRegistryCreateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.create(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, connectedRegistryName, connectedRegistryCreateParameters, accept, context); + return service.create(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, connectedRegistryName, connectedRegistryCreateParameters, accept, context); } /** @@ -776,10 +769,9 @@ public Mono>> updateWithResponseAsync(String resourceG } else { connectedRegistryUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.update(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.update(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, connectedRegistryName, connectedRegistryUpdateParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -828,11 +820,10 @@ private Mono>> updateWithResponseAsync(String resource } else { connectedRegistryUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, connectedRegistryName, connectedRegistryUpdateParameters, accept, context); + return service.update(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, connectedRegistryName, connectedRegistryUpdateParameters, accept, context); } /** @@ -1044,12 +1035,9 @@ public Mono>> deleteWithResponseAsync(String resourceG return Mono .error(new IllegalArgumentException("Parameter connectedRegistryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; - return FluxUtil - .withContext( - context -> service.delete(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, connectedRegistryName, accept, context)) + return FluxUtil.withContext(context -> service.delete(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, connectedRegistryName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -1087,11 +1075,10 @@ private Mono>> deleteWithResponseAsync(String resource return Mono .error(new IllegalArgumentException("Parameter connectedRegistryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, connectedRegistryName, accept, context); + return service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, connectedRegistryName, accept, context); } /** @@ -1271,12 +1258,11 @@ public Mono>> deactivateWithResponseAsync(String resou return Mono .error(new IllegalArgumentException("Parameter connectedRegistryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.deactivate(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, connectedRegistryName, accept, context)) + .withContext(context -> service.deactivate(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, connectedRegistryName, accept, + context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -1314,11 +1300,10 @@ private Mono>> deactivateWithResponseAsync(String reso return Mono .error(new IllegalArgumentException("Parameter connectedRegistryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.deactivate(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, connectedRegistryName, accept, context); + return service.deactivate(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, connectedRegistryName, accept, context); } /** diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ContainerRegistryManagementClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ContainerRegistryManagementClientImpl.java index 939a27a25c68..1f67f083ab3b 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ContainerRegistryManagementClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ContainerRegistryManagementClientImpl.java @@ -8,7 +8,6 @@ import com.azure.core.http.HttpPipeline; import com.azure.core.management.AzureEnvironment; import com.azure.core.util.serializer.SerializerAdapter; -import com.azure.resourcemanager.containerregistry.fluent.AgentPoolsClient; import com.azure.resourcemanager.containerregistry.fluent.CacheRulesClient; import com.azure.resourcemanager.containerregistry.fluent.ConnectedRegistriesClient; import com.azure.resourcemanager.containerregistry.fluent.ContainerRegistryManagementClient; @@ -17,10 +16,7 @@ import com.azure.resourcemanager.containerregistry.fluent.PrivateEndpointConnectionsClient; import com.azure.resourcemanager.containerregistry.fluent.RegistriesClient; import com.azure.resourcemanager.containerregistry.fluent.ReplicationsClient; -import com.azure.resourcemanager.containerregistry.fluent.RunsClient; import com.azure.resourcemanager.containerregistry.fluent.ScopeMapsClient; -import com.azure.resourcemanager.containerregistry.fluent.TaskRunsClient; -import com.azure.resourcemanager.containerregistry.fluent.TasksClient; import com.azure.resourcemanager.containerregistry.fluent.TokensClient; import com.azure.resourcemanager.containerregistry.fluent.WebhooksClient; import com.azure.resourcemanager.resources.fluentcore.AzureServiceClient; @@ -60,6 +56,20 @@ public String getEndpoint() { return this.endpoint; } + /** + * Api Version. + */ + private final String apiVersion; + + /** + * Gets Api Version. + * + * @return the apiVersion value. + */ + public String getApiVersion() { + return this.apiVersion; + } + /** * The HTTP pipeline to send requests through. */ @@ -242,62 +252,6 @@ public WebhooksClient getWebhooks() { return this.webhooks; } - /** - * The AgentPoolsClient object to access its operations. - */ - private final AgentPoolsClient agentPools; - - /** - * Gets the AgentPoolsClient object to access its operations. - * - * @return the AgentPoolsClient object. - */ - public AgentPoolsClient getAgentPools() { - return this.agentPools; - } - - /** - * The RunsClient object to access its operations. - */ - private final RunsClient runs; - - /** - * Gets the RunsClient object to access its operations. - * - * @return the RunsClient object. - */ - public RunsClient getRuns() { - return this.runs; - } - - /** - * The TaskRunsClient object to access its operations. - */ - private final TaskRunsClient taskRuns; - - /** - * Gets the TaskRunsClient object to access its operations. - * - * @return the TaskRunsClient object. - */ - public TaskRunsClient getTaskRuns() { - return this.taskRuns; - } - - /** - * The TasksClient object to access its operations. - */ - private final TasksClient tasks; - - /** - * Gets the TasksClient object to access its operations. - * - * @return the TasksClient object. - */ - public TasksClient getTasks() { - return this.tasks; - } - /** * Initializes an instance of ContainerRegistryManagementClient client. * @@ -316,6 +270,7 @@ public TasksClient getTasks() { this.defaultPollInterval = defaultPollInterval; this.subscriptionId = subscriptionId; this.endpoint = endpoint; + this.apiVersion = "2025-11-01"; this.operations = new OperationsClientImpl(this); this.registries = new RegistriesClientImpl(this); this.cacheRules = new CacheRulesClientImpl(this); @@ -326,9 +281,5 @@ public TasksClient getTasks() { this.scopeMaps = new ScopeMapsClientImpl(this); this.tokens = new TokensClientImpl(this); this.webhooks = new WebhooksClientImpl(this); - this.agentPools = new AgentPoolsClientImpl(this); - this.runs = new RunsClientImpl(this); - this.taskRuns = new TaskRunsClientImpl(this); - this.tasks = new TasksClientImpl(this); } } diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ContainerRegistryTasksManagementClientBuilder.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ContainerRegistryTasksManagementClientBuilder.java new file mode 100644 index 000000000000..edb93ee0dff7 --- /dev/null +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ContainerRegistryTasksManagementClientBuilder.java @@ -0,0 +1,138 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.resourcemanager.containerregistry.implementation; + +import com.azure.core.annotation.ServiceClientBuilder; +import com.azure.core.http.HttpPipeline; +import com.azure.core.http.HttpPipelineBuilder; +import com.azure.core.http.policy.RetryPolicy; +import com.azure.core.http.policy.UserAgentPolicy; +import com.azure.core.management.AzureEnvironment; +import com.azure.core.management.serializer.SerializerFactory; +import com.azure.core.util.serializer.SerializerAdapter; +import java.time.Duration; + +/** + * A builder for creating a new instance of the ContainerRegistryTasksManagementClientImpl type. + */ +@ServiceClientBuilder(serviceClients = { ContainerRegistryTasksManagementClientImpl.class }) +public final class ContainerRegistryTasksManagementClientBuilder { + /* + * The Microsoft Azure subscription ID. + */ + private String subscriptionId; + + /** + * Sets The Microsoft Azure subscription ID. + * + * @param subscriptionId the subscriptionId value. + * @return the ContainerRegistryTasksManagementClientBuilder. + */ + public ContainerRegistryTasksManagementClientBuilder subscriptionId(String subscriptionId) { + this.subscriptionId = subscriptionId; + return this; + } + + /* + * server parameter + */ + private String endpoint; + + /** + * Sets server parameter. + * + * @param endpoint the endpoint value. + * @return the ContainerRegistryTasksManagementClientBuilder. + */ + public ContainerRegistryTasksManagementClientBuilder endpoint(String endpoint) { + this.endpoint = endpoint; + return this; + } + + /* + * The environment to connect to + */ + private AzureEnvironment environment; + + /** + * Sets The environment to connect to. + * + * @param environment the environment value. + * @return the ContainerRegistryTasksManagementClientBuilder. + */ + public ContainerRegistryTasksManagementClientBuilder environment(AzureEnvironment environment) { + this.environment = environment; + return this; + } + + /* + * The HTTP pipeline to send requests through + */ + private HttpPipeline pipeline; + + /** + * Sets The HTTP pipeline to send requests through. + * + * @param pipeline the pipeline value. + * @return the ContainerRegistryTasksManagementClientBuilder. + */ + public ContainerRegistryTasksManagementClientBuilder pipeline(HttpPipeline pipeline) { + this.pipeline = pipeline; + return this; + } + + /* + * The default poll interval for long-running operation + */ + private Duration defaultPollInterval; + + /** + * Sets The default poll interval for long-running operation. + * + * @param defaultPollInterval the defaultPollInterval value. + * @return the ContainerRegistryTasksManagementClientBuilder. + */ + public ContainerRegistryTasksManagementClientBuilder defaultPollInterval(Duration defaultPollInterval) { + this.defaultPollInterval = defaultPollInterval; + return this; + } + + /* + * The serializer to serialize an object into a string + */ + private SerializerAdapter serializerAdapter; + + /** + * Sets The serializer to serialize an object into a string. + * + * @param serializerAdapter the serializerAdapter value. + * @return the ContainerRegistryTasksManagementClientBuilder. + */ + public ContainerRegistryTasksManagementClientBuilder serializerAdapter(SerializerAdapter serializerAdapter) { + this.serializerAdapter = serializerAdapter; + return this; + } + + /** + * Builds an instance of ContainerRegistryTasksManagementClientImpl with the provided parameters. + * + * @return an instance of ContainerRegistryTasksManagementClientImpl. + */ + public ContainerRegistryTasksManagementClientImpl buildClient() { + String localEndpoint = (endpoint != null) ? endpoint : "https://management.azure.com"; + AzureEnvironment localEnvironment = (environment != null) ? environment : AzureEnvironment.AZURE; + HttpPipeline localPipeline = (pipeline != null) + ? pipeline + : new HttpPipelineBuilder().policies(new UserAgentPolicy(), new RetryPolicy()).build(); + Duration localDefaultPollInterval + = (defaultPollInterval != null) ? defaultPollInterval : Duration.ofSeconds(30); + SerializerAdapter localSerializerAdapter = (serializerAdapter != null) + ? serializerAdapter + : SerializerFactory.createDefaultManagementSerializerAdapter(); + ContainerRegistryTasksManagementClientImpl client + = new ContainerRegistryTasksManagementClientImpl(localPipeline, localSerializerAdapter, + localDefaultPollInterval, localEnvironment, this.subscriptionId, localEndpoint); + return client; + } +} diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ContainerRegistryTasksManagementClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ContainerRegistryTasksManagementClientImpl.java new file mode 100644 index 000000000000..bd74c82f5dc5 --- /dev/null +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ContainerRegistryTasksManagementClientImpl.java @@ -0,0 +1,204 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.resourcemanager.containerregistry.implementation; + +import com.azure.core.annotation.ServiceClient; +import com.azure.core.http.HttpPipeline; +import com.azure.core.management.AzureEnvironment; +import com.azure.core.util.serializer.SerializerAdapter; +import com.azure.resourcemanager.containerregistry.fluent.AgentPoolsClient; +import com.azure.resourcemanager.containerregistry.fluent.ContainerRegistryTasksManagementClient; +import com.azure.resourcemanager.containerregistry.fluent.RegistryTasksClient; +import com.azure.resourcemanager.containerregistry.fluent.RunsClient; +import com.azure.resourcemanager.containerregistry.fluent.TaskRunsClient; +import com.azure.resourcemanager.containerregistry.fluent.TasksClient; +import com.azure.resourcemanager.resources.fluentcore.AzureServiceClient; +import java.time.Duration; + +/** + * Initializes a new instance of the ContainerRegistryTasksManagementClientImpl type. + */ +@ServiceClient(builder = ContainerRegistryTasksManagementClientBuilder.class) +public final class ContainerRegistryTasksManagementClientImpl extends AzureServiceClient + implements ContainerRegistryTasksManagementClient { + /** + * The Microsoft Azure subscription ID. + */ + private final String subscriptionId; + + /** + * Gets The Microsoft Azure subscription ID. + * + * @return the subscriptionId value. + */ + public String getSubscriptionId() { + return this.subscriptionId; + } + + /** + * server parameter. + */ + private final String endpoint; + + /** + * Gets server parameter. + * + * @return the endpoint value. + */ + public String getEndpoint() { + return this.endpoint; + } + + /** + * Api Version. + */ + private final String apiVersion; + + /** + * Gets Api Version. + * + * @return the apiVersion value. + */ + public String getApiVersion() { + return this.apiVersion; + } + + /** + * The HTTP pipeline to send requests through. + */ + private final HttpPipeline httpPipeline; + + /** + * Gets The HTTP pipeline to send requests through. + * + * @return the httpPipeline value. + */ + public HttpPipeline getHttpPipeline() { + return this.httpPipeline; + } + + /** + * The serializer to serialize an object into a string. + */ + private final SerializerAdapter serializerAdapter; + + /** + * Gets The serializer to serialize an object into a string. + * + * @return the serializerAdapter value. + */ + SerializerAdapter getSerializerAdapter() { + return this.serializerAdapter; + } + + /** + * The default poll interval for long-running operation. + */ + private final Duration defaultPollInterval; + + /** + * Gets The default poll interval for long-running operation. + * + * @return the defaultPollInterval value. + */ + public Duration getDefaultPollInterval() { + return this.defaultPollInterval; + } + + /** + * The AgentPoolsClient object to access its operations. + */ + private final AgentPoolsClient agentPools; + + /** + * Gets the AgentPoolsClient object to access its operations. + * + * @return the AgentPoolsClient object. + */ + public AgentPoolsClient getAgentPools() { + return this.agentPools; + } + + /** + * The RegistryTasksClient object to access its operations. + */ + private final RegistryTasksClient registryTasks; + + /** + * Gets the RegistryTasksClient object to access its operations. + * + * @return the RegistryTasksClient object. + */ + public RegistryTasksClient getRegistryTasks() { + return this.registryTasks; + } + + /** + * The RunsClient object to access its operations. + */ + private final RunsClient runs; + + /** + * Gets the RunsClient object to access its operations. + * + * @return the RunsClient object. + */ + public RunsClient getRuns() { + return this.runs; + } + + /** + * The TaskRunsClient object to access its operations. + */ + private final TaskRunsClient taskRuns; + + /** + * Gets the TaskRunsClient object to access its operations. + * + * @return the TaskRunsClient object. + */ + public TaskRunsClient getTaskRuns() { + return this.taskRuns; + } + + /** + * The TasksClient object to access its operations. + */ + private final TasksClient tasks; + + /** + * Gets the TasksClient object to access its operations. + * + * @return the TasksClient object. + */ + public TasksClient getTasks() { + return this.tasks; + } + + /** + * Initializes an instance of ContainerRegistryTasksManagementClient client. + * + * @param httpPipeline The HTTP pipeline to send requests through. + * @param serializerAdapter The serializer to serialize an object into a string. + * @param defaultPollInterval The default poll interval for long-running operation. + * @param environment The Azure environment. + * @param subscriptionId The Microsoft Azure subscription ID. + * @param endpoint server parameter. + */ + ContainerRegistryTasksManagementClientImpl(HttpPipeline httpPipeline, SerializerAdapter serializerAdapter, + Duration defaultPollInterval, AzureEnvironment environment, String subscriptionId, String endpoint) { + super(httpPipeline, serializerAdapter, environment); + this.httpPipeline = httpPipeline; + this.serializerAdapter = serializerAdapter; + this.defaultPollInterval = defaultPollInterval; + this.subscriptionId = subscriptionId; + this.endpoint = endpoint; + this.apiVersion = "2019-06-01-preview"; + this.agentPools = new AgentPoolsClientImpl(this); + this.registryTasks = new RegistryTasksClientImpl(this); + this.runs = new RunsClientImpl(this); + this.taskRuns = new TaskRunsClientImpl(this); + this.tasks = new TasksClientImpl(this); + } +} diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/CredentialSetsClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/CredentialSetsClientImpl.java index 636294abe076..46b1d23d3622 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/CredentialSetsClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/CredentialSetsClientImpl.java @@ -159,11 +159,10 @@ private Mono> listSinglePageAsync(String resou if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, accept, context)) + .withContext(context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -199,12 +198,11 @@ private Mono> listSinglePageAsync(String resou if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); return service - .list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, accept, context) + .list(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -311,11 +309,10 @@ public Mono> getWithResponseAsync(String resourceGr return Mono .error(new IllegalArgumentException("Parameter credentialSetName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, credentialSetName, accept, context)) + .withContext(context -> service.get(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, credentialSetName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -354,11 +351,10 @@ private Mono> getWithResponseAsync(String resourceG return Mono .error(new IllegalArgumentException("Parameter credentialSetName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, credentialSetName, accept, context); + return service.get(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, credentialSetName, accept, context); } /** @@ -453,12 +449,11 @@ public Mono>> createWithResponseAsync(String resourceG } else { credentialSetCreateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.create(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, credentialSetName, credentialSetCreateParameters, accept, context)) + .withContext(context -> service.create(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, credentialSetName, + credentialSetCreateParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -504,11 +499,10 @@ private Mono>> createWithResponseAsync(String resource } else { credentialSetCreateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.create(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, credentialSetName, credentialSetCreateParameters, accept, context); + return service.create(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, credentialSetName, credentialSetCreateParameters, accept, context); } /** @@ -723,12 +717,11 @@ public Mono>> updateWithResponseAsync(String resourceG } else { credentialSetUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, credentialSetName, credentialSetUpdateParameters, accept, context)) + .withContext(context -> service.update(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, credentialSetName, + credentialSetUpdateParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -774,11 +767,10 @@ private Mono>> updateWithResponseAsync(String resource } else { credentialSetUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, credentialSetName, credentialSetUpdateParameters, accept, context); + return service.update(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, credentialSetName, credentialSetUpdateParameters, accept, context); } /** @@ -985,10 +977,9 @@ public Mono>> deleteWithResponseAsync(String resourceG return Mono .error(new IllegalArgumentException("Parameter credentialSetName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.delete(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, credentialSetName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -1027,11 +1018,10 @@ private Mono>> deleteWithResponseAsync(String resource return Mono .error(new IllegalArgumentException("Parameter credentialSetName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, credentialSetName, accept, context); + return service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, credentialSetName, accept, context); } /** diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/OperationsClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/OperationsClientImpl.java index b499c9d2df2a..70f7a93d4bf6 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/OperationsClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/OperationsClientImpl.java @@ -91,9 +91,10 @@ private Mono> listSinglePageAsync() { return Mono.error( new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; - return FluxUtil.withContext(context -> service.list(this.client.getEndpoint(), apiVersion, accept, context)) + return FluxUtil + .withContext( + context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -115,10 +116,9 @@ private Mono> listSinglePageAsync(Contex return Mono.error( new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.list(this.client.getEndpoint(), apiVersion, accept, context) + return service.list(this.client.getEndpoint(), this.client.getApiVersion(), accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/PrivateEndpointConnectionsClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/PrivateEndpointConnectionsClientImpl.java index ff679e12aab8..e8fbcb1e9ee0 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/PrivateEndpointConnectionsClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/PrivateEndpointConnectionsClientImpl.java @@ -148,11 +148,10 @@ private Mono> listSinglePageAsync( if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, accept, context)) + .withContext(context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -188,12 +187,11 @@ private Mono> listSinglePageAsync( if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); return service - .list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, accept, context) + .list(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -302,11 +300,11 @@ public Mono> getWithResponseAsync(Strin return Mono.error(new IllegalArgumentException( "Parameter privateEndpointConnectionName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, privateEndpointConnectionName, accept, context)) + .withContext(context -> service.get(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, privateEndpointConnectionName, accept, + context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -345,11 +343,10 @@ private Mono> getWithResponseAsync(Stri return Mono.error(new IllegalArgumentException( "Parameter privateEndpointConnectionName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, privateEndpointConnectionName, accept, context); + return service.get(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, privateEndpointConnectionName, accept, context); } /** @@ -449,10 +446,9 @@ public Mono>> createOrUpdateWithResponseAsync(String r } else { privateEndpointConnection.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, privateEndpointConnectionName, privateEndpointConnection, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -501,11 +497,11 @@ private Mono>> createOrUpdateWithResponseAsync(String } else { privateEndpointConnection.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.createOrUpdate(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, privateEndpointConnectionName, privateEndpointConnection, accept, context); + return service.createOrUpdate(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, privateEndpointConnectionName, + privateEndpointConnection, accept, context); } /** @@ -720,12 +716,11 @@ public Mono>> deleteWithResponseAsync(String resourceG return Mono.error(new IllegalArgumentException( "Parameter privateEndpointConnectionName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.delete(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, privateEndpointConnectionName, accept, context)) + .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, privateEndpointConnectionName, accept, + context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -763,11 +758,10 @@ private Mono>> deleteWithResponseAsync(String resource return Mono.error(new IllegalArgumentException( "Parameter privateEndpointConnectionName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, privateEndpointConnectionName, accept, context); + return service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, privateEndpointConnectionName, accept, context); } /** diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistriesClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistriesClientImpl.java index 00481ff3eb5c..f536a0b9868a 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistriesClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistriesClientImpl.java @@ -40,8 +40,6 @@ import com.azure.resourcemanager.containerregistry.fluent.models.RegistryListCredentialsResultInner; import com.azure.resourcemanager.containerregistry.fluent.models.RegistryNameStatusInner; import com.azure.resourcemanager.containerregistry.fluent.models.RegistryUsageListResultInner; -import com.azure.resourcemanager.containerregistry.fluent.models.RunInner; -import com.azure.resourcemanager.containerregistry.fluent.models.SourceUploadDefinitionInner; import com.azure.resourcemanager.containerregistry.models.GenerateCredentialsParameters; import com.azure.resourcemanager.containerregistry.models.ImportImageParameters; import com.azure.resourcemanager.containerregistry.models.PrivateLinkResourceListResult; @@ -49,7 +47,6 @@ import com.azure.resourcemanager.containerregistry.models.RegistryListResult; import com.azure.resourcemanager.containerregistry.models.RegistryNameCheckRequest; import com.azure.resourcemanager.containerregistry.models.RegistryUpdateParameters; -import com.azure.resourcemanager.containerregistry.models.RunRequest; import com.azure.resourcemanager.resources.fluentcore.collection.InnerSupportsDelete; import com.azure.resourcemanager.resources.fluentcore.collection.InnerSupportsGet; import com.azure.resourcemanager.resources.fluentcore.collection.InnerSupportsListing; @@ -220,25 +217,6 @@ Mono> regenerateCredential(@HostPar @BodyParam("application/json") RegenerateCredentialParameters regenerateCredentialParameters, @HeaderParam("Accept") String accept, Context context); - @Headers({ "Content-Type: application/json" }) - @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/scheduleRun") - @ExpectedResponses({ 200, 202 }) - @UnexpectedResponseExceptionType(ManagementException.class) - Mono>> scheduleRun(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, - @PathParam("resourceGroupName") String resourceGroupName, @PathParam("registryName") String registryName, - @QueryParam("api-version") String apiVersion, @BodyParam("application/json") RunRequest runRequest, - @HeaderParam("Accept") String accept, Context context); - - @Headers({ "Content-Type: application/json" }) - @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/listBuildSourceUploadUrl") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(ManagementException.class) - Mono> getBuildSourceUploadUrl(@HostParam("$host") String endpoint, - @PathParam("subscriptionId") String subscriptionId, - @PathParam("resourceGroupName") String resourceGroupName, @PathParam("registryName") String registryName, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); - @Headers({ "Content-Type: application/json" }) @Get("{nextLink}") @ExpectedResponses({ 200 }) @@ -291,11 +269,11 @@ Mono> listPrivateLinkResourcesNext( } else { registryNameCheckRequest.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.checkNameAvailability(this.client.getEndpoint(), apiVersion, - this.client.getSubscriptionId(), registryNameCheckRequest, accept, context)) + .withContext( + context -> service.checkNameAvailability(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), registryNameCheckRequest, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -328,11 +306,10 @@ Mono> listPrivateLinkResourcesNext( } else { registryNameCheckRequest.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.checkNameAvailability(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - registryNameCheckRequest, accept, context); + return service.checkNameAvailability(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), registryNameCheckRequest, accept, context); } /** @@ -403,11 +380,10 @@ private Mono> listSinglePageAsync() { return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - accept, context)) + .withContext(context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -433,10 +409,11 @@ private Mono> listSinglePageAsync(Context context) return Mono.error(new IllegalArgumentException( "Parameter this.client.getSubscriptionId() is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), accept, context) + return service + .list(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), accept, + context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -518,10 +495,9 @@ private Mono> listByResourceGroupSinglePageAsync(St return Mono .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.listByResourceGroup(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.listByResourceGroup(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) @@ -554,12 +530,11 @@ private Mono> listByResourceGroupSinglePageAsync(St return Mono .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); return service - .listByResourceGroup(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, accept, context) + .listByResourceGroup(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -653,10 +628,9 @@ public Mono> getByResourceGroupWithResponseAsync(String if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.getByResourceGroup(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.getByResourceGroup(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -691,11 +665,10 @@ private Mono> getByResourceGroupWithResponseAsync(String if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.getByResourceGroup(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, accept, context); + return service.getByResourceGroup(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context); } /** @@ -781,10 +754,9 @@ public Mono>> createWithResponseAsync(String resourceG } else { registry.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.create(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.create(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, registry, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -825,11 +797,10 @@ private Mono>> createWithResponseAsync(String resource } else { registry.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.create(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, registry, accept, context); + return service.create(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, registry, accept, context); } /** @@ -1014,12 +985,11 @@ public Mono>> updateWithResponseAsync(String resourceG } else { registryUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, registryUpdateParameters, accept, context)) + .withContext(context -> service.update(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, registryUpdateParameters, accept, + context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -1060,11 +1030,10 @@ private Mono>> updateWithResponseAsync(String resource } else { registryUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, registryUpdateParameters, accept, context); + return service.update(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, registryUpdateParameters, accept, context); } /** @@ -1244,10 +1213,9 @@ public Mono>> deleteWithResponseAsync(String resourceG if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.delete(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -1281,11 +1249,10 @@ private Mono>> deleteWithResponseAsync(String resource if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, accept, context); + return service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, accept, context); } /** @@ -1454,10 +1421,9 @@ public Mono>> generateCredentialsWithResponseAsync(Str } else { generateCredentialsParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.generateCredentials(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.generateCredentials(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, generateCredentialsParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -1500,11 +1466,11 @@ private Mono>> generateCredentialsWithResponseAsync(St } else { generateCredentialsParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.generateCredentials(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, generateCredentialsParameters, accept, context); + return service.generateCredentials(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, generateCredentialsParameters, accept, + context); } /** @@ -1701,10 +1667,9 @@ public Mono>> importImageWithResponseAsync(String reso } else { parameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.importImage(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.importImage(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, parameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -1744,11 +1709,10 @@ private Mono>> importImageWithResponseAsync(String res } else { parameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.importImage(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, parameters, accept, context); + return service.importImage(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, parameters, accept, context); } /** @@ -1926,10 +1890,9 @@ public Mono> listCredentialsWithRes if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.listCredentials(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.listCredentials(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -1964,11 +1927,10 @@ public Mono> listCredentialsWithRes if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.listCredentials(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, accept, context); + return service.listCredentials(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context); } /** @@ -2049,10 +2011,9 @@ public Mono> listUsagesWithResponseAsync( if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.listUsages(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.listUsages(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -2087,11 +2048,10 @@ private Mono> listUsagesWithResponseAsync if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.listUsages(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, accept, context); + return service.listUsages(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context); } /** @@ -2171,11 +2131,11 @@ public RegistryUsageListResultInner listUsages(String resourceGroupName, String if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.listPrivateLinkResources(this.client.getEndpoint(), apiVersion, - this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context)) + .withContext( + context -> service.listPrivateLinkResources(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -2211,12 +2171,11 @@ public RegistryUsageListResultInner listUsages(String resourceGroupName, String if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); return service - .listPrivateLinkResources(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, accept, context) + .listPrivateLinkResources(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -2326,11 +2285,11 @@ public Mono> getPrivateLinkResourceWithRespon if (groupName == null) { return Mono.error(new IllegalArgumentException("Parameter groupName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.getPrivateLinkResource(this.client.getEndpoint(), apiVersion, - this.client.getSubscriptionId(), resourceGroupName, registryName, groupName, accept, context)) + .withContext( + context -> service.getPrivateLinkResource(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, groupName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -2368,11 +2327,10 @@ private Mono> getPrivateLinkResourceWithRespo if (groupName == null) { return Mono.error(new IllegalArgumentException("Parameter groupName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.getPrivateLinkResource(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, groupName, accept, context); + return service.getPrivateLinkResource(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, groupName, accept, context); } /** @@ -2466,10 +2424,9 @@ public Mono> regenerateCredentialWi } else { regenerateCredentialParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.regenerateCredential(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.regenerateCredential(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, regenerateCredentialParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -2514,11 +2471,11 @@ private Mono> regenerateCredentialW } else { regenerateCredentialParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.regenerateCredential(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, regenerateCredentialParameters, accept, context); + return service.regenerateCredential(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, regenerateCredentialParameters, accept, + context); } /** @@ -2579,360 +2536,6 @@ public RegistryListCredentialsResultInner regenerateCredential(String resourceGr Context.NONE).getValue(); } - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return run resource properties along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono>> scheduleRunWithResponseAsync(String resourceGroupName, String registryName, - RunRequest runRequest) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (registryName == null) { - return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); - } - if (runRequest == null) { - return Mono.error(new IllegalArgumentException("Parameter runRequest is required and cannot be null.")); - } else { - runRequest.validate(); - } - final String apiVersion = "2019-06-01-preview"; - final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.scheduleRun(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, runRequest, accept, context)) - .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); - } - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return run resource properties along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> scheduleRunWithResponseAsync(String resourceGroupName, String registryName, - RunRequest runRequest, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (registryName == null) { - return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); - } - if (runRequest == null) { - return Mono.error(new IllegalArgumentException("Parameter runRequest is required and cannot be null.")); - } else { - runRequest.validate(); - } - final String apiVersion = "2019-06-01-preview"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.scheduleRun(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, runRequest, accept, context); - } - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of run resource properties. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - public PollerFlux, RunInner> beginScheduleRunAsync(String resourceGroupName, - String registryName, RunRequest runRequest) { - Mono>> mono - = scheduleRunWithResponseAsync(resourceGroupName, registryName, runRequest); - return this.client.getLroResult(mono, this.client.getHttpPipeline(), RunInner.class, - RunInner.class, this.client.getContext()); - } - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of run resource properties. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, RunInner> beginScheduleRunAsync(String resourceGroupName, - String registryName, RunRequest runRequest, Context context) { - context = this.client.mergeContext(context); - Mono>> mono - = scheduleRunWithResponseAsync(resourceGroupName, registryName, runRequest, context); - return this.client.getLroResult(mono, this.client.getHttpPipeline(), RunInner.class, - RunInner.class, context); - } - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link SyncPoller} for polling of run resource properties. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - public SyncPoller, RunInner> beginScheduleRun(String resourceGroupName, String registryName, - RunRequest runRequest) { - return this.beginScheduleRunAsync(resourceGroupName, registryName, runRequest).getSyncPoller(); - } - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link SyncPoller} for polling of run resource properties. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - public SyncPoller, RunInner> beginScheduleRun(String resourceGroupName, String registryName, - RunRequest runRequest, Context context) { - return this.beginScheduleRunAsync(resourceGroupName, registryName, runRequest, context).getSyncPoller(); - } - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return run resource properties on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono scheduleRunAsync(String resourceGroupName, String registryName, RunRequest runRequest) { - return beginScheduleRunAsync(resourceGroupName, registryName, runRequest).last() - .flatMap(this.client::getLroFinalResultOrError); - } - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return run resource properties on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono scheduleRunAsync(String resourceGroupName, String registryName, RunRequest runRequest, - Context context) { - return beginScheduleRunAsync(resourceGroupName, registryName, runRequest, context).last() - .flatMap(this.client::getLroFinalResultOrError); - } - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return run resource properties. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public RunInner scheduleRun(String resourceGroupName, String registryName, RunRequest runRequest) { - return scheduleRunAsync(resourceGroupName, registryName, runRequest).block(); - } - - /** - * Schedules a new run based on the request parameters and add it to the run queue. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param runRequest The parameters of a run that needs to scheduled. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return run resource properties. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public RunInner scheduleRun(String resourceGroupName, String registryName, RunRequest runRequest, Context context) { - return scheduleRunAsync(resourceGroupName, registryName, runRequest, context).block(); - } - - /** - * Get the upload location for the user to be able to upload the source. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the upload location for the user to be able to upload the source along with {@link Response} on - * successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> - getBuildSourceUploadUrlWithResponseAsync(String resourceGroupName, String registryName) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (registryName == null) { - return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); - } - final String apiVersion = "2019-06-01-preview"; - final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.getBuildSourceUploadUrl(this.client.getEndpoint(), - this.client.getSubscriptionId(), resourceGroupName, registryName, apiVersion, accept, context)) - .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); - } - - /** - * Get the upload location for the user to be able to upload the source. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the upload location for the user to be able to upload the source along with {@link Response} on - * successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> - getBuildSourceUploadUrlWithResponseAsync(String resourceGroupName, String registryName, Context context) { - if (this.client.getEndpoint() == null) { - return Mono.error( - new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); - } - if (this.client.getSubscriptionId() == null) { - return Mono.error(new IllegalArgumentException( - "Parameter this.client.getSubscriptionId() is required and cannot be null.")); - } - if (resourceGroupName == null) { - return Mono - .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); - } - if (registryName == null) { - return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); - } - final String apiVersion = "2019-06-01-preview"; - final String accept = "application/json"; - context = this.client.mergeContext(context); - return service.getBuildSourceUploadUrl(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, accept, context); - } - - /** - * Get the upload location for the user to be able to upload the source. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the upload location for the user to be able to upload the source on successful completion of - * {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono getBuildSourceUploadUrlAsync(String resourceGroupName, - String registryName) { - return getBuildSourceUploadUrlWithResponseAsync(resourceGroupName, registryName) - .flatMap(res -> Mono.justOrEmpty(res.getValue())); - } - - /** - * Get the upload location for the user to be able to upload the source. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the upload location for the user to be able to upload the source along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response getBuildSourceUploadUrlWithResponse(String resourceGroupName, - String registryName, Context context) { - return getBuildSourceUploadUrlWithResponseAsync(resourceGroupName, registryName, context).block(); - } - - /** - * Get the upload location for the user to be able to upload the source. - * - * @param resourceGroupName The name of the resource group to which the container registry belongs. - * @param registryName The name of the container registry. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the upload location for the user to be able to upload the source. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public SourceUploadDefinitionInner getBuildSourceUploadUrl(String resourceGroupName, String registryName) { - return getBuildSourceUploadUrlWithResponse(resourceGroupName, registryName, Context.NONE).getValue(); - } - /** * Get the next page of items. * diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistriesImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistriesImpl.java index bfbf3b9211fd..2867b40f313b 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistriesImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistriesImpl.java @@ -162,8 +162,8 @@ public SourceUploadDefinition getBuildSourceUploadUrl(String rgName, String acrN @Override public Mono getBuildSourceUploadUrlAsync(String rgName, String acrName) { return this.manager() - .serviceClient() - .getRegistries() + .taskClient() + .getRegistryTasks() .getBuildSourceUploadUrlAsync(rgName, acrName) .map(sourceUploadDefinitionInner -> new SourceUploadDefinitionImpl(sourceUploadDefinitionInner)); } diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryImpl.java index b6d4bb69378e..5f685c119992 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryImpl.java @@ -249,8 +249,8 @@ public SourceUploadDefinition getBuildSourceUploadUrl() { @Override public Mono getBuildSourceUploadUrlAsync() { return this.manager() - .serviceClient() - .getRegistries() + .taskClient() + .getRegistryTasks() .getBuildSourceUploadUrlAsync(this.resourceGroupName(), this.name()) .map(sourceUploadDefinitionInner -> new SourceUploadDefinitionImpl(sourceUploadDefinitionInner)); } diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTaskImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTaskImpl.java index 9085bbb22681..3ca87965c994 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTaskImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTaskImpl.java @@ -178,14 +178,14 @@ public Map sourceTriggers() { } RegistryTaskImpl(ContainerRegistryManager registryManager, String taskName) { - this.tasksInner = registryManager.serviceClient().getTasks(); + this.tasksInner = registryManager.taskClient().getTasks(); this.taskName = taskName; this.inner = new TaskInner(); this.taskUpdateParameters = new TaskUpdateParameters(); } RegistryTaskImpl(ContainerRegistryManager registryManager, TaskInner inner) { - this.tasksInner = registryManager.serviceClient().getTasks(); + this.tasksInner = registryManager.taskClient().getTasks(); this.taskName = inner.name(); this.inner = inner; this.resourceGroupName = ResourceUtils.groupFromResourceId(this.inner.id()); diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTaskRunImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTaskRunImpl.java index 74f6dd2c2440..1339b2b72bf9 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTaskRunImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTaskRunImpl.java @@ -4,7 +4,7 @@ import com.azure.core.util.logging.ClientLogger; import com.azure.resourcemanager.containerregistry.ContainerRegistryManager; -import com.azure.resourcemanager.containerregistry.fluent.RegistriesClient; +import com.azure.resourcemanager.containerregistry.fluent.RegistryTasksClient; import com.azure.resourcemanager.containerregistry.fluent.models.RunInner; import com.azure.resourcemanager.containerregistry.models.AgentProperties; import com.azure.resourcemanager.containerregistry.models.Architecture; @@ -40,7 +40,7 @@ class RegistryTaskRunImpl implements RegistryTaskRun, RegistryTaskRun.Definition private String resourceGroupName; private String registryName; private RunInner inner; - private RegistriesClient registriesInner; + private RegistryTasksClient registryTasksClient; private FileTaskRunRequest fileTaskRunRequest; private EncodedTaskRunRequest encodedTaskRunRequest; private DockerBuildRequest dockerTaskRunRequest; @@ -116,7 +116,7 @@ public String runId() { RegistryTaskRunImpl(ContainerRegistryManager registryManager, RunInner runInner) { this.registryManager = registryManager; - this.registriesInner = registryManager.serviceClient().getRegistries(); + this.registryTasksClient = registryManager.taskClient().getRegistryTasks(); this.platform = new PlatformProperties(); this.inner = runInner; @@ -301,28 +301,28 @@ public RegistryTaskRun execute() { public Mono executeAsync() { final RegistryTaskRunImpl self = this; if (this.fileTaskRunRequest != null) { - return this.registriesInner + return this.registryTasksClient .scheduleRunAsync(this.resourceGroupName(), this.registryName(), this.fileTaskRunRequest) .map(runInner -> { self.inner = runInner; return self; }); } else if (this.encodedTaskRunRequest != null) { - return this.registriesInner + return this.registryTasksClient .scheduleRunAsync(this.resourceGroupName(), this.registryName(), this.encodedTaskRunRequest) .map(runInner -> { self.inner = runInner; return self; }); } else if (this.dockerTaskRunRequest != null) { - return this.registriesInner + return this.registryTasksClient .scheduleRunAsync(this.resourceGroupName(), this.registryName(), this.dockerTaskRunRequest) .map(runInner -> { self.inner = runInner; return self; }); } else if (this.taskRunRequest != null) { - return this.registriesInner + return this.registryTasksClient .scheduleRunAsync(this.resourceGroupName(), this.registryName(), this.taskRunRequest) .map(runInner -> { self.inner = runInner; @@ -365,7 +365,7 @@ public RegistryTaskRun refresh() { @Override public Mono refreshAsync() { final RegistryTaskRunImpl self = this; - return registryManager.serviceClient() + return registryManager.taskClient() .getRuns() .getAsync(this.resourceGroupName(), this.registryName(), this.inner.runId()) .map(runInner -> { diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTaskRunsImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTaskRunsImpl.java index ce17ba64d1dc..575d5d6310dd 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTaskRunsImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTaskRunsImpl.java @@ -26,7 +26,7 @@ public RegistryTaskRun.DefinitionStages.BlankFromRuns scheduleRun() { @Override public PagedFlux listByRegistryAsync(String rgName, String acrName) { - return PagedConverter.mapPage(this.registryManager.serviceClient().getRuns().listAsync(rgName, acrName), + return PagedConverter.mapPage(this.registryManager.taskClient().getRuns().listAsync(rgName, acrName), inner -> wrapModel(inner)); } @@ -37,7 +37,7 @@ public PagedIterable listByRegistry(String rgName, String acrNa @Override public Mono getLogSasUrlAsync(String rgName, String acrName, String runId) { - return this.registryManager.serviceClient() + return this.registryManager.taskClient() .getRuns() .getLogSasUrlAsync(rgName, acrName, runId) .map(runGetLogResultInner -> runGetLogResultInner.logLink()); @@ -50,7 +50,7 @@ public String getLogSasUrl(String rgName, String acrName, String runId) { @Override public Mono cancelAsync(String rgName, String acrName, String runId) { - return this.registryManager.serviceClient().getRuns().cancelAsync(rgName, acrName, runId); + return this.registryManager.taskClient().getRuns().cancelAsync(rgName, acrName, runId); } @Override diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTasksClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTasksClientImpl.java new file mode 100644 index 000000000000..7c269a625297 --- /dev/null +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTasksClientImpl.java @@ -0,0 +1,437 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.resourcemanager.containerregistry.implementation; + +import com.azure.core.annotation.BodyParam; +import com.azure.core.annotation.ExpectedResponses; +import com.azure.core.annotation.HeaderParam; +import com.azure.core.annotation.Headers; +import com.azure.core.annotation.Host; +import com.azure.core.annotation.HostParam; +import com.azure.core.annotation.PathParam; +import com.azure.core.annotation.Post; +import com.azure.core.annotation.QueryParam; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceInterface; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.annotation.UnexpectedResponseExceptionType; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.RestProxy; +import com.azure.core.management.exception.ManagementException; +import com.azure.core.management.polling.PollResult; +import com.azure.core.util.Context; +import com.azure.core.util.FluxUtil; +import com.azure.core.util.polling.PollerFlux; +import com.azure.core.util.polling.SyncPoller; +import com.azure.resourcemanager.containerregistry.fluent.RegistryTasksClient; +import com.azure.resourcemanager.containerregistry.fluent.models.RunInner; +import com.azure.resourcemanager.containerregistry.fluent.models.SourceUploadDefinitionInner; +import com.azure.resourcemanager.containerregistry.models.RunRequest; +import java.nio.ByteBuffer; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +/** + * An instance of this class provides access to all the operations defined in RegistryTasksClient. + */ +public final class RegistryTasksClientImpl implements RegistryTasksClient { + /** + * The proxy service used to perform REST calls. + */ + private final RegistryTasksService service; + + /** + * The service client containing this operation class. + */ + private final ContainerRegistryTasksManagementClientImpl client; + + /** + * Initializes an instance of RegistryTasksClientImpl. + * + * @param client the instance of the service client containing this operation class. + */ + RegistryTasksClientImpl(ContainerRegistryTasksManagementClientImpl client) { + this.service + = RestProxy.create(RegistryTasksService.class, client.getHttpPipeline(), client.getSerializerAdapter()); + this.client = client; + } + + /** + * The interface defining all the services for ContainerRegistryTasksManagementClientRegistryTasks to be used by the + * proxy service to perform REST calls. + */ + @Host("{$host}") + @ServiceInterface(name = "ContainerRegistryTasksManagementClientRegistryTasks") + public interface RegistryTasksService { + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/scheduleRun") + @ExpectedResponses({ 200, 202 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono>> scheduleRun(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("registryName") String registryName, + @QueryParam("api-version") String apiVersion, @BodyParam("application/json") RunRequest runRequest, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Post("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/listBuildSourceUploadUrl") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> getBuildSourceUploadUrl(@HostParam("$host") String endpoint, + @PathParam("subscriptionId") String subscriptionId, + @PathParam("resourceGroupName") String resourceGroupName, @PathParam("registryName") String registryName, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, Context context); + } + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return run resource properties along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono>> scheduleRunWithResponseAsync(String resourceGroupName, String registryName, + RunRequest runRequest) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (registryName == null) { + return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); + } + if (runRequest == null) { + return Mono.error(new IllegalArgumentException("Parameter runRequest is required and cannot be null.")); + } else { + runRequest.validate(); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.scheduleRun(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, registryName, this.client.getApiVersion(), runRequest, accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return run resource properties along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono>> scheduleRunWithResponseAsync(String resourceGroupName, String registryName, + RunRequest runRequest, Context context) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (registryName == null) { + return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); + } + if (runRequest == null) { + return Mono.error(new IllegalArgumentException("Parameter runRequest is required and cannot be null.")); + } else { + runRequest.validate(); + } + final String accept = "application/json"; + context = this.client.mergeContext(context); + return service.scheduleRun(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + registryName, this.client.getApiVersion(), runRequest, accept, context); + } + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link PollerFlux} for polling of run resource properties. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public PollerFlux, RunInner> beginScheduleRunAsync(String resourceGroupName, + String registryName, RunRequest runRequest) { + Mono>> mono + = scheduleRunWithResponseAsync(resourceGroupName, registryName, runRequest); + return this.client.getLroResult(mono, this.client.getHttpPipeline(), RunInner.class, + RunInner.class, this.client.getContext()); + } + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link PollerFlux} for polling of run resource properties. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + private PollerFlux, RunInner> beginScheduleRunAsync(String resourceGroupName, + String registryName, RunRequest runRequest, Context context) { + context = this.client.mergeContext(context); + Mono>> mono + = scheduleRunWithResponseAsync(resourceGroupName, registryName, runRequest, context); + return this.client.getLroResult(mono, this.client.getHttpPipeline(), RunInner.class, + RunInner.class, context); + } + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of run resource properties. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, RunInner> beginScheduleRun(String resourceGroupName, String registryName, + RunRequest runRequest) { + return this.beginScheduleRunAsync(resourceGroupName, registryName, runRequest).getSyncPoller(); + } + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of run resource properties. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller, RunInner> beginScheduleRun(String resourceGroupName, String registryName, + RunRequest runRequest, Context context) { + return this.beginScheduleRunAsync(resourceGroupName, registryName, runRequest, context).getSyncPoller(); + } + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return run resource properties on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono scheduleRunAsync(String resourceGroupName, String registryName, RunRequest runRequest) { + return beginScheduleRunAsync(resourceGroupName, registryName, runRequest).last() + .flatMap(this.client::getLroFinalResultOrError); + } + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return run resource properties on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono scheduleRunAsync(String resourceGroupName, String registryName, RunRequest runRequest, + Context context) { + return beginScheduleRunAsync(resourceGroupName, registryName, runRequest, context).last() + .flatMap(this.client::getLroFinalResultOrError); + } + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return run resource properties. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public RunInner scheduleRun(String resourceGroupName, String registryName, RunRequest runRequest) { + return scheduleRunAsync(resourceGroupName, registryName, runRequest).block(); + } + + /** + * Schedules a new run based on the request parameters and add it to the run queue. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param runRequest The parameters of a run that needs to scheduled. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return run resource properties. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public RunInner scheduleRun(String resourceGroupName, String registryName, RunRequest runRequest, Context context) { + return scheduleRunAsync(resourceGroupName, registryName, runRequest, context).block(); + } + + /** + * Get the upload location for the user to be able to upload the source. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the upload location for the user to be able to upload the source along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> + getBuildSourceUploadUrlWithResponseAsync(String resourceGroupName, String registryName) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (registryName == null) { + return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext( + context -> service.getBuildSourceUploadUrl(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, registryName, this.client.getApiVersion(), accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Get the upload location for the user to be able to upload the source. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the upload location for the user to be able to upload the source along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> + getBuildSourceUploadUrlWithResponseAsync(String resourceGroupName, String registryName, Context context) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (this.client.getSubscriptionId() == null) { + return Mono.error(new IllegalArgumentException( + "Parameter this.client.getSubscriptionId() is required and cannot be null.")); + } + if (resourceGroupName == null) { + return Mono + .error(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null.")); + } + if (registryName == null) { + return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); + } + final String accept = "application/json"; + context = this.client.mergeContext(context); + return service.getBuildSourceUploadUrl(this.client.getEndpoint(), this.client.getSubscriptionId(), + resourceGroupName, registryName, this.client.getApiVersion(), accept, context); + } + + /** + * Get the upload location for the user to be able to upload the source. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the upload location for the user to be able to upload the source on successful completion of + * {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getBuildSourceUploadUrlAsync(String resourceGroupName, + String registryName) { + return getBuildSourceUploadUrlWithResponseAsync(resourceGroupName, registryName) + .flatMap(res -> Mono.justOrEmpty(res.getValue())); + } + + /** + * Get the upload location for the user to be able to upload the source. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the upload location for the user to be able to upload the source along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getBuildSourceUploadUrlWithResponse(String resourceGroupName, + String registryName, Context context) { + return getBuildSourceUploadUrlWithResponseAsync(resourceGroupName, registryName, context).block(); + } + + /** + * Get the upload location for the user to be able to upload the source. + * + * @param resourceGroupName The name of the resource group to which the container registry belongs. + * @param registryName The name of the container registry. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the upload location for the user to be able to upload the source. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public SourceUploadDefinitionInner getBuildSourceUploadUrl(String resourceGroupName, String registryName) { + return getBuildSourceUploadUrlWithResponse(resourceGroupName, registryName, Context.NONE).getValue(); + } +} diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTasksImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTasksImpl.java index 573db6b801cd..acee3739c8ad 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTasksImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RegistryTasksImpl.java @@ -29,7 +29,7 @@ public RegistryTask.DefinitionStages.Blank define(String name) { @Override public PagedFlux listByRegistryAsync(String resourceGroupName, String registryName) { return PagedConverter.mapPage( - this.registryManager.serviceClient().getTasks().listAsync(resourceGroupName, registryName), + this.registryManager.taskClient().getTasks().listAsync(resourceGroupName, registryName), inner -> wrapModel(inner)); } @@ -42,12 +42,12 @@ public PagedIterable listByRegistry(String resourceGroupName, Stri public Mono getByRegistryAsync(String resourceGroupName, String registryName, String taskName, boolean includeSecrets) { if (includeSecrets) { - return this.registryManager.serviceClient() + return this.registryManager.taskClient() .getTasks() .getDetailsAsync(resourceGroupName, registryName, taskName) .map(taskInner -> new RegistryTaskImpl(registryManager, taskInner)); } else { - return this.registryManager.serviceClient() + return this.registryManager.taskClient() .getTasks() .getAsync(resourceGroupName, registryName, taskName) .map(taskInner -> new RegistryTaskImpl(registryManager, taskInner)); @@ -62,7 +62,7 @@ public RegistryTask getByRegistry(String resourceGroupName, String registryName, @Override public Mono deleteByRegistryAsync(String resourceGroupName, String registryName, String taskName) { - return this.registryManager.serviceClient().getTasks().deleteAsync(resourceGroupName, registryName, taskName); + return this.registryManager.taskClient().getTasks().deleteAsync(resourceGroupName, registryName, taskName); } @Override @@ -75,6 +75,6 @@ private RegistryTaskImpl wrapModel(TaskInner innerModel) { } public TasksClient inner() { - return this.registryManager.serviceClient().getTasks(); + return this.registryManager.taskClient().getTasks(); } } diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ReplicationsClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ReplicationsClientImpl.java index b123d623d553..1eb0e3ca8416 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ReplicationsClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ReplicationsClientImpl.java @@ -159,11 +159,10 @@ private Mono> listSinglePageAsync(String resourc if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, accept, context)) + .withContext(context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -199,12 +198,11 @@ private Mono> listSinglePageAsync(String resourc if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); return service - .list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, accept, context) + .list(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -311,11 +309,10 @@ public Mono> getWithResponseAsync(String resourceGrou return Mono .error(new IllegalArgumentException("Parameter replicationName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, replicationName, accept, context)) + .withContext(context -> service.get(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, replicationName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -354,11 +351,10 @@ private Mono> getWithResponseAsync(String resourceGro return Mono .error(new IllegalArgumentException("Parameter replicationName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, replicationName, accept, context); + return service.get(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, replicationName, accept, context); } /** @@ -452,12 +448,11 @@ public Mono>> createWithResponseAsync(String resourceG } else { replication.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.create(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, replicationName, replication, accept, context)) + .withContext(context -> service.create(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, replicationName, replication, accept, + context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -502,11 +497,10 @@ private Mono>> createWithResponseAsync(String resource } else { replication.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.create(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, replicationName, replication, accept, context); + return service.create(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, replicationName, replication, accept, context); } /** @@ -710,12 +704,11 @@ public Mono>> updateWithResponseAsync(String resourceG } else { replicationUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, replicationName, replicationUpdateParameters, accept, context)) + .withContext(context -> service.update(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, replicationName, + replicationUpdateParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -761,11 +754,10 @@ private Mono>> updateWithResponseAsync(String resource } else { replicationUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, replicationName, replicationUpdateParameters, accept, context); + return service.update(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, replicationName, replicationUpdateParameters, accept, context); } /** @@ -967,10 +959,9 @@ public Mono>> deleteWithResponseAsync(String resourceG return Mono .error(new IllegalArgumentException("Parameter replicationName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.delete(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, replicationName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -1009,11 +1000,10 @@ private Mono>> deleteWithResponseAsync(String resource return Mono .error(new IllegalArgumentException("Parameter replicationName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, replicationName, accept, context); + return service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, replicationName, accept, context); } /** diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RunsClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RunsClientImpl.java index 5fcefe716dda..938a2a8cdd98 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RunsClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/RunsClientImpl.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.implementation; @@ -52,24 +51,24 @@ public final class RunsClientImpl implements RunsClient { /** * The service client containing this operation class. */ - private final ContainerRegistryManagementClientImpl client; + private final ContainerRegistryTasksManagementClientImpl client; /** * Initializes an instance of RunsClientImpl. * * @param client the instance of the service client containing this operation class. */ - RunsClientImpl(ContainerRegistryManagementClientImpl client) { + RunsClientImpl(ContainerRegistryTasksManagementClientImpl client) { this.service = RestProxy.create(RunsService.class, client.getHttpPipeline(), client.getSerializerAdapter()); this.client = client; } /** - * The interface defining all the services for ContainerRegistryManagementClientRuns to be used by the proxy service - * to perform REST calls. + * The interface defining all the services for ContainerRegistryTasksManagementClientRuns to be used by the proxy + * service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "ContainerRegistryManagementClientRuns") + @ServiceInterface(name = "ContainerRegistryTasksManagementClientRuns") public interface RunsService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/runs") @@ -161,11 +160,10 @@ private Mono> listSinglePageAsync(String resourceGroupNa if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.list(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, filter, top, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), filter, top, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -203,12 +201,11 @@ private Mono> listSinglePageAsync(String resourceGroupNa if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service .list(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, registryName, - apiVersion, filter, top, accept, context) + this.client.getApiVersion(), filter, top, accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -340,11 +337,10 @@ public Mono> getWithResponseAsync(String resourceGroupName, S if (runId == null) { return Mono.error(new IllegalArgumentException("Parameter runId is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, runId, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), runId, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -382,11 +378,10 @@ private Mono> getWithResponseAsync(String resourceGroupName, if (runId == null) { return Mono.error(new IllegalArgumentException("Parameter runId is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, registryName, - apiVersion, runId, accept, context); + this.client.getApiVersion(), runId, accept, context); } /** @@ -479,11 +474,11 @@ public Mono>> updateWithResponseAsync(String resourceG } else { runUpdateParameters.validate(); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, runId, runUpdateParameters, accept, context)) + .withContext( + context -> service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + registryName, this.client.getApiVersion(), runId, runUpdateParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -527,11 +522,10 @@ private Mono>> updateWithResponseAsync(String resource } else { runUpdateParameters.validate(); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, runId, runUpdateParameters, accept, context); + registryName, this.client.getApiVersion(), runId, runUpdateParameters, accept, context); } /** @@ -724,11 +718,10 @@ public Mono> getLogSasUrlWithResponseAsync(String if (runId == null) { return Mono.error(new IllegalArgumentException("Parameter runId is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.getLogSasUrl(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, runId, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), runId, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -765,11 +758,10 @@ private Mono> getLogSasUrlWithResponseAsync(Strin if (runId == null) { return Mono.error(new IllegalArgumentException("Parameter runId is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.getLogSasUrl(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, runId, accept, context); + registryName, this.client.getApiVersion(), runId, accept, context); } /** @@ -855,11 +847,10 @@ public Mono>> cancelWithResponseAsync(String resourceG if (runId == null) { return Mono.error(new IllegalArgumentException("Parameter runId is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.cancel(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, runId, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), runId, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -896,11 +887,10 @@ private Mono>> cancelWithResponseAsync(String resource if (runId == null) { return Mono.error(new IllegalArgumentException("Parameter runId is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.cancel(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, runId, accept, context); + registryName, this.client.getApiVersion(), runId, accept, context); } /** diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ScopeMapsClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ScopeMapsClientImpl.java index ec4f85ae763d..1228c61f93db 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ScopeMapsClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/ScopeMapsClientImpl.java @@ -157,11 +157,10 @@ private Mono> listSinglePageAsync(String resourceGr if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, accept, context)) + .withContext(context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -197,12 +196,11 @@ private Mono> listSinglePageAsync(String resourceGr if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); return service - .list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, accept, context) + .list(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -308,11 +306,10 @@ public Mono> getWithResponseAsync(String resourceGroupNa if (scopeMapName == null) { return Mono.error(new IllegalArgumentException("Parameter scopeMapName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, scopeMapName, accept, context)) + .withContext(context -> service.get(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, scopeMapName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -350,11 +347,10 @@ private Mono> getWithResponseAsync(String resourceGroupN if (scopeMapName == null) { return Mono.error(new IllegalArgumentException("Parameter scopeMapName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, scopeMapName, accept, context); + return service.get(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, scopeMapName, accept, context); } /** @@ -448,12 +444,11 @@ public Mono>> createWithResponseAsync(String resourceG } else { scopeMapCreateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.create(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, scopeMapName, scopeMapCreateParameters, accept, context)) + .withContext(context -> service.create(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, scopeMapName, + scopeMapCreateParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -498,11 +493,10 @@ private Mono>> createWithResponseAsync(String resource } else { scopeMapCreateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.create(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, scopeMapName, scopeMapCreateParameters, accept, context); + return service.create(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, scopeMapName, scopeMapCreateParameters, accept, context); } /** @@ -704,12 +698,11 @@ public Mono>> updateWithResponseAsync(String resourceG } else { scopeMapUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, scopeMapName, scopeMapUpdateParameters, accept, context)) + .withContext(context -> service.update(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, scopeMapName, + scopeMapUpdateParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -754,11 +747,10 @@ private Mono>> updateWithResponseAsync(String resource } else { scopeMapUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, scopeMapName, scopeMapUpdateParameters, accept, context); + return service.update(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, scopeMapName, scopeMapUpdateParameters, accept, context); } /** @@ -952,10 +944,9 @@ public Mono>> deleteWithResponseAsync(String resourceG if (scopeMapName == null) { return Mono.error(new IllegalArgumentException("Parameter scopeMapName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.delete(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, scopeMapName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -993,11 +984,10 @@ private Mono>> deleteWithResponseAsync(String resource if (scopeMapName == null) { return Mono.error(new IllegalArgumentException("Parameter scopeMapName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, scopeMapName, accept, context); + return service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, scopeMapName, accept, context); } /** diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/TaskRunsClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/TaskRunsClientImpl.java index de584279d1a3..2a64d7951e51 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/TaskRunsClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/TaskRunsClientImpl.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.implementation; @@ -53,24 +52,24 @@ public final class TaskRunsClientImpl implements TaskRunsClient { /** * The service client containing this operation class. */ - private final ContainerRegistryManagementClientImpl client; + private final ContainerRegistryTasksManagementClientImpl client; /** * Initializes an instance of TaskRunsClientImpl. * * @param client the instance of the service client containing this operation class. */ - TaskRunsClientImpl(ContainerRegistryManagementClientImpl client) { + TaskRunsClientImpl(ContainerRegistryTasksManagementClientImpl client) { this.service = RestProxy.create(TaskRunsService.class, client.getHttpPipeline(), client.getSerializerAdapter()); this.client = client; } /** - * The interface defining all the services for ContainerRegistryManagementClientTaskRuns to be used by the proxy - * service to perform REST calls. + * The interface defining all the services for ContainerRegistryTasksManagementClientTaskRuns to be used by the + * proxy service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "ContainerRegistryManagementClientTaskRuns") + @ServiceInterface(name = "ContainerRegistryTasksManagementClientTaskRuns") public interface TaskRunsService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/taskRuns/{taskRunName}") @@ -173,11 +172,10 @@ public Mono> getWithResponseAsync(String resourceGroupNam if (taskRunName == null) { return Mono.error(new IllegalArgumentException("Parameter taskRunName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, taskRunName, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), taskRunName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -215,11 +213,10 @@ private Mono> getWithResponseAsync(String resourceGroupNa if (taskRunName == null) { return Mono.error(new IllegalArgumentException("Parameter taskRunName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, registryName, - apiVersion, taskRunName, accept, context); + this.client.getApiVersion(), taskRunName, accept, context); } /** @@ -312,11 +309,10 @@ public Mono>> createWithResponseAsync(String resourceG } else { taskRun.validate(); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.create(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, taskRunName, taskRun, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), taskRunName, taskRun, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -360,11 +356,10 @@ private Mono>> createWithResponseAsync(String resource } else { taskRun.validate(); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.create(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, taskRunName, taskRun, accept, context); + registryName, this.client.getApiVersion(), taskRunName, taskRun, accept, context); } /** @@ -556,11 +551,10 @@ public Mono>> deleteWithResponseAsync(String resourceG if (taskRunName == null) { return Mono.error(new IllegalArgumentException("Parameter taskRunName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, taskRunName, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), taskRunName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -597,11 +591,10 @@ private Mono>> deleteWithResponseAsync(String resource if (taskRunName == null) { return Mono.error(new IllegalArgumentException("Parameter taskRunName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, taskRunName, accept, context); + registryName, this.client.getApiVersion(), taskRunName, accept, context); } /** @@ -786,11 +779,11 @@ public Mono>> updateWithResponseAsync(String resourceG } else { updateParameters.validate(); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, taskRunName, updateParameters, accept, context)) + .withContext( + context -> service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + registryName, this.client.getApiVersion(), taskRunName, updateParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -835,11 +828,10 @@ private Mono>> updateWithResponseAsync(String resource } else { updateParameters.validate(); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, taskRunName, updateParameters, accept, context); + registryName, this.client.getApiVersion(), taskRunName, updateParameters, accept, context); } /** @@ -1033,11 +1025,10 @@ public Mono> getDetailsWithResponseAsync(String resourceG if (taskRunName == null) { return Mono.error(new IllegalArgumentException("Parameter taskRunName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.getDetails(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, taskRunName, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), taskRunName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -1075,11 +1066,10 @@ private Mono> getDetailsWithResponseAsync(String resource if (taskRunName == null) { return Mono.error(new IllegalArgumentException("Parameter taskRunName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.getDetails(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, taskRunName, accept, context); + registryName, this.client.getApiVersion(), taskRunName, accept, context); } /** @@ -1161,11 +1151,10 @@ private Mono> listSinglePageAsync(String resourceGro if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.list(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -1200,12 +1189,11 @@ private Mono> listSinglePageAsync(String resourceGro if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service .list(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, registryName, - apiVersion, accept, context) + this.client.getApiVersion(), accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/TasksClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/TasksClientImpl.java index 3b9b2c075e77..8d6e084fb4c1 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/TasksClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/TasksClientImpl.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.implementation; @@ -53,24 +52,24 @@ public final class TasksClientImpl implements TasksClient { /** * The service client containing this operation class. */ - private final ContainerRegistryManagementClientImpl client; + private final ContainerRegistryTasksManagementClientImpl client; /** * Initializes an instance of TasksClientImpl. * * @param client the instance of the service client containing this operation class. */ - TasksClientImpl(ContainerRegistryManagementClientImpl client) { + TasksClientImpl(ContainerRegistryTasksManagementClientImpl client) { this.service = RestProxy.create(TasksService.class, client.getHttpPipeline(), client.getSerializerAdapter()); this.client = client; } /** - * The interface defining all the services for ContainerRegistryManagementClientTasks to be used by the proxy + * The interface defining all the services for ContainerRegistryTasksManagementClientTasks to be used by the proxy * service to perform REST calls. */ @Host("{$host}") - @ServiceInterface(name = "ContainerRegistryManagementClientTasks") + @ServiceInterface(name = "ContainerRegistryTasksManagementClientTasks") public interface TasksService { @Headers({ "Content-Type: application/json" }) @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/tasks") @@ -168,11 +167,10 @@ private Mono> listSinglePageAsync(String resourceGroupN if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.list(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -207,12 +205,11 @@ private Mono> listSinglePageAsync(String resourceGroupN if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service .list(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, registryName, - apiVersion, accept, context) + this.client.getApiVersion(), accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -313,11 +310,10 @@ public Mono> getWithResponseAsync(String resourceGroupName, if (taskName == null) { return Mono.error(new IllegalArgumentException("Parameter taskName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, taskName, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), taskName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -354,11 +350,10 @@ private Mono> getWithResponseAsync(String resourceGroupName, if (taskName == null) { return Mono.error(new IllegalArgumentException("Parameter taskName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.get(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, registryName, - apiVersion, taskName, accept, context); + this.client.getApiVersion(), taskName, accept, context); } /** @@ -452,11 +447,11 @@ public Mono>> createWithResponseAsync(String resourceG } else { taskCreateParameters.validate(); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.create(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, taskName, taskCreateParameters, accept, context)) + .withContext( + context -> service.create(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + registryName, this.client.getApiVersion(), taskName, taskCreateParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -501,11 +496,10 @@ private Mono>> createWithResponseAsync(String resource } else { taskCreateParameters.validate(); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.create(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, taskName, taskCreateParameters, accept, context); + registryName, this.client.getApiVersion(), taskName, taskCreateParameters, accept, context); } /** @@ -698,11 +692,10 @@ public Mono>> deleteWithResponseAsync(String resourceG if (taskName == null) { return Mono.error(new IllegalArgumentException("Parameter taskName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, taskName, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), taskName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -739,11 +732,10 @@ private Mono>> deleteWithResponseAsync(String resource if (taskName == null) { return Mono.error(new IllegalArgumentException("Parameter taskName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.delete(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, taskName, accept, context); + registryName, this.client.getApiVersion(), taskName, accept, context); } /** @@ -928,11 +920,11 @@ public Mono>> updateWithResponseAsync(String resourceG } else { taskUpdateParameters.validate(); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, taskName, taskUpdateParameters, accept, context)) + .withContext( + context -> service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, + registryName, this.client.getApiVersion(), taskName, taskUpdateParameters, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -977,11 +969,10 @@ private Mono>> updateWithResponseAsync(String resource } else { taskUpdateParameters.validate(); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.update(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, taskName, taskUpdateParameters, accept, context); + registryName, this.client.getApiVersion(), taskName, taskUpdateParameters, accept, context); } /** @@ -1175,11 +1166,10 @@ public Mono> getDetailsWithResponseAsync(String resourceGrou if (taskName == null) { return Mono.error(new IllegalArgumentException("Parameter taskName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; return FluxUtil .withContext(context -> service.getDetails(this.client.getEndpoint(), this.client.getSubscriptionId(), - resourceGroupName, registryName, apiVersion, taskName, accept, context)) + resourceGroupName, registryName, this.client.getApiVersion(), taskName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -1217,11 +1207,10 @@ private Mono> getDetailsWithResponseAsync(String resourceGro if (taskName == null) { return Mono.error(new IllegalArgumentException("Parameter taskName is required and cannot be null.")); } - final String apiVersion = "2019-06-01-preview"; final String accept = "application/json"; context = this.client.mergeContext(context); return service.getDetails(this.client.getEndpoint(), this.client.getSubscriptionId(), resourceGroupName, - registryName, apiVersion, taskName, accept, context); + registryName, this.client.getApiVersion(), taskName, accept, context); } /** diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/TokensClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/TokensClientImpl.java index 663188f8932d..d79c1f67e496 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/TokensClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/TokensClientImpl.java @@ -155,11 +155,10 @@ private Mono> listSinglePageAsync(String resourceGroup if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, accept, context)) + .withContext(context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -195,12 +194,11 @@ private Mono> listSinglePageAsync(String resourceGroup if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); return service - .list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, accept, context) + .list(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -306,11 +304,10 @@ public Mono> getWithResponseAsync(String resourceGroupName, if (tokenName == null) { return Mono.error(new IllegalArgumentException("Parameter tokenName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, tokenName, accept, context)) + .withContext(context -> service.get(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, tokenName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -348,11 +345,10 @@ private Mono> getWithResponseAsync(String resourceGroupName if (tokenName == null) { return Mono.error(new IllegalArgumentException("Parameter tokenName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, tokenName, accept, context); + return service.get(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, tokenName, accept, context); } /** @@ -446,12 +442,11 @@ public Mono>> createWithResponseAsync(String resourceG } else { tokenCreateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.create(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, tokenName, tokenCreateParameters, accept, context)) + .withContext(context -> service.create(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, tokenName, tokenCreateParameters, + accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -496,11 +491,10 @@ private Mono>> createWithResponseAsync(String resource } else { tokenCreateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.create(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, tokenName, tokenCreateParameters, accept, context); + return service.create(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, tokenName, tokenCreateParameters, accept, context); } /** @@ -701,12 +695,11 @@ public Mono>> updateWithResponseAsync(String resourceG } else { tokenUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, tokenName, tokenUpdateParameters, accept, context)) + .withContext(context -> service.update(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, tokenName, tokenUpdateParameters, + accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -751,11 +744,10 @@ private Mono>> updateWithResponseAsync(String resource } else { tokenUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, tokenName, tokenUpdateParameters, accept, context); + return service.update(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, tokenName, tokenUpdateParameters, accept, context); } /** @@ -948,10 +940,9 @@ public Mono>> deleteWithResponseAsync(String resourceG if (tokenName == null) { return Mono.error(new IllegalArgumentException("Parameter tokenName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.delete(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, tokenName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -989,11 +980,10 @@ private Mono>> deleteWithResponseAsync(String resource if (tokenName == null) { return Mono.error(new IllegalArgumentException("Parameter tokenName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, tokenName, accept, context); + return service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, tokenName, accept, context); } /** diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/WebhooksClientImpl.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/WebhooksClientImpl.java index a18198403ca3..1c9f03ed1b48 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/WebhooksClientImpl.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/implementation/WebhooksClientImpl.java @@ -196,11 +196,10 @@ private Mono> listSinglePageAsync(String resourceGro if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, accept, context)) + .withContext(context -> service.list(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -236,12 +235,11 @@ private Mono> listSinglePageAsync(String resourceGro if (registryName == null) { return Mono.error(new IllegalArgumentException("Parameter registryName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); return service - .list(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, accept, context) + .list(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -347,11 +345,10 @@ public Mono> getWithResponseAsync(String resourceGroupNam if (webhookName == null) { return Mono.error(new IllegalArgumentException("Parameter webhookName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, webhookName, accept, context)) + .withContext(context -> service.get(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, webhookName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -389,11 +386,10 @@ private Mono> getWithResponseAsync(String resourceGroupNa if (webhookName == null) { return Mono.error(new IllegalArgumentException("Parameter webhookName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.get(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, webhookName, accept, context); + return service.get(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, webhookName, accept, context); } /** @@ -487,12 +483,11 @@ public Mono>> createWithResponseAsync(String resourceG } else { webhookCreateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.create(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, webhookName, webhookCreateParameters, accept, context)) + .withContext(context -> service.create(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, webhookName, webhookCreateParameters, + accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -537,11 +532,10 @@ private Mono>> createWithResponseAsync(String resource } else { webhookCreateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.create(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, webhookName, webhookCreateParameters, accept, context); + return service.create(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, webhookName, webhookCreateParameters, accept, context); } /** @@ -743,12 +737,11 @@ public Mono>> updateWithResponseAsync(String resourceG } else { webhookUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext( - context -> service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, webhookName, webhookUpdateParameters, accept, context)) + .withContext(context -> service.update(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, webhookName, webhookUpdateParameters, + accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -793,11 +786,10 @@ private Mono>> updateWithResponseAsync(String resource } else { webhookUpdateParameters.validate(); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.update(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, webhookName, webhookUpdateParameters, accept, context); + return service.update(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, webhookName, webhookUpdateParameters, accept, context); } /** @@ -991,10 +983,9 @@ public Mono>> deleteWithResponseAsync(String resourceG if (webhookName == null) { return Mono.error(new IllegalArgumentException("Parameter webhookName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.delete(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, webhookName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -1032,11 +1023,10 @@ private Mono>> deleteWithResponseAsync(String resource if (webhookName == null) { return Mono.error(new IllegalArgumentException("Parameter webhookName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.delete(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, webhookName, accept, context); + return service.delete(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, webhookName, accept, context); } /** @@ -1214,10 +1204,9 @@ public Mono> getCallbackConfigWithResponseAsync(St if (webhookName == null) { return Mono.error(new IllegalArgumentException("Parameter webhookName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.getCallbackConfig(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.getCallbackConfig(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, webhookName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -1256,11 +1245,10 @@ private Mono> getCallbackConfigWithResponseAsync(S if (webhookName == null) { return Mono.error(new IllegalArgumentException("Parameter webhookName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.getCallbackConfig(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, webhookName, accept, context); + return service.getCallbackConfig(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, webhookName, accept, context); } /** @@ -1349,10 +1337,9 @@ private Mono> listEventsSinglePageAsync(String resourc if (webhookName == null) { return Mono.error(new IllegalArgumentException("Parameter webhookName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.listEvents(this.client.getEndpoint(), apiVersion, + .withContext(context -> service.listEvents(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, registryName, webhookName, accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)) @@ -1393,12 +1380,11 @@ private Mono> listEventsSinglePageAsync(String resourc if (webhookName == null) { return Mono.error(new IllegalArgumentException("Parameter webhookName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); return service - .listEvents(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, webhookName, accept, context) + .listEvents(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, webhookName, accept, context) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(), res.getValue().nextLink(), null)); } @@ -1505,11 +1491,10 @@ public Mono> pingWithResponseAsync(String resourceGroup if (webhookName == null) { return Mono.error(new IllegalArgumentException("Parameter webhookName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; return FluxUtil - .withContext(context -> service.ping(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, registryName, webhookName, accept, context)) + .withContext(context -> service.ping(this.client.getEndpoint(), this.client.getApiVersion(), + this.client.getSubscriptionId(), resourceGroupName, registryName, webhookName, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } @@ -1546,11 +1531,10 @@ private Mono> pingWithResponseAsync(String resourceGrou if (webhookName == null) { return Mono.error(new IllegalArgumentException("Parameter webhookName is required and cannot be null.")); } - final String apiVersion = "2025-11-01"; final String accept = "application/json"; context = this.client.mergeContext(context); - return service.ping(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), resourceGroupName, - registryName, webhookName, accept, context); + return service.ping(this.client.getEndpoint(), this.client.getApiVersion(), this.client.getSubscriptionId(), + resourceGroupName, registryName, webhookName, accept, context); } /** diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AgentPoolListResult.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AgentPoolListResult.java index 14bbce22749a..4107648b7cf5 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AgentPoolListResult.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AgentPoolListResult.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AgentPoolUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AgentPoolUpdateParameters.java index cbed20caf2ee..cbe990e89f3d 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AgentPoolUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AgentPoolUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AgentProperties.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AgentProperties.java index 31a4efec656f..8f03d158e8b5 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AgentProperties.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AgentProperties.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Architecture.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Architecture.java index 355b94c90478..8657b341064f 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Architecture.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Architecture.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Argument.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Argument.java index 54f7f0e77ce3..8f3da1c02891 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Argument.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Argument.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AuthInfo.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AuthInfo.java index 839ae00deab9..d6c8981b21c6 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AuthInfo.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AuthInfo.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AuthInfoUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AuthInfoUpdateParameters.java index 6409c4258e69..6d675bb90138 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AuthInfoUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/AuthInfoUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageDependency.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageDependency.java index 0c4f167a6010..4794ad58d6c6 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageDependency.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageDependency.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageDependencyType.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageDependencyType.java index caff5828a7c7..cb3f35ef5bf5 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageDependencyType.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageDependencyType.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageTrigger.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageTrigger.java index 6b1f08d2b26b..b2a74bb6efc0 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageTrigger.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageTrigger.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageTriggerType.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageTriggerType.java index 7835bfd6b417..6a0382ec8375 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageTriggerType.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageTriggerType.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageTriggerUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageTriggerUpdateParameters.java index 143009302885..33502da767ce 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageTriggerUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/BaseImageTriggerUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Credentials.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Credentials.java index 0caa77244764..7acf9d084c58 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Credentials.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Credentials.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/CustomRegistryCredentials.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/CustomRegistryCredentials.java index 1ffc32fa49ff..7f88a9dc49a0 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/CustomRegistryCredentials.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/CustomRegistryCredentials.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/DockerBuildRequest.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/DockerBuildRequest.java index 028c8e5e1070..26ffaea2d80e 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/DockerBuildRequest.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/DockerBuildRequest.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/DockerBuildStepUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/DockerBuildStepUpdateParameters.java index 489d63b375ee..e817bdebdf45 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/DockerBuildStepUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/DockerBuildStepUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/DockerTaskStep.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/DockerTaskStep.java index 82c7597c7d53..42e466797215 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/DockerTaskStep.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/DockerTaskStep.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/EncodedTaskRunRequest.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/EncodedTaskRunRequest.java index b93b182027eb..728bccb2cafc 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/EncodedTaskRunRequest.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/EncodedTaskRunRequest.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/EncodedTaskStep.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/EncodedTaskStep.java index c57f84c4c215..823d88f11226 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/EncodedTaskStep.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/EncodedTaskStep.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/EncodedTaskStepUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/EncodedTaskStepUpdateParameters.java index 1735b36c3bfe..3910a695c096 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/EncodedTaskStepUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/EncodedTaskStepUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/FileTaskRunRequest.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/FileTaskRunRequest.java index c4f674dd6c22..874228fab75e 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/FileTaskRunRequest.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/FileTaskRunRequest.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/FileTaskStep.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/FileTaskStep.java index f76be756e7d5..b302ab026da4 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/FileTaskStep.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/FileTaskStep.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/FileTaskStepUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/FileTaskStepUpdateParameters.java index 126929f33f1c..5d81161720ee 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/FileTaskStepUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/FileTaskStepUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/ImageDescriptor.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/ImageDescriptor.java index 4af508238fa3..a673ae1a7514 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/ImageDescriptor.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/ImageDescriptor.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/ImageUpdateTrigger.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/ImageUpdateTrigger.java index 6952e8baf084..0c7f6662360a 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/ImageUpdateTrigger.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/ImageUpdateTrigger.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/OS.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/OS.java index 117afd982c55..097cefdafecc 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/OS.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/OS.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/OverrideTaskStepProperties.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/OverrideTaskStepProperties.java index 3d5fce015606..0c934cc38018 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/OverrideTaskStepProperties.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/OverrideTaskStepProperties.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/PlatformProperties.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/PlatformProperties.java index 3f0632037ab9..7a6a0e369464 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/PlatformProperties.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/PlatformProperties.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/PlatformUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/PlatformUpdateParameters.java index 436b1e2926dc..99bfe5a926b5 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/PlatformUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/PlatformUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/ProvisioningState.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/ProvisioningState.java index 74f0938cfd6f..40132038f31f 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/ProvisioningState.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/ProvisioningState.java @@ -8,7 +8,7 @@ import java.util.Collection; /** - * The provisioning state of this agent pool. + * The provisioning state of the archive at the time the operation was called. */ public final class ProvisioningState extends ExpandableStringEnum { /** diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunListResult.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunListResult.java index af303c2cf5ae..2f15dc8bb79f 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunListResult.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunListResult.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunRequest.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunRequest.java index d247c4287417..32665aae20d2 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunRequest.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunRequest.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunStatus.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunStatus.java index eb9ba6ebd9dd..0a2fc5f6a8d4 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunStatus.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunStatus.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunType.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunType.java index cbf89cc2e557..2941d9b0be1d 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunType.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunType.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunUpdateParameters.java index 0c26e97f3ef7..b862890d4373 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/RunUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SecretObject.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SecretObject.java index 2f8b600b45fa..70746ee31170 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SecretObject.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SecretObject.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SecretObjectType.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SecretObjectType.java index f9de3d6b2aaf..0e842ca2c662 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SecretObjectType.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SecretObjectType.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SetValue.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SetValue.java index 57ca268c4bd2..a914920c98a2 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SetValue.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SetValue.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceControlType.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceControlType.java index 26cecaceff66..994295b43ae9 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceControlType.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceControlType.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceProperties.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceProperties.java index bcaa43e55180..24409f759c33 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceProperties.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceProperties.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceRegistryCredentials.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceRegistryCredentials.java index 90964849843a..df35808ccd5c 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceRegistryCredentials.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceRegistryCredentials.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceRegistryLoginMode.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceRegistryLoginMode.java index 7d3ca9763175..66c1f73daf33 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceRegistryLoginMode.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceRegistryLoginMode.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTrigger.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTrigger.java index 30270c2eeb84..3c349c434d66 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTrigger.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTrigger.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTriggerDescriptor.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTriggerDescriptor.java index 2389279af88e..c708bc286ee3 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTriggerDescriptor.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTriggerDescriptor.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTriggerEvent.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTriggerEvent.java index e6f646a699a2..dc549410e0f1 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTriggerEvent.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTriggerEvent.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTriggerUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTriggerUpdateParameters.java index 45df39764d69..4742540eb20d 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTriggerUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceTriggerUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceUpdateParameters.java index 50959928987f..d3dea4d3299b 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/SourceUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/StepType.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/StepType.java index 3088931e1924..dec63129e57b 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/StepType.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/StepType.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskListResult.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskListResult.java index 8380dd92e846..146fc8e7f326 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskListResult.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskListResult.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskRunListResult.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskRunListResult.java index 3caadb30ec4b..f90416951f16 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskRunListResult.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskRunListResult.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskRunRequest.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskRunRequest.java index 928c43db429b..c8a19a3d291d 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskRunRequest.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskRunRequest.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskRunUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskRunUpdateParameters.java index 269b12a197c3..558835cbfd79 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskRunUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskRunUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskStatus.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskStatus.java index 8326919b7bf4..91a46f163100 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskStatus.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskStatus.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskStepProperties.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskStepProperties.java index 3799b9be1c3d..ffa87d1b9d11 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskStepProperties.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskStepProperties.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskStepUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskStepUpdateParameters.java index ca371564c789..1cbbb744d514 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskStepUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskStepUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskUpdateParameters.java index 02f5e594f9e8..8a6584deb6d2 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TaskUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TimerTrigger.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TimerTrigger.java index ca43440a93cf..4aa43aea7338 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TimerTrigger.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TimerTrigger.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TimerTriggerDescriptor.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TimerTriggerDescriptor.java index 62355aba68ba..af635bf26061 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TimerTriggerDescriptor.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TimerTriggerDescriptor.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TimerTriggerUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TimerTriggerUpdateParameters.java index 2d2db7dd256a..448639311e5d 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TimerTriggerUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TimerTriggerUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TokenType.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TokenType.java index ddf50c557f4e..9f8345b2a650 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TokenType.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TokenType.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TriggerProperties.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TriggerProperties.java index 387ebd950c56..b0369e3a2a52 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TriggerProperties.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TriggerProperties.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TriggerStatus.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TriggerStatus.java index 9ea52ea90d99..da23d272d08a 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TriggerStatus.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TriggerStatus.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TriggerUpdateParameters.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TriggerUpdateParameters.java index fbc0b88997f0..c906a9e6cf45 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TriggerUpdateParameters.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/TriggerUpdateParameters.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/UpdateTriggerPayloadType.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/UpdateTriggerPayloadType.java index e3d5fed362a5..d902bf0d5a07 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/UpdateTriggerPayloadType.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/UpdateTriggerPayloadType.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Variant.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Variant.java index 5b63690fd1f8..0f2b02295d2f 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Variant.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/java/com/azure/resourcemanager/containerregistry/models/Variant.java @@ -1,6 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. package com.azure.resourcemanager.containerregistry.models; diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-containerregistry/proxy-config.json b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-containerregistry/proxy-config.json index a0b8e920e049..4bcc116332bd 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-containerregistry/proxy-config.json +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-containerregistry/proxy-config.json @@ -1 +1 @@ -[["com.azure.resourcemanager.containerregistry.implementation.AgentPoolsClientImpl$AgentPoolsService"],["com.azure.resourcemanager.containerregistry.implementation.CacheRulesClientImpl$CacheRulesService"],["com.azure.resourcemanager.containerregistry.implementation.ConnectedRegistriesClientImpl$ConnectedRegistriesService"],["com.azure.resourcemanager.containerregistry.implementation.CredentialSetsClientImpl$CredentialSetsService"],["com.azure.resourcemanager.containerregistry.implementation.OperationsClientImpl$OperationsService"],["com.azure.resourcemanager.containerregistry.implementation.PrivateEndpointConnectionsClientImpl$PrivateEndpointConnectionsService"],["com.azure.resourcemanager.containerregistry.implementation.RegistriesClientImpl$RegistriesService"],["com.azure.resourcemanager.containerregistry.implementation.ReplicationsClientImpl$ReplicationsService"],["com.azure.resourcemanager.containerregistry.implementation.RunsClientImpl$RunsService"],["com.azure.resourcemanager.containerregistry.implementation.ScopeMapsClientImpl$ScopeMapsService"],["com.azure.resourcemanager.containerregistry.implementation.TaskRunsClientImpl$TaskRunsService"],["com.azure.resourcemanager.containerregistry.implementation.TasksClientImpl$TasksService"],["com.azure.resourcemanager.containerregistry.implementation.TokensClientImpl$TokensService"],["com.azure.resourcemanager.containerregistry.implementation.WebhooksClientImpl$WebhooksService"]] \ No newline at end of file +[["com.azure.resourcemanager.containerregistry.implementation.CacheRulesClientImpl$CacheRulesService"],["com.azure.resourcemanager.containerregistry.implementation.ConnectedRegistriesClientImpl$ConnectedRegistriesService"],["com.azure.resourcemanager.containerregistry.implementation.CredentialSetsClientImpl$CredentialSetsService"],["com.azure.resourcemanager.containerregistry.implementation.OperationsClientImpl$OperationsService"],["com.azure.resourcemanager.containerregistry.implementation.PrivateEndpointConnectionsClientImpl$PrivateEndpointConnectionsService"],["com.azure.resourcemanager.containerregistry.implementation.RegistriesClientImpl$RegistriesService"],["com.azure.resourcemanager.containerregistry.implementation.ReplicationsClientImpl$ReplicationsService"],["com.azure.resourcemanager.containerregistry.implementation.ScopeMapsClientImpl$ScopeMapsService"],["com.azure.resourcemanager.containerregistry.implementation.TokensClientImpl$TokensService"],["com.azure.resourcemanager.containerregistry.implementation.WebhooksClientImpl$WebhooksService"]] \ No newline at end of file diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/resources/META-INF/native-image/com.azure.resourcemanager/containerregistry_registrytasks/proxy-config.json b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/resources/META-INF/native-image/com.azure.resourcemanager/containerregistry_registrytasks/proxy-config.json new file mode 100644 index 000000000000..b056823a26c0 --- /dev/null +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/resources/META-INF/native-image/com.azure.resourcemanager/containerregistry_registrytasks/proxy-config.json @@ -0,0 +1 @@ +[["com.azure.resourcemanager.containerregistry.implementation.AgentPoolsClientImpl$AgentPoolsService"],["com.azure.resourcemanager.containerregistry.implementation.RegistryTasksClientImpl$RegistryTasksService"],["com.azure.resourcemanager.containerregistry.implementation.RunsClientImpl$RunsService"],["com.azure.resourcemanager.containerregistry.implementation.TaskRunsClientImpl$TaskRunsService"],["com.azure.resourcemanager.containerregistry.implementation.TasksClientImpl$TasksService"]] \ No newline at end of file diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/resources/META-INF/native-image/com.azure.resourcemanager/containerregistry_registrytasks/reflect-config.json b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/resources/META-INF/native-image/com.azure.resourcemanager/containerregistry_registrytasks/reflect-config.json new file mode 100644 index 000000000000..0637a088a01e --- /dev/null +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/main/resources/META-INF/native-image/com.azure.resourcemanager/containerregistry_registrytasks/reflect-config.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/test/java/com/azure/resourcemanager/containerregistry/RegistryTaskTests.java b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/test/java/com/azure/resourcemanager/containerregistry/RegistryTaskTests.java index a948c2abcf85..a24d0d396ee8 100644 --- a/sdk/containerregistry/azure-resourcemanager-containerregistry/src/test/java/com/azure/resourcemanager/containerregistry/RegistryTaskTests.java +++ b/sdk/containerregistry/azure-resourcemanager-containerregistry/src/test/java/com/azure/resourcemanager/containerregistry/RegistryTaskTests.java @@ -1063,7 +1063,7 @@ public void cancelAndDeleteRunsAndTasks() { Assertions.assertTrue(registryManager.registryTaskRuns().listByRegistry(rgName, acrName).stream().count() == 1); // cancelling the run we just created - registryManager.serviceClient().getRuns().cancel(rgName, acrName, registryTaskRun.runId()); + registryManager.taskClient().getRuns().cancel(rgName, acrName, registryTaskRun.runId()); boolean notCanceled = true; while (notCanceled) { diff --git a/sdk/resourcemanager/api-specs.json b/sdk/resourcemanager/api-specs.json index a8cf8499f518..f71a57eafabb 100644 --- a/sdk/resourcemanager/api-specs.json +++ b/sdk/resourcemanager/api-specs.json @@ -60,6 +60,13 @@ "package": "com.azure.resourcemanager.containerregistry", "args": "--tag=package-2025-11 --modelerfour.lenient-model-deduplication=true --enable-sync-stack=false" }, + "containerregistrytasks": { + "dir": "../containerregistry/azure-resourcemanager-containerregistry", + "source": "specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/readme.md", + "package": "com.azure.resourcemanager.containerregistry", + "args": "--tag=package-2019-06-preview --title=ContainerRegistryTasksManagementClient --rename-operation-group:Registries:RegistryTasks --rename-model=DockerBuildStep:DockerTaskStep --modelerfour.lenient-model-deduplication=true --metadata-suffix=registrytasks --enable-sync-stack=false", + "note": "Use commit 09695f5a97dfcf201766ea2f2e7e3b53aec49144 for Swagger before TypeSpec migration" + }, "containerregistry-hybrid": { "dir": "../resourcemanagerhybrid/azure-resourcemanager-containerregistry", "source": "specification/containerregistry/resource-manager/readme.md", diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsCreateSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsCreateSamples.java deleted file mode 100644 index 5bd0598f3928..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsCreateSamples.java +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -import com.azure.resourcemanager.containerregistry.fluent.models.AgentPoolInner; -import com.azure.resourcemanager.containerregistry.models.OS; -import java.util.HashMap; -import java.util.Map; - -/** - * Samples for AgentPools Create. - */ -public final class AgentPoolsCreateSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/AgentPoolsCreate.json - */ - /** - * Sample code: AgentPools_Create. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void agentPoolsCreate(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getAgentPools() - .create("myResourceGroup", "myRegistry", "myAgentPool", - new AgentPoolInner().withLocation("WESTUS") - .withTags(mapOf("key", "fakeTokenPlaceholder")) - .withCount(1) - .withTier("S1") - .withOs(OS.LINUX), - com.azure.core.util.Context.NONE); - } - - // Use "Map.of" if available - @SuppressWarnings("unchecked") - private static Map mapOf(Object... inputs) { - Map map = new HashMap<>(); - for (int i = 0; i < inputs.length; i += 2) { - String key = (String) inputs[i]; - T value = (T) inputs[i + 1]; - map.put(key, value); - } - return map; - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsDeleteSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsDeleteSamples.java deleted file mode 100644 index 4653c799e546..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsDeleteSamples.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for AgentPools Delete. - */ -public final class AgentPoolsDeleteSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/AgentPoolsDelete.json - */ - /** - * Sample code: AgentPools_Delete. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void agentPoolsDelete(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getAgentPools() - .delete("myResourceGroup", "myRegistry", "myAgentPool", com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsGetQueueStatusSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsGetQueueStatusSamples.java deleted file mode 100644 index 3b2da9466dea..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsGetQueueStatusSamples.java +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for AgentPools GetQueueStatus. - */ -public final class AgentPoolsGetQueueStatusSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/AgentPoolsGetQueueStatus.json - */ - /** - * Sample code: AgentPools_GetQueueStatus. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void agentPoolsGetQueueStatus(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getAgentPools() - .getQueueStatusWithResponse("myResourceGroup", "myRegistry", "myAgentPool", - com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsGetSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsGetSamples.java deleted file mode 100644 index db9d74a75d3b..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsGetSamples.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for AgentPools Get. - */ -public final class AgentPoolsGetSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/AgentPoolsGet.json - */ - /** - * Sample code: AgentPools_Get. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void agentPoolsGet(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getAgentPools() - .getWithResponse("myResourceGroup", "myRegistry", "myAgentPool", com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsListSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsListSamples.java deleted file mode 100644 index 38265047f179..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsListSamples.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for AgentPools List. - */ -public final class AgentPoolsListSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/AgentPoolsList.json - */ - /** - * Sample code: AgentPools_List. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void agentPoolsList(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getAgentPools() - .list("myResourceGroup", "myRegistry", com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsUpdateSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsUpdateSamples.java deleted file mode 100644 index 6afcbe47db6c..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/AgentPoolsUpdateSamples.java +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -import com.azure.resourcemanager.containerregistry.models.AgentPoolUpdateParameters; - -/** - * Samples for AgentPools Update. - */ -public final class AgentPoolsUpdateSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/AgentPoolsUpdate.json - */ - /** - * Sample code: AgentPools_Update. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void agentPoolsUpdate(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getAgentPools() - .update("myResourceGroup", "myRegistry", "myAgentPool", new AgentPoolUpdateParameters().withCount(1), - com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RegistriesGetBuildSourceUploadUrlSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RegistriesGetBuildSourceUploadUrlSamples.java deleted file mode 100644 index 7c43347fb415..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RegistriesGetBuildSourceUploadUrlSamples.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for Registries GetBuildSourceUploadUrl. - */ -public final class RegistriesGetBuildSourceUploadUrlSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/RegistriesGetBuildSourceUploadUrl.json - */ - /** - * Sample code: Registries_GetBuildSourceUploadUrl. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void registriesGetBuildSourceUploadUrl(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getRegistries() - .getBuildSourceUploadUrlWithResponse("myResourceGroup", "myRegistry", com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RegistriesScheduleRunSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RegistriesScheduleRunSamples.java deleted file mode 100644 index ada79dc90a6f..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RegistriesScheduleRunSamples.java +++ /dev/null @@ -1,261 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -import com.azure.resourcemanager.containerregistry.models.AgentProperties; -import com.azure.resourcemanager.containerregistry.models.Architecture; -import com.azure.resourcemanager.containerregistry.models.Argument; -import com.azure.resourcemanager.containerregistry.models.Credentials; -import com.azure.resourcemanager.containerregistry.models.CustomRegistryCredentials; -import com.azure.resourcemanager.containerregistry.models.DockerBuildRequest; -import com.azure.resourcemanager.containerregistry.models.EncodedTaskRunRequest; -import com.azure.resourcemanager.containerregistry.models.FileTaskRunRequest; -import com.azure.resourcemanager.containerregistry.models.OS; -import com.azure.resourcemanager.containerregistry.models.OverrideTaskStepProperties; -import com.azure.resourcemanager.containerregistry.models.PlatformProperties; -import com.azure.resourcemanager.containerregistry.models.SecretObject; -import com.azure.resourcemanager.containerregistry.models.SecretObjectType; -import com.azure.resourcemanager.containerregistry.models.SetValue; -import com.azure.resourcemanager.containerregistry.models.SourceRegistryCredentials; -import com.azure.resourcemanager.containerregistry.models.SourceRegistryLoginMode; -import com.azure.resourcemanager.containerregistry.models.TaskRunRequest; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - -/** - * Samples for Registries ScheduleRun. - */ -public final class RegistriesScheduleRunSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/RegistriesScheduleRun_FileTaskRun.json - */ - /** - * Sample code: Registries_ScheduleRun_FileTaskRun. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void registriesScheduleRunFileTaskRun(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getRegistries() - .scheduleRun("myResourceGroup", "myRegistry", new FileTaskRunRequest().withTaskFilePath("acb.yaml") - .withValuesFilePath("prod-values.yaml") - .withValues(Arrays.asList( - new SetValue().withName("mytestargument").withValue("mytestvalue").withIsSecret(false), - new SetValue().withName("mysecrettestargument").withValue("mysecrettestvalue").withIsSecret(true))) - .withPlatform(new PlatformProperties().withOs(OS.LINUX)) - .withAgentConfiguration(new AgentProperties().withCpu(2)) - .withSourceLocation( - "https://myaccount.blob.core.windows.net/sascontainer/source.zip?sv=2015-04-05&st=2015-04-29T22%3A18%3A26Z&se=2015-04-30T02%3A23%3A26Z&sr=b&sp=rw&sip=168.1.5.60-168.1.5.70&spr=https&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D"), - com.azure.core.util.Context.NONE); - } - - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/RegistriesScheduleRun.json - */ - /** - * Sample code: Registries_ScheduleRun. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void registriesScheduleRun(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getRegistries() - .scheduleRun("myResourceGroup", "myRegistry", new DockerBuildRequest().withIsArchiveEnabled(true) - .withImageNames(Arrays.asList("azurerest:testtag")) - .withIsPushEnabled(true) - .withNoCache(true) - .withDockerFilePath("DockerFile") - .withArguments(Arrays.asList( - new Argument().withName("mytestargument").withValue("mytestvalue").withIsSecret(false), - new Argument().withName("mysecrettestargument").withValue("mysecrettestvalue").withIsSecret(true))) - .withPlatform(new PlatformProperties().withOs(OS.LINUX).withArchitecture(Architecture.AMD64)) - .withAgentConfiguration(new AgentProperties().withCpu(2)) - .withSourceLocation( - "https://myaccount.blob.core.windows.net/sascontainer/source.zip?sv=2015-04-05&st=2015-04-29T22%3A18%3A26Z&se=2015-04-30T02%3A23%3A26Z&sr=b&sp=rw&sip=168.1.5.60-168.1.5.70&spr=https&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D"), - com.azure.core.util.Context.NONE); - } - - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/RegistriesScheduleRun_EncodedTaskRun.json - */ - /** - * Sample code: Registries_ScheduleRun_EncodedTaskRun. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void registriesScheduleRunEncodedTaskRun(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getRegistries() - .scheduleRun("myResourceGroup", "myRegistry", new EncodedTaskRunRequest() - .withEncodedTaskContent("fakeTokenPlaceholder") - .withEncodedValuesContent("fakeTokenPlaceholder") - .withValues(Arrays.asList( - new SetValue().withName("mytestargument").withValue("mytestvalue").withIsSecret(false), - new SetValue().withName("mysecrettestargument").withValue("mysecrettestvalue").withIsSecret(true))) - .withPlatform(new PlatformProperties().withOs(OS.LINUX)) - .withAgentConfiguration(new AgentProperties().withCpu(2)), com.azure.core.util.Context.NONE); - } - - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/RegistriesScheduleRun_WithCustomCredentials.json - */ - /** - * Sample code: Registries_ScheduleRun_WithCustomCredentials. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void - registriesScheduleRunWithCustomCredentials(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getRegistries() - .scheduleRun("myResourceGroup", "myRegistry", new DockerBuildRequest().withIsArchiveEnabled(true) - .withImageNames(Arrays.asList("azurerest:testtag")) - .withIsPushEnabled(true) - .withNoCache(true) - .withDockerFilePath("DockerFile") - .withTarget("stage1") - .withArguments(Arrays.asList( - new Argument().withName("mytestargument").withValue("mytestvalue").withIsSecret(false), - new Argument().withName("mysecrettestargument").withValue("mysecrettestvalue").withIsSecret(true))) - .withPlatform(new PlatformProperties().withOs(OS.LINUX).withArchitecture(Architecture.AMD64)) - .withAgentConfiguration(new AgentProperties().withCpu(2)) - .withSourceLocation( - "https://myaccount.blob.core.windows.net/sascontainer/source.zip?sv=2015-04-05&st=2015-04-29T22%3A18%3A26Z&se=2015-04-30T02%3A23%3A26Z&sr=b&sp=rw&sip=168.1.5.60-168.1.5.70&spr=https&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D") - .withCredentials(new Credentials() - .withSourceRegistry(new SourceRegistryCredentials().withLoginMode(SourceRegistryLoginMode.DEFAULT)) - .withCustomRegistries(mapOf("myregistry.azurecr.io", - new CustomRegistryCredentials() - .withUsername(new SecretObject().withValue("reg1").withType(SecretObjectType.OPAQUE)) - .withPassword(new SecretObject().withValue("***").withType(SecretObjectType.OPAQUE)), - "myregistry2.azurecr.io", - new CustomRegistryCredentials() - .withUsername(new SecretObject().withValue("reg2").withType(SecretObjectType.OPAQUE)) - .withPassword(new SecretObject().withValue("***").withType(SecretObjectType.OPAQUE))))), - com.azure.core.util.Context.NONE); - } - - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/RegistriesScheduleRun_WithLogTemplate.json - */ - /** - * Sample code: Registries_ScheduleRun_WithLogTemplate. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void registriesScheduleRunWithLogTemplate(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getRegistries() - .scheduleRun("myResourceGroup", "myRegistry", new DockerBuildRequest().withIsArchiveEnabled(true) - .withLogTemplate("acr/tasks:{{.Run.OS}}") - .withImageNames(Arrays.asList("azurerest:testtag")) - .withIsPushEnabled(true) - .withNoCache(true) - .withDockerFilePath("DockerFile") - .withArguments(Arrays.asList( - new Argument().withName("mytestargument").withValue("mytestvalue").withIsSecret(false), - new Argument().withName("mysecrettestargument").withValue("mysecrettestvalue").withIsSecret(true))) - .withPlatform(new PlatformProperties().withOs(OS.LINUX).withArchitecture(Architecture.AMD64)) - .withAgentConfiguration(new AgentProperties().withCpu(2)) - .withSourceLocation( - "https://myaccount.blob.core.windows.net/sascontainer/source.zip?sv=2015-04-05&st=2015-04-29T22%3A18%3A26Z&se=2015-04-30T02%3A23%3A26Z&sr=b&sp=rw&sip=168.1.5.60-168.1.5.70&spr=https&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D"), - com.azure.core.util.Context.NONE); - } - - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/RegistriesScheduleRun_Task.json - */ - /** - * Sample code: Registries_ScheduleRun_Task. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void registriesScheduleRunTask(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getRegistries() - .scheduleRun("myResourceGroup", "myRegistry", - new TaskRunRequest().withTaskId("myTask") - .withOverrideTaskStepProperties(new OverrideTaskStepProperties().withFile("overriddenDockerfile") - .withArguments(Arrays.asList( - new Argument().withName("mytestargument").withValue("mytestvalue").withIsSecret(false), - new Argument().withName("mysecrettestargument") - .withValue("mysecrettestvalue") - .withIsSecret(true))) - .withTarget("build") - .withValues(Arrays.asList( - new SetValue().withName("mytestname").withValue("mytestvalue").withIsSecret(false), - new SetValue().withName("mysecrettestname") - .withValue("mysecrettestvalue") - .withIsSecret(true))) - .withUpdateTriggerToken("fakeTokenPlaceholder")), - com.azure.core.util.Context.NONE); - } - - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/RegistriesScheduleRun_FileTask_WithCustomCredentials.json - */ - /** - * Sample code: Registries_ScheduleRun_Task_WithCustomCredentials. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void - registriesScheduleRunTaskWithCustomCredentials(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getRegistries() - .scheduleRun("myResourceGroup", "myRegistry", new FileTaskRunRequest().withTaskFilePath("acb.yaml") - .withValues(Arrays.asList( - new SetValue().withName("mytestargument").withValue("mytestvalue").withIsSecret(false), - new SetValue().withName("mysecrettestargument").withValue("mysecrettestvalue").withIsSecret(true))) - .withPlatform(new PlatformProperties().withOs(OS.LINUX)) - .withCredentials(new Credentials() - .withSourceRegistry(new SourceRegistryCredentials().withLoginMode(SourceRegistryLoginMode.DEFAULT)) - .withCustomRegistries(mapOf("myregistry.azurecr.io", - new CustomRegistryCredentials() - .withUsername(new SecretObject().withValue("reg1").withType(SecretObjectType.OPAQUE)) - .withPassword(new SecretObject().withValue("***").withType(SecretObjectType.OPAQUE))))), - com.azure.core.util.Context.NONE); - } - - // Use "Map.of" if available - @SuppressWarnings("unchecked") - private static Map mapOf(Object... inputs) { - Map map = new HashMap<>(); - for (int i = 0; i < inputs.length; i += 2) { - String key = (String) inputs[i]; - T value = (T) inputs[i + 1]; - map.put(key, value); - } - return map; - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsCancelSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsCancelSamples.java deleted file mode 100644 index f5df32e3d256..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsCancelSamples.java +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for Runs Cancel. - */ -public final class RunsCancelSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/RunsCancel.json - */ - /** - * Sample code: Runs_Cancel. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void runsCancel(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getRuns() - .cancel("myResourceGroup", "myRegistry", "0accec26-d6de-4757-8e74-d080f38eaaab", - com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsGetLogSasUrlSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsGetLogSasUrlSamples.java deleted file mode 100644 index 89bcc1f99d94..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsGetLogSasUrlSamples.java +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for Runs GetLogSasUrl. - */ -public final class RunsGetLogSasUrlSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/RunsGetLogSasUrl.json - */ - /** - * Sample code: Runs_GetLogSasUrl. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void runsGetLogSasUrl(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getRuns() - .getLogSasUrlWithResponse("myResourceGroup", "myRegistry", "0accec26-d6de-4757-8e74-d080f38eaaab", - com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsGetSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsGetSamples.java deleted file mode 100644 index 744111be1063..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsGetSamples.java +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for Runs Get. - */ -public final class RunsGetSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/RunsGet.json - */ - /** - * Sample code: Runs_Get. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void runsGet(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getRuns() - .getWithResponse("myResourceGroup", "myRegistry", "0accec26-d6de-4757-8e74-d080f38eaaab", - com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsListSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsListSamples.java deleted file mode 100644 index 072b46aeffe2..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsListSamples.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for Runs List. - */ -public final class RunsListSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/RunsList.json - */ - /** - * Sample code: Runs_List. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void runsList(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getRuns() - .list("myResourceGroup", "myRegistry", "", 10, com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsUpdateSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsUpdateSamples.java deleted file mode 100644 index 45d02386ffde..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/RunsUpdateSamples.java +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -import com.azure.resourcemanager.containerregistry.models.RunUpdateParameters; - -/** - * Samples for Runs Update. - */ -public final class RunsUpdateSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/RunsUpdate.json - */ - /** - * Sample code: Runs_Update. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void runsUpdate(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getRuns() - .update("myResourceGroup", "myRegistry", "0accec26-d6de-4757-8e74-d080f38eaaab", - new RunUpdateParameters().withIsArchiveEnabled(true), com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsCreateSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsCreateSamples.java deleted file mode 100644 index 9cd0df37051e..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsCreateSamples.java +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -import com.azure.resourcemanager.containerregistry.fluent.models.TaskRunInner; -import com.azure.resourcemanager.containerregistry.models.Architecture; -import com.azure.resourcemanager.containerregistry.models.Credentials; -import com.azure.resourcemanager.containerregistry.models.EncodedTaskRunRequest; -import com.azure.resourcemanager.containerregistry.models.OS; -import com.azure.resourcemanager.containerregistry.models.PlatformProperties; -import java.util.Arrays; - -/** - * Samples for TaskRuns Create. - */ -public final class TaskRunsCreateSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TaskRunsCreate.json - */ - /** - * Sample code: TaskRuns_Create. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void taskRunsCreate(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTaskRuns() - .create("myResourceGroup", "myRegistry", "myRun", - new TaskRunInner() - .withRunRequest(new EncodedTaskRunRequest().withEncodedTaskContent("fakeTokenPlaceholder") - .withEncodedValuesContent("fakeTokenPlaceholder") - .withValues(Arrays.asList()) - .withPlatform(new PlatformProperties().withOs(OS.LINUX).withArchitecture(Architecture.AMD64)) - .withCredentials(new Credentials())) - .withForceUpdateTag("test"), - com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsDeleteSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsDeleteSamples.java deleted file mode 100644 index 0b86aa39d1c6..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsDeleteSamples.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for TaskRuns Delete. - */ -public final class TaskRunsDeleteSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TaskRunsDelete.json - */ - /** - * Sample code: TaskRuns_Delete. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void taskRunsDelete(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTaskRuns() - .delete("myResourceGroup", "myRegistry", "myRun", com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsGetDetailsSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsGetDetailsSamples.java deleted file mode 100644 index 3e119ef243a2..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsGetDetailsSamples.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for TaskRuns GetDetails. - */ -public final class TaskRunsGetDetailsSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TaskRunsGetDetails.json - */ - /** - * Sample code: TaskRuns_GetDetails. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void taskRunsGetDetails(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTaskRuns() - .getDetailsWithResponse("myResourceGroup", "myRegistry", "myRun", com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsGetSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsGetSamples.java deleted file mode 100644 index 8ad7cb58bad4..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsGetSamples.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for TaskRuns Get. - */ -public final class TaskRunsGetSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TaskRunsGet.json - */ - /** - * Sample code: TaskRuns_Get. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void taskRunsGet(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTaskRuns() - .getWithResponse("myResourceGroup", "myRegistry", "myRun", com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsListSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsListSamples.java deleted file mode 100644 index 0435b14aa691..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsListSamples.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for TaskRuns List. - */ -public final class TaskRunsListSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TaskRunsList.json - */ - /** - * Sample code: TaskRuns_List. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void taskRunsList(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTaskRuns() - .list("myResourceGroup", "myRegistry", com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsUpdateSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsUpdateSamples.java deleted file mode 100644 index f03f581124b5..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TaskRunsUpdateSamples.java +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -import com.azure.resourcemanager.containerregistry.models.Architecture; -import com.azure.resourcemanager.containerregistry.models.Credentials; -import com.azure.resourcemanager.containerregistry.models.EncodedTaskRunRequest; -import com.azure.resourcemanager.containerregistry.models.OS; -import com.azure.resourcemanager.containerregistry.models.PlatformProperties; -import com.azure.resourcemanager.containerregistry.models.TaskRunUpdateParameters; -import java.util.Arrays; - -/** - * Samples for TaskRuns Update. - */ -public final class TaskRunsUpdateSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TaskRunsUpdate.json - */ - /** - * Sample code: TaskRuns_Update. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void taskRunsUpdate(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTaskRuns() - .update("myResourceGroup", "myRegistry", "myRun", - new TaskRunUpdateParameters().withRunRequest(new EncodedTaskRunRequest().withIsArchiveEnabled(true) - .withEncodedTaskContent("fakeTokenPlaceholder") - .withEncodedValuesContent("fakeTokenPlaceholder") - .withValues(Arrays.asList()) - .withPlatform(new PlatformProperties().withOs(OS.LINUX).withArchitecture(Architecture.AMD64)) - .withCredentials(new Credentials())).withForceUpdateTag("test"), - com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksCreateSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksCreateSamples.java deleted file mode 100644 index 19f4ea81643b..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksCreateSamples.java +++ /dev/null @@ -1,294 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -import com.azure.resourcemanager.containerregistry.fluent.models.TaskInner; -import com.azure.resourcemanager.containerregistry.models.AgentProperties; -import com.azure.resourcemanager.containerregistry.models.Architecture; -import com.azure.resourcemanager.containerregistry.models.Argument; -import com.azure.resourcemanager.containerregistry.models.AuthInfo; -import com.azure.resourcemanager.containerregistry.models.BaseImageTrigger; -import com.azure.resourcemanager.containerregistry.models.BaseImageTriggerType; -import com.azure.resourcemanager.containerregistry.models.DockerTaskStep; -import com.azure.resourcemanager.containerregistry.models.IdentityProperties; -import com.azure.resourcemanager.containerregistry.models.OS; -import com.azure.resourcemanager.containerregistry.models.PlatformProperties; -import com.azure.resourcemanager.containerregistry.models.ResourceIdentityType; -import com.azure.resourcemanager.containerregistry.models.SourceControlType; -import com.azure.resourcemanager.containerregistry.models.SourceProperties; -import com.azure.resourcemanager.containerregistry.models.SourceTrigger; -import com.azure.resourcemanager.containerregistry.models.SourceTriggerEvent; -import com.azure.resourcemanager.containerregistry.models.TaskStatus; -import com.azure.resourcemanager.containerregistry.models.TimerTrigger; -import com.azure.resourcemanager.containerregistry.models.TokenType; -import com.azure.resourcemanager.containerregistry.models.TriggerProperties; -import com.azure.resourcemanager.containerregistry.models.UpdateTriggerPayloadType; -import com.azure.resourcemanager.containerregistry.models.UserIdentityProperties; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - -/** - * Samples for Tasks Create. - */ -public final class TasksCreateSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/ManagedIdentity/TasksCreate_WithSystemIdentity.json - */ - /** - * Sample code: Tasks_Create_WithUserIdentities_WithSystemIdentity. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void - tasksCreateWithUserIdentitiesWithSystemIdentity(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTasks() - .create("myResourceGroup", "myRegistry", "mytTask", - new TaskInner().withLocation("eastus") - .withTags(mapOf("testkey", "fakeTokenPlaceholder")) - .withIdentity(new IdentityProperties().withType(ResourceIdentityType.SYSTEM_ASSIGNED)) - .withStatus(TaskStatus.ENABLED) - .withPlatform(new PlatformProperties().withOs(OS.LINUX).withArchitecture(Architecture.AMD64)) - .withAgentConfiguration(new AgentProperties().withCpu(2)) - .withStep(new DockerTaskStep().withContextPath("src") - .withImageNames(Arrays.asList("azurerest:testtag")) - .withIsPushEnabled(true) - .withNoCache(false) - .withDockerFilePath("src/DockerFile") - .withArguments(Arrays.asList( - new Argument().withName("mytestargument").withValue("mytestvalue").withIsSecret(false), - new Argument().withName("mysecrettestargument") - .withValue("mysecrettestvalue") - .withIsSecret(true)))) - .withTrigger( - new TriggerProperties() - .withTimerTriggers(Arrays - .asList(new TimerTrigger().withSchedule("30 9 * * 1-5").withName("myTimerTrigger"))) - .withSourceTriggers(Arrays.asList(new SourceTrigger() - .withSourceRepository( - new SourceProperties().withSourceControlType(SourceControlType.GITHUB) - .withRepositoryUrl("https://github.com/Azure/azure-rest-api-specs") - .withBranch("master") - .withSourceControlAuthProperties(new AuthInfo().withTokenType(TokenType.PAT) - .withToken("fakeTokenPlaceholder"))) - .withSourceTriggerEvents(Arrays.asList(SourceTriggerEvent.COMMIT)) - .withName("mySourceTrigger"))) - .withBaseImageTrigger( - new BaseImageTrigger().withBaseImageTriggerType(BaseImageTriggerType.RUNTIME) - .withName("myBaseImageTrigger"))) - .withIsSystemTask(false), - com.azure.core.util.Context.NONE); - } - - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TasksCreate.json - */ - /** - * Sample code: Tasks_Create. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void tasksCreate(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTasks() - .create("myResourceGroup", "myRegistry", "mytTask", - new TaskInner().withLocation("eastus") - .withTags(mapOf("testkey", "fakeTokenPlaceholder")) - .withIdentity(new IdentityProperties().withType(ResourceIdentityType.SYSTEM_ASSIGNED)) - .withStatus(TaskStatus.ENABLED) - .withPlatform(new PlatformProperties().withOs(OS.LINUX).withArchitecture(Architecture.AMD64)) - .withAgentConfiguration(new AgentProperties().withCpu(2)) - .withStep(new DockerTaskStep().withContextPath("src") - .withImageNames(Arrays.asList("azurerest:testtag")) - .withIsPushEnabled(true) - .withNoCache(false) - .withDockerFilePath("src/DockerFile") - .withArguments(Arrays.asList( - new Argument().withName("mytestargument").withValue("mytestvalue").withIsSecret(false), - new Argument().withName("mysecrettestargument") - .withValue("mysecrettestvalue") - .withIsSecret(true)))) - .withTrigger( - new TriggerProperties() - .withTimerTriggers(Arrays - .asList(new TimerTrigger().withSchedule("30 9 * * 1-5").withName("myTimerTrigger"))) - .withSourceTriggers(Arrays.asList(new SourceTrigger() - .withSourceRepository( - new SourceProperties().withSourceControlType(SourceControlType.GITHUB) - .withRepositoryUrl("https://github.com/Azure/azure-rest-api-specs") - .withBranch("master") - .withSourceControlAuthProperties(new AuthInfo().withTokenType(TokenType.PAT) - .withToken("fakeTokenPlaceholder"))) - .withSourceTriggerEvents(Arrays.asList(SourceTriggerEvent.COMMIT)) - .withName("mySourceTrigger"))) - .withBaseImageTrigger( - new BaseImageTrigger().withBaseImageTriggerType(BaseImageTriggerType.RUNTIME) - .withUpdateTriggerEndpoint("https://user:pass@mycicd.webhook.com?token=foo") - .withUpdateTriggerPayloadType(UpdateTriggerPayloadType.TOKEN) - .withName("myBaseImageTrigger"))) - .withLogTemplate("acr/tasks:{{.Run.OS}}") - .withIsSystemTask(false), - com.azure.core.util.Context.NONE); - } - - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/ManagedIdentity/TasksCreate_WithSystemAndUserIdentities.json - */ - /** - * Sample code: Tasks_Create_WithSystemAndUserIdentities. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void tasksCreateWithSystemAndUserIdentities(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTasks() - .create("myResourceGroup", "myRegistry", "mytTask", new TaskInner().withLocation("eastus") - .withTags(mapOf("testkey", "fakeTokenPlaceholder")) - .withIdentity(new IdentityProperties().withType(ResourceIdentityType.SYSTEM_ASSIGNED_USER_ASSIGNED) - .withUserAssignedIdentities(mapOf( - "/subscriptions/f9d7ebed-adbd-4cb4-b973-aaf82c136138/resourcegroups/myResourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity2", - new UserIdentityProperties()))) - .withStatus(TaskStatus.ENABLED) - .withPlatform(new PlatformProperties().withOs(OS.LINUX).withArchitecture(Architecture.AMD64)) - .withAgentConfiguration(new AgentProperties().withCpu(2)) - .withStep(new DockerTaskStep().withContextPath("src") - .withImageNames(Arrays.asList("azurerest:testtag")) - .withIsPushEnabled(true) - .withNoCache(false) - .withDockerFilePath("src/DockerFile") - .withArguments(Arrays.asList( - new Argument().withName("mytestargument").withValue("mytestvalue").withIsSecret(false), - new Argument().withName("mysecrettestargument") - .withValue("mysecrettestvalue") - .withIsSecret(true)))) - .withTrigger( - new TriggerProperties() - .withTimerTriggers( - Arrays.asList(new TimerTrigger().withSchedule("30 9 * * 1-5").withName("myTimerTrigger"))) - .withSourceTriggers( - Arrays.asList(new SourceTrigger() - .withSourceRepository( - new SourceProperties().withSourceControlType(SourceControlType.GITHUB) - .withRepositoryUrl("https://github.com/Azure/azure-rest-api-specs") - .withBranch("master") - .withSourceControlAuthProperties(new AuthInfo().withTokenType(TokenType.PAT) - .withToken("fakeTokenPlaceholder"))) - .withSourceTriggerEvents(Arrays.asList(SourceTriggerEvent.COMMIT)) - .withName("mySourceTrigger"))) - .withBaseImageTrigger( - new BaseImageTrigger().withBaseImageTriggerType(BaseImageTriggerType.RUNTIME) - .withUpdateTriggerEndpoint("https://user:pass@mycicd.webhook.com?token=foo") - .withUpdateTriggerPayloadType(UpdateTriggerPayloadType.DEFAULT) - .withName("myBaseImageTrigger"))) - .withIsSystemTask(false), com.azure.core.util.Context.NONE); - } - - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/ManagedIdentity/TasksCreate_WithUserIdentities.json - */ - /** - * Sample code: Tasks_Create_WithUserIdentities. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void tasksCreateWithUserIdentities(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTasks() - .create("myResourceGroup", "myRegistry", "mytTask", new TaskInner().withLocation("eastus") - .withTags(mapOf("testkey", "fakeTokenPlaceholder")) - .withIdentity(new IdentityProperties().withType(ResourceIdentityType.USER_ASSIGNED) - .withUserAssignedIdentities(mapOf( - "/subscriptions/f9d7ebed-adbd-4cb4-b973-aaf82c136138/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity1", - new UserIdentityProperties(), - "/subscriptions/f9d7ebed-adbd-4cb4-b973-aaf82c136138/resourcegroups/myResourceGroup1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity2", - new UserIdentityProperties()))) - .withStatus(TaskStatus.ENABLED) - .withPlatform(new PlatformProperties().withOs(OS.LINUX).withArchitecture(Architecture.AMD64)) - .withAgentConfiguration(new AgentProperties().withCpu(2)) - .withStep(new DockerTaskStep().withContextPath("src") - .withImageNames(Arrays.asList("azurerest:testtag")) - .withIsPushEnabled(true) - .withNoCache(false) - .withDockerFilePath("src/DockerFile") - .withArguments(Arrays.asList( - new Argument().withName("mytestargument").withValue("mytestvalue").withIsSecret(false), - new Argument().withName("mysecrettestargument") - .withValue("mysecrettestvalue") - .withIsSecret(true)))) - .withTrigger( - new TriggerProperties() - .withTimerTriggers( - Arrays.asList(new TimerTrigger().withSchedule("30 9 * * 1-5").withName("myTimerTrigger"))) - .withSourceTriggers( - Arrays.asList(new SourceTrigger() - .withSourceRepository( - new SourceProperties().withSourceControlType(SourceControlType.GITHUB) - .withRepositoryUrl("https://github.com/Azure/azure-rest-api-specs") - .withBranch("master") - .withSourceControlAuthProperties(new AuthInfo().withTokenType(TokenType.PAT) - .withToken("fakeTokenPlaceholder"))) - .withSourceTriggerEvents(Arrays.asList(SourceTriggerEvent.COMMIT)) - .withName("mySourceTrigger"))) - .withBaseImageTrigger( - new BaseImageTrigger().withBaseImageTriggerType(BaseImageTriggerType.RUNTIME) - .withUpdateTriggerEndpoint("https://user:pass@mycicd.webhook.com?token=foo") - .withUpdateTriggerPayloadType(UpdateTriggerPayloadType.DEFAULT) - .withName("myBaseImageTrigger"))) - .withIsSystemTask(false), com.azure.core.util.Context.NONE); - } - - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TasksCreate_QuickTask.json - */ - /** - * Sample code: Tasks_Create_QuickTask. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void tasksCreateQuickTask(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTasks() - .create("myResourceGroup", "myRegistry", "quicktask", - new TaskInner().withLocation("eastus") - .withTags(mapOf("testkey", "fakeTokenPlaceholder")) - .withStatus(TaskStatus.ENABLED) - .withLogTemplate("acr/tasks:{{.Run.OS}}") - .withIsSystemTask(true), - com.azure.core.util.Context.NONE); - } - - // Use "Map.of" if available - @SuppressWarnings("unchecked") - private static Map mapOf(Object... inputs) { - Map map = new HashMap<>(); - for (int i = 0; i < inputs.length; i += 2) { - String key = (String) inputs[i]; - T value = (T) inputs[i + 1]; - map.put(key, value); - } - return map; - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksDeleteSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksDeleteSamples.java deleted file mode 100644 index d3cc36c484f9..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksDeleteSamples.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for Tasks Delete. - */ -public final class TasksDeleteSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TasksDelete.json - */ - /** - * Sample code: Tasks_Delete. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void tasksDelete(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTasks() - .delete("myResourceGroup", "myRegistry", "myTask", com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksGetDetailsSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksGetDetailsSamples.java deleted file mode 100644 index 9ca46b952813..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksGetDetailsSamples.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for Tasks GetDetails. - */ -public final class TasksGetDetailsSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TasksGetDetails.json - */ - /** - * Sample code: Tasks_GetDetails. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void tasksGetDetails(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTasks() - .getDetailsWithResponse("myResourceGroup", "myRegistry", "myTask", com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksGetSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksGetSamples.java deleted file mode 100644 index f89c59da7498..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksGetSamples.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for Tasks Get. - */ -public final class TasksGetSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TasksGet.json - */ - /** - * Sample code: Tasks_Get. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void tasksGet(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTasks() - .getWithResponse("myResourceGroup", "myRegistry", "myTask", com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksListSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksListSamples.java deleted file mode 100644 index 3245408aec8a..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksListSamples.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -/** - * Samples for Tasks List. - */ -public final class TasksListSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TasksList.json - */ - /** - * Sample code: Tasks_List. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void tasksList(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTasks() - .list("myResourceGroup", "myRegistry", com.azure.core.util.Context.NONE); - } -} diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksUpdateSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksUpdateSamples.java deleted file mode 100644 index 7fff27d5b31c..000000000000 --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/TasksUpdateSamples.java +++ /dev/null @@ -1,208 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) AutoRest Code Generator. - -package com.azure.resourcemanager.containerregistry.generated; - -import com.azure.resourcemanager.containerregistry.models.AgentProperties; -import com.azure.resourcemanager.containerregistry.models.AuthInfoUpdateParameters; -import com.azure.resourcemanager.containerregistry.models.Credentials; -import com.azure.resourcemanager.containerregistry.models.CustomRegistryCredentials; -import com.azure.resourcemanager.containerregistry.models.DockerBuildStepUpdateParameters; -import com.azure.resourcemanager.containerregistry.models.SecretObject; -import com.azure.resourcemanager.containerregistry.models.SecretObjectType; -import com.azure.resourcemanager.containerregistry.models.SourceTriggerEvent; -import com.azure.resourcemanager.containerregistry.models.SourceTriggerUpdateParameters; -import com.azure.resourcemanager.containerregistry.models.SourceUpdateParameters; -import com.azure.resourcemanager.containerregistry.models.TaskStatus; -import com.azure.resourcemanager.containerregistry.models.TaskUpdateParameters; -import com.azure.resourcemanager.containerregistry.models.TokenType; -import com.azure.resourcemanager.containerregistry.models.TriggerUpdateParameters; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - -/** - * Samples for Tasks Update. - */ -public final class TasksUpdateSamples { - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TasksUpdate_QuickTask.json - */ - /** - * Sample code: Tasks_Update_QuickTask. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void tasksUpdateQuickTask(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTasks() - .update("myResourceGroup", "myRegistry", "quicktask", - new TaskUpdateParameters().withTags(mapOf("testkey", "fakeTokenPlaceholder")) - .withStatus(TaskStatus.ENABLED) - .withLogTemplate("acr/tasks:{{.Run.OS}}"), - com.azure.core.util.Context.NONE); - } - - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/ManagedIdentity/TasksUpdate_WithMSICustomCredentials.json - */ - /** - * Sample code: Tasks_Update_WithMSICustomCredentials. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void tasksUpdateWithMSICustomCredentials(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTasks() - .update("myResourceGroup", "myRegistry", "myTask", new TaskUpdateParameters() - .withTags(mapOf("testkey", "fakeTokenPlaceholder")) - .withStatus(TaskStatus.ENABLED) - .withAgentConfiguration(new AgentProperties().withCpu(3)) - .withStep(new DockerBuildStepUpdateParameters().withImageNames(Arrays.asList("azurerest:testtag1")) - .withDockerFilePath("src/DockerFile")) - .withTrigger( - new TriggerUpdateParameters().withSourceTriggers(Arrays.asList(new SourceTriggerUpdateParameters() - .withSourceRepository(new SourceUpdateParameters() - .withSourceControlAuthProperties(new AuthInfoUpdateParameters().withTokenType(TokenType.PAT) - .withToken("fakeTokenPlaceholder"))) - .withSourceTriggerEvents(Arrays.asList(SourceTriggerEvent.COMMIT)) - .withName("mySourceTrigger")))) - .withCredentials(new Credentials().withCustomRegistries( - mapOf("myregistry.azurecr.io", new CustomRegistryCredentials().withIdentity("[system]")))), - com.azure.core.util.Context.NONE); - } - - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/ManagedIdentity/TasksUpdate_WithKeyVaultCustomCredentials.json - */ - /** - * Sample code: Tasks_Update_WithKeyVaultCustomCredentials. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void tasksUpdateWithKeyVaultCustomCredentials(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTasks() - .update("myResourceGroup", "myRegistry", "myTask", new TaskUpdateParameters() - .withTags(mapOf("testkey", "fakeTokenPlaceholder")) - .withStatus(TaskStatus.ENABLED) - .withAgentConfiguration(new AgentProperties().withCpu(3)) - .withStep(new DockerBuildStepUpdateParameters().withImageNames(Arrays.asList("azurerest:testtag1")) - .withDockerFilePath("src/DockerFile")) - .withTrigger( - new TriggerUpdateParameters().withSourceTriggers(Arrays.asList(new SourceTriggerUpdateParameters() - .withSourceRepository(new SourceUpdateParameters() - .withSourceControlAuthProperties(new AuthInfoUpdateParameters().withTokenType(TokenType.PAT) - .withToken("fakeTokenPlaceholder"))) - .withSourceTriggerEvents(Arrays.asList(SourceTriggerEvent.COMMIT)) - .withName("mySourceTrigger")))) - .withCredentials(new Credentials().withCustomRegistries(mapOf("myregistry.azurecr.io", - new CustomRegistryCredentials() - .withUsername( - new SecretObject().withValue("https://myacbvault.vault.azure.net/secrets/username") - .withType(SecretObjectType.VAULTSECRET)) - .withPassword( - new SecretObject().withValue("https://myacbvault.vault.azure.net/secrets/password") - .withType(SecretObjectType.VAULTSECRET)) - .withIdentity("[system]")))), - com.azure.core.util.Context.NONE); - } - - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TasksUpdate.json - */ - /** - * Sample code: Tasks_Update. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void tasksUpdate(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTasks() - .update("myResourceGroup", "myRegistry", "myTask", new TaskUpdateParameters() - .withTags(mapOf("testkey", "fakeTokenPlaceholder")) - .withStatus(TaskStatus.ENABLED) - .withAgentConfiguration(new AgentProperties().withCpu(3)) - .withStep(new DockerBuildStepUpdateParameters().withImageNames(Arrays.asList("azurerest:testtag1")) - .withDockerFilePath("src/DockerFile")) - .withTrigger( - new TriggerUpdateParameters().withSourceTriggers(Arrays.asList(new SourceTriggerUpdateParameters() - .withSourceRepository(new SourceUpdateParameters() - .withSourceControlAuthProperties(new AuthInfoUpdateParameters().withTokenType(TokenType.PAT) - .withToken("fakeTokenPlaceholder"))) - .withSourceTriggerEvents(Arrays.asList(SourceTriggerEvent.COMMIT)) - .withName("mySourceTrigger")))) - .withCredentials(new Credentials().withCustomRegistries(mapOf("myregistry.azurecr.io", - new CustomRegistryCredentials() - .withUsername(new SecretObject().withValue("username").withType(SecretObjectType.OPAQUE)) - .withPassword( - new SecretObject().withValue("https://myacbvault.vault.azure.net/secrets/password") - .withType(SecretObjectType.VAULTSECRET)) - .withIdentity("[system]")))) - .withLogTemplate("acr/tasks:{{.Run.OS}}"), com.azure.core.util.Context.NONE); - } - - /* - * x-ms-original-file: - * specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/RegistryTasks/preview/2019-06-01- - * preview/examples/TasksUpdate_WithOpaqueCustomCredentials.json - */ - /** - * Sample code: Tasks_Update_WithOpaqueCustomCredentials. - * - * @param azure The entry point for accessing resource management APIs in Azure. - */ - public static void tasksUpdateWithOpaqueCustomCredentials(com.azure.resourcemanager.AzureResourceManager azure) { - azure.containerRegistries() - .manager() - .serviceClient() - .getTasks() - .update("myResourceGroup", "myRegistry", "myTask", new TaskUpdateParameters() - .withTags(mapOf("testkey", "fakeTokenPlaceholder")) - .withStatus(TaskStatus.ENABLED) - .withAgentConfiguration(new AgentProperties().withCpu(3)) - .withStep(new DockerBuildStepUpdateParameters().withImageNames(Arrays.asList("azurerest:testtag1")) - .withDockerFilePath("src/DockerFile")) - .withTrigger( - new TriggerUpdateParameters().withSourceTriggers(Arrays.asList(new SourceTriggerUpdateParameters() - .withSourceRepository(new SourceUpdateParameters() - .withSourceControlAuthProperties(new AuthInfoUpdateParameters().withTokenType(TokenType.PAT) - .withToken("fakeTokenPlaceholder"))) - .withSourceTriggerEvents(Arrays.asList(SourceTriggerEvent.COMMIT)) - .withName("mySourceTrigger")))) - .withCredentials(new Credentials().withCustomRegistries(mapOf("myregistry.azurecr.io", - new CustomRegistryCredentials() - .withUsername(new SecretObject().withValue("username").withType(SecretObjectType.OPAQUE)) - .withPassword(new SecretObject().withValue("***").withType(SecretObjectType.OPAQUE))))), - com.azure.core.util.Context.NONE); - } - - // Use "Map.of" if available - @SuppressWarnings("unchecked") - private static Map mapOf(Object... inputs) { - Map map = new HashMap<>(); - for (int i = 0; i < inputs.length; i += 2) { - String key = (String) inputs[i]; - T value = (T) inputs[i + 1]; - map.put(key, value); - } - return map; - } -} From 1d29262b484228a96dad376295958997f7c1db95 Mon Sep 17 00:00:00 2001 From: Jose Alvarez Date: Thu, 8 Jan 2026 14:38:09 +0100 Subject: [PATCH 32/41] Remove manual URL mapper for `azure-ai-agents` and bumped openai-java library version (#47642) * Bumped Stainless library version * Removed URL mapper util * wrapping the actual exception, not just the cause --- eng/versioning/external_dependencies.txt | 2 +- sdk/ai/azure-ai-agents/CHANGELOG.md | 3 + sdk/ai/azure-ai-agents/pom.xml | 4 +- .../implementation/http/HttpClientHelper.java | 27 ++-- .../http/OpenAiRequestUrlBuilder.java | 138 ------------------ .../http/HttpClientHelperTests.java | 36 ----- sdk/ai/azure-ai-projects/CHANGELOG.md | 2 + sdk/ai/azure-ai-projects/pom.xml | 4 +- sdk/openai/azure-ai-openai-stainless/pom.xml | 4 +- 9 files changed, 29 insertions(+), 191 deletions(-) delete mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/http/OpenAiRequestUrlBuilder.java diff --git a/eng/versioning/external_dependencies.txt b/eng/versioning/external_dependencies.txt index c880cf4bb7d2..ed7e29e00dae 100644 --- a/eng/versioning/external_dependencies.txt +++ b/eng/versioning/external_dependencies.txt @@ -36,7 +36,7 @@ com.microsoft.sqlserver:mssql-jdbc;10.2.3.jre8 com.microsoft.azure:azure-functions-maven-plugin;1.30.0 com.microsoft.azure.functions:azure-functions-java-library;2.2.0 com.mysql:mysql-connector-j;9.0.0 -com.openai:openai-java;4.6.1 +com.openai:openai-java;4.14.0 com.squareup.okhttp3:okhttp;4.12.0 commons-codec:commons-codec;1.15 commons-net:commons-net;3.9.0 diff --git a/sdk/ai/azure-ai-agents/CHANGELOG.md b/sdk/ai/azure-ai-agents/CHANGELOG.md index a3ca8244915d..2de616879d89 100644 --- a/sdk/ai/azure-ai-agents/CHANGELOG.md +++ b/sdk/ai/azure-ai-agents/CHANGELOG.md @@ -7,6 +7,7 @@ - New `MemorySearchAgent` sample was added demonstrating memory search functionality - Tests for `MemoryStoresClient` and `MemoryStoresAsyncClient` - Various documentation updates +- Using unified `HttpClient` setup for Azure specifics and `openai` client library wrapping methods ### Breaking Changes @@ -16,6 +17,8 @@ ### Other Changes +- Updated version of `openai` client library to `4.14.0` + ## 1.0.0-beta.1 (2025-11-12) ### Features Added diff --git a/sdk/ai/azure-ai-agents/pom.xml b/sdk/ai/azure-ai-agents/pom.xml index 378c86a00a9b..b50a8af301e6 100644 --- a/sdk/ai/azure-ai-agents/pom.xml +++ b/sdk/ai/azure-ai-agents/pom.xml @@ -52,7 +52,7 @@ com.openai openai-java - 4.6.1 + 4.14.0 com.azure @@ -97,7 +97,7 @@ - com.openai:openai-java:[4.6.1] + com.openai:openai-java:[4.14.0] diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/http/HttpClientHelper.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/http/HttpClientHelper.java index e7df9ee0c91f..8052a17e5902 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/http/HttpClientHelper.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/http/HttpClientHelper.java @@ -28,8 +28,11 @@ import com.openai.errors.UnauthorizedException; import com.openai.errors.UnexpectedStatusCodeException; import com.openai.errors.UnprocessableEntityException; +import reactor.core.publisher.Mono; import java.io.ByteArrayOutputStream; +import java.net.MalformedURLException; +import java.net.URI; import java.util.List; import java.util.Objects; import java.util.concurrent.CompletableFuture; @@ -82,10 +85,14 @@ public HttpResponse execute(HttpRequest request, RequestOptions requestOptions) Objects.requireNonNull(request, "request"); Objects.requireNonNull(requestOptions, "requestOptions"); - com.azure.core.http.HttpRequest azureRequest = buildAzureRequest(request); - - return new AzureHttpResponseAdapter( - this.httpPipeline.sendSync(azureRequest, buildRequestContext(requestOptions))); + try { + com.azure.core.http.HttpRequest azureRequest = buildAzureRequest(request); + return new AzureHttpResponseAdapter( + this.httpPipeline.sendSync(azureRequest, buildRequestContext(requestOptions))); + } catch (MalformedURLException exception) { + throw new OpenAIException("Invalid URL in request: " + exception.getMessage(), + LOGGER.logThrowableAsError(exception)); + } } @Override @@ -98,9 +105,8 @@ public CompletableFuture executeAsync(HttpRequest request, Request Objects.requireNonNull(request, "request"); Objects.requireNonNull(requestOptions, "requestOptions"); - final com.azure.core.http.HttpRequest azureRequest = buildAzureRequest(request); - - return this.httpPipeline.send(azureRequest, buildRequestContext(requestOptions)) + return Mono.fromCallable(() -> buildAzureRequest(request)) + .flatMap(azureRequest -> this.httpPipeline.send(azureRequest, buildRequestContext(requestOptions))) .map(response -> (HttpResponse) new AzureHttpResponseAdapter(response)) .onErrorMap(HttpClientWrapper::mapAzureExceptionToOpenAI) .toFuture(); @@ -163,7 +169,7 @@ private static Throwable mapAzureExceptionToOpenAI(Throwable throwable) { } else if (throwable instanceof TimeoutException) { return throwable; } else { - return new OpenAIException(throwable.getMessage(), throwable.getCause()); + return new OpenAIException(throwable.getMessage(), throwable); } } @@ -179,7 +185,8 @@ private static Headers toOpenAIHeaders(HttpHeaders azureHeaders) { /** * Converts the OpenAI request metadata and body into an Azure {@link com.azure.core.http.HttpRequest}. */ - private static com.azure.core.http.HttpRequest buildAzureRequest(HttpRequest request) { + private static com.azure.core.http.HttpRequest buildAzureRequest(HttpRequest request) + throws MalformedURLException { HttpRequestBody requestBody = request.body(); String contentType = requestBody != null ? requestBody.contentType() : null; BinaryData bodyData = null; @@ -196,7 +203,7 @@ private static com.azure.core.http.HttpRequest buildAzureRequest(HttpRequest req } com.azure.core.http.HttpRequest azureRequest = new com.azure.core.http.HttpRequest( - HttpMethod.valueOf(request.method().name()), OpenAiRequestUrlBuilder.buildUrl(request), headers); + HttpMethod.valueOf(request.method().name()), URI.create(request.url()).toURL(), headers); if (bodyData != null) { azureRequest.setBody(bodyData); diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/http/OpenAiRequestUrlBuilder.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/http/OpenAiRequestUrlBuilder.java deleted file mode 100644 index f4490f771020..000000000000 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/http/OpenAiRequestUrlBuilder.java +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.agents.implementation.http; - -import com.azure.core.util.CoreUtils; -import com.azure.core.util.logging.ClientLogger; -import com.openai.core.http.HttpRequest; -import com.openai.core.http.QueryParams; - -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.util.List; -import java.util.StringJoiner; - -/** - * Utility methods that reconstruct the absolute {@link URL} required by the Azure pipeline from the - * OpenAI request metadata. The builder keeps the low-level path/query handling isolated so that - * {@link HttpClientHelper} can focus on the higher-level request mapping logic. - * This class will be deprecated as soon as support is added in the OpenAI SDK as described in this issue: - * - */ -public final class OpenAiRequestUrlBuilder { - - private static final ClientLogger LOGGER = new ClientLogger(OpenAiRequestUrlBuilder.class); - - private OpenAiRequestUrlBuilder() { - } - - /** - * Builds an absolute {@link URL} using the base URL, path segments, and query parameters that are stored in the - * OpenAI {@link HttpRequest} abstraction. - * This method will be deprecated as soon as support is added in the OpenAI SDK as described in this issue: - * - * - * @param request Source request provided by the OpenAI client. - * @return Absolute URL that can be consumed by Azure HTTP components. - */ - static URL buildUrl(HttpRequest request) { - try { - URI baseUri = URI.create(request.baseUrl()); - URL baseUrl = baseUri.toURL(); - String path = buildPath(baseUrl.getPath(), request.pathSegments()); - String query = buildQueryString(request.queryParams()); - URI resolved = new URI(baseUrl.getProtocol(), baseUrl.getUserInfo(), baseUrl.getHost(), baseUrl.getPort(), - path, query, null); - return resolved.toURL(); - } catch (MalformedURLException | URISyntaxException ex) { - throw LOGGER.logThrowableAsWarning(new IllegalStateException( - "Failed to build Azure HTTP request URL from base: " + request.baseUrl(), ex)); - } - } - - /** - * Creates a normalized path that merges the OpenAI base path with the additional path segments present on the - * request. - */ - private static String buildPath(String basePath, List pathSegments) { - StringBuilder builder = new StringBuilder(); - String normalizedBasePath = normalizeBasePath(basePath); - if (!CoreUtils.isNullOrEmpty(normalizedBasePath)) { - builder.append(normalizedBasePath); - } - - for (String segment : pathSegments) { - if (builder.length() == 0 || builder.charAt(builder.length() - 1) != '/') { - builder.append('/'); - } - if (segment != null) { - builder.append(segment); - } - } - - return builder.length() == 0 ? "/" : builder.toString(); - } - - /** - * Normalizes the base path ensuring trailing slashes are removed and {@code null} inputs result in an empty path. - */ - private static String normalizeBasePath(String basePath) { - if (CoreUtils.isNullOrEmpty(basePath)) { - return ""; - } - if ("/".equals(basePath)) { - return ""; - } - return trimTrailingSlash(basePath); - } - - /** - * Removes the final {@code '/'} character when present so that subsequent concatenation does not duplicate - * separators. - */ - private static String trimTrailingSlash(String value) { - if (value == null) { - return null; - } - int length = value.length(); - if (length == 0) { - return value; - } - return value.charAt(length - 1) == '/' ? value.substring(0, length - 1) : value; - } - - /** - * Converts OpenAI {@link QueryParams} into a flattened query string. Encoding is deferred to {@link URI} so we do - * not double-encode values already escaped by upstream layers. - */ - private static String buildQueryString(QueryParams queryParams) { - if (queryParams == null || queryParams.isEmpty()) { - return null; - } - - StringJoiner joiner = new StringJoiner("&"); - queryParams.keys().forEach(name -> { - List values = queryParams.values(name); - if (values.isEmpty()) { - joiner.add(name); - } else { - values.forEach(value -> joiner.add(formatQueryComponent(name, value))); - } - }); - String query = joiner.toString(); - return query.isEmpty() ? null : query; - } - - /** - * Formats a single query component using {@code name=value} semantics, handling parameters that omit a value. - */ - private static String formatQueryComponent(String name, String value) { - if (value == null) { - return name; - } - return name + "=" + value; - } -} diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/implementation/http/HttpClientHelperTests.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/implementation/http/HttpClientHelperTests.java index 59ab92fb7cde..bf3b9a4bd77b 100644 --- a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/implementation/http/HttpClientHelperTests.java +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/implementation/http/HttpClientHelperTests.java @@ -4,9 +4,7 @@ package com.azure.ai.agents.implementation.http; import com.azure.core.http.HttpClient; -import com.azure.core.http.HttpHeaderName; import com.azure.core.http.HttpHeaders; -import com.azure.core.http.HttpMethod; import com.azure.core.http.HttpPipelineBuilder; import com.azure.core.http.HttpRequest; import com.azure.core.http.HttpResponse; @@ -27,7 +25,6 @@ import java.util.concurrent.CompletableFuture; import java.util.function.Function; -import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -36,39 +33,6 @@ class HttpClientHelperTests { - private static final HttpHeaderName REQUEST_ID_HEADER = HttpHeaderName.fromString("x-request-id"); - private static final HttpHeaderName CUSTOM_HEADER_NAME = HttpHeaderName.fromString("custom-header"); - private static final HttpHeaderName X_TEST_HEADER = HttpHeaderName.fromString("X-Test"); - private static final HttpHeaderName X_MULTI_HEADER = HttpHeaderName.fromString("X-Multi"); - - @Test - void executeMapsRequestAndResponse() { - RecordingHttpClient recordingClient = new RecordingHttpClient(request -> createMockResponse(request, 201, - new HttpHeaders().set(REQUEST_ID_HEADER, "req-123").set(CUSTOM_HEADER_NAME, "custom-value"), "pong")); - com.openai.core.http.HttpClient openAiClient - = HttpClientHelper.mapToOpenAIHttpClient(new HttpPipelineBuilder().httpClient(recordingClient).build()); - - com.openai.core.http.HttpRequest openAiRequest = createOpenAiRequest(); - - try (com.openai.core.http.HttpResponse response = openAiClient.execute(openAiRequest)) { - HttpRequest sentRequest = recordingClient.getLastRequest(); - assertNotNull(sentRequest, "Azure HttpClient should receive a request"); - assertEquals(HttpMethod.POST, sentRequest.getHttpMethod()); - assertEquals("https://example.com/path/segment?q=a%20b", sentRequest.getUrl().toString()); - assertEquals("alpha", sentRequest.getHeaders().getValue(X_TEST_HEADER)); - assertArrayEquals(new String[] { "first", "second" }, sentRequest.getHeaders().getValues(X_MULTI_HEADER)); - assertEquals("text/plain", sentRequest.getHeaders().getValue(HttpHeaderName.CONTENT_TYPE)); - assertEquals("payload", new String(sentRequest.getBodyAsBinaryData().toBytes(), StandardCharsets.UTF_8)); - - assertEquals(201, response.statusCode()); - assertEquals("req-123", response.requestId().orElseThrow(() -> new AssertionError("Missing request id"))); - assertEquals("custom-value", response.headers().values("custom-header").get(0)); - assertEquals("pong", new String(readAllBytes(response.body()), StandardCharsets.UTF_8)); - } catch (Exception e) { - fail("Exception thrown while reading response", e); - } - } - @Test void executeAsyncCompletesSuccessfully() { RecordingHttpClient recordingClient diff --git a/sdk/ai/azure-ai-projects/CHANGELOG.md b/sdk/ai/azure-ai-projects/CHANGELOG.md index 52515ee47e88..24f3793a26a4 100644 --- a/sdk/ai/azure-ai-projects/CHANGELOG.md +++ b/sdk/ai/azure-ai-projects/CHANGELOG.md @@ -10,6 +10,8 @@ ### Other Changes +- Updated version of `openai` client library to `4.14.0` + ## 1.0.0-beta.3 (2025-11-12) ### Features Added diff --git a/sdk/ai/azure-ai-projects/pom.xml b/sdk/ai/azure-ai-projects/pom.xml index b58668f4d6b9..c7647d97cdb1 100644 --- a/sdk/ai/azure-ai-projects/pom.xml +++ b/sdk/ai/azure-ai-projects/pom.xml @@ -77,7 +77,7 @@ Code generated by Microsoft (R) TypeSpec Code Generator. com.openai openai-java - 4.6.1 + 4.14.0 @@ -106,7 +106,7 @@ Code generated by Microsoft (R) TypeSpec Code Generator. - com.openai:openai-java:[4.6.1] + com.openai:openai-java:[4.14.0] diff --git a/sdk/openai/azure-ai-openai-stainless/pom.xml b/sdk/openai/azure-ai-openai-stainless/pom.xml index c5ef78dc4142..45eb20131aab 100644 --- a/sdk/openai/azure-ai-openai-stainless/pom.xml +++ b/sdk/openai/azure-ai-openai-stainless/pom.xml @@ -57,7 +57,7 @@ com.openai openai-java - 4.6.1 + 4.14.0 @@ -132,7 +132,7 @@ - com.openai:openai-java:[4.6.1] + com.openai:openai-java:[4.14.0] From 5508f56a271a56972e16e7418b570de38b7b3471 Mon Sep 17 00:00:00 2001 From: Jair Myree Date: Thu, 8 Jan 2026 09:18:31 -0500 Subject: [PATCH 33/41] Updating vertx dependencies (#47643) --- common/perf-test-core/pom.xml | 5 ++--- eng/versioning/external_dependencies.txt | 4 ++-- sdk/core/azure-core-http-vertx/CHANGELOG.md | 5 +++++ sdk/core/azure-core-http-vertx/pom.xml | 8 ++++---- sdk/template/azure-template-stress/pom.xml | 4 ++-- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/common/perf-test-core/pom.xml b/common/perf-test-core/pom.xml index 7f1ec34106c3..7bcc6634b5f4 100644 --- a/common/perf-test-core/pom.xml +++ b/common/perf-test-core/pom.xml @@ -55,9 +55,8 @@ com.beust:jcommander:[1.82] - + io.vertx:vertx-codegen:[4.5.23] io.projectreactor:reactor-core:[3.7.14] - io.vertx:vertx-codegen:[4.5.17] @@ -95,7 +94,7 @@ io.vertx vertx-codegen - 4.5.17 + 4.5.23 provided diff --git a/eng/versioning/external_dependencies.txt b/eng/versioning/external_dependencies.txt index ed7e29e00dae..79f376900df6 100644 --- a/eng/versioning/external_dependencies.txt +++ b/eng/versioning/external_dependencies.txt @@ -59,8 +59,8 @@ io.netty:netty-transport-native-unix-common;4.1.130.Final io.netty:netty-transport-native-kqueue;4.1.130.Final io.projectreactor.netty:reactor-netty-http;1.2.13 io.projectreactor:reactor-core;3.7.14 -io.vertx:vertx-codegen;4.5.17 -io.vertx:vertx-core;4.5.17 +io.vertx:vertx-codegen;4.5.23 +io.vertx:vertx-core;4.5.23 javax.websocket:javax.websocket-api;1.1 org.apache.commons:commons-compress;1.26.0 org.apache.ant:ant;1.10.15 diff --git a/sdk/core/azure-core-http-vertx/CHANGELOG.md b/sdk/core/azure-core-http-vertx/CHANGELOG.md index 28583d856ec7..dc0bbdfb0f27 100644 --- a/sdk/core/azure-core-http-vertx/CHANGELOG.md +++ b/sdk/core/azure-core-http-vertx/CHANGELOG.md @@ -10,6 +10,11 @@ ### Other Changes +#### Dependency Updates + +- Upgraded `vertx-codegen` from `4.5.17` to `4.5.23`. +- Upgraded `vertx-core` from `4.5.17` to `4.5.23`. + ## 1.1.2 (2025-10-06) ### Other Changes diff --git a/sdk/core/azure-core-http-vertx/pom.xml b/sdk/core/azure-core-http-vertx/pom.xml index c907b096e765..054f602bc874 100644 --- a/sdk/core/azure-core-http-vertx/pom.xml +++ b/sdk/core/azure-core-http-vertx/pom.xml @@ -82,14 +82,14 @@ io.vertx vertx-codegen - 4.5.17 + 4.5.23 provided io.vertx vertx-core - 4.5.17 + 4.5.23 @@ -172,8 +172,8 @@ - io.vertx:vertx-codegen:[4.5.17] - io.vertx:vertx-core:[4.5.17] + io.vertx:vertx-codegen:[4.5.23] + io.vertx:vertx-core:[4.5.23] diff --git a/sdk/template/azure-template-stress/pom.xml b/sdk/template/azure-template-stress/pom.xml index f952e12a3884..75583b590270 100644 --- a/sdk/template/azure-template-stress/pom.xml +++ b/sdk/template/azure-template-stress/pom.xml @@ -59,7 +59,7 @@ io.vertx vertx-codegen - 4.5.17 + 4.5.23 provided @@ -98,7 +98,7 @@ io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8:[2.14.0-alpha] io.opentelemetry.instrumentation:opentelemetry-logback-appender-1.0:[2.14.0-alpha] ch.qos.logback:logback-classic:[1.3.14] - io.vertx:vertx-codegen:[4.5.17] + io.vertx:vertx-codegen:[4.5.23] From 33add88c402a324dec1cee5970660e6a54571075 Mon Sep 17 00:00:00 2001 From: Fabian Meiswinkel Date: Thu, 8 Jan 2026 17:52:47 +0000 Subject: [PATCH 34/41] Adding Spark 3.5 with Scala 2.13 module (#47492) * Scala 2.13 skeleton * Update sdk/cosmos/ci.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update sdk/cosmos/azure-cosmos-spark_3/pom.xml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update sdk/cosmos/azure-cosmos-spark_3-5_2-13/CONTRIBUTING.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update sdk/cosmos/azure-cosmos-spark_3-5_2-13/CONTRIBUTING.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update pom.xml * md fixes * Fixing wrong versions * Update pom.xml * Fix versioning powershell script to exclude checks for versions specified via variables * Removing unused external dependencies * Update ci.yml * Update pom.xml * Fixing scala 2.13 incompatibilities * Update pom.xml * Fixing CI tests or spark 3.5 to use Java 17 * Update CHANGELOG.md * Fixing illegal access error when using Java 17 * Making --add-opens conditional on Java version * Update spark.yml * Fixing Spark live tests * Update databricks-jar-install.sh * Update TransientIOErrorsRetryingReadManyIterator.scala * Update CosmosItemIdentityHelper.scala * Update CosmosItemIdentityHelper.scala * Fixing scala 2.13 jsonNode serialization incompatibility * Update CosmosItemIdentityHelper.scala * Update CosmosItemIdentityHelper.scala * Fixing scala 2.13 regression * Fixing Scala 2.13 test failure * Fixing build break * Update SparkE2EChangeFeedITest.scala --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .vscode/cspell.json | 1 + eng/.docsettings.yml | 1 + .../stages/cosmos-emulator-matrix.json | 17 +- eng/versioning/external_dependencies.txt | 9 +- eng/versioning/pom_file_version_scanner.ps1 | 164 ++++++++------- eng/versioning/version_client.txt | 1 + .../pom.xml | 4 +- sdk/cosmos/azure-cosmos-spark_3-5/pom.xml | 16 +- .../azure-cosmos-spark_3-5_2-12/pom.xml | 26 ++- .../azure-cosmos-spark_3-5_2-13/CHANGELOG.md | 13 ++ .../CONTRIBUTING.md | 84 ++++++++ .../azure-cosmos-spark_3-5_2-13/README.md | 192 ++++++++++++++++++ .../azure-cosmos-spark_3-5_2-13/pom.xml | 171 ++++++++++++++++ .../scalastyle_config.xml | 130 ++++++++++++ .../resources/azure-cosmos-spark.properties | 2 + ...osmos.spark.CosmosClientBuilderInterceptor | 1 + ...azure.cosmos.spark.CosmosClientInterceptor | 1 + ...cosmos.spark.WriteOnRetryCommitInterceptor | 1 + sdk/cosmos/azure-cosmos-spark_3/dev/README.md | 1 + sdk/cosmos/azure-cosmos-spark_3/pom.xml | 64 +++--- .../cosmos/spark/CosmosCatalogBase.scala | 2 +- .../cosmos/spark/CosmosClientMetrics.scala | 2 +- .../spark/CosmosItemIdentityHelper.scala | 3 +- .../spark/CosmosTableSchemaInferrer.scala | 2 +- .../com/azure/cosmos/spark/PointWriter.scala | 12 +- ...ientIOErrorsRetryingReadManyIterator.scala | 2 +- .../CosmosCatalogCosmosSDKClient.scala | 61 +++--- .../udf/GetCosmosItemIdentityValue.scala | 6 +- .../azure/cosmos/spark/CosmosConfigSpec.scala | 2 +- .../spark/CosmosPartitionPlannerITest.scala | 4 +- .../cosmos/spark/FilterAnalyzerSpec.scala | 6 +- .../cosmos/spark/SparkE2EBulkWriteITest.scala | 2 +- .../spark/SparkE2EChangeFeedITest.scala | 11 +- .../com/azure/cosmos/spark/TestUtils.scala | 5 +- .../test-databricks/databricks-jar-install.sh | 12 +- sdk/cosmos/ci.yml | 21 +- sdk/cosmos/fabric-cosmos-spark-auth_3/pom.xml | 2 +- sdk/cosmos/pom.xml | 1 + sdk/cosmos/spark.databricks.yml | 8 +- sdk/cosmos/spark.yml | 30 ++- 40 files changed, 910 insertions(+), 183 deletions(-) create mode 100644 sdk/cosmos/azure-cosmos-spark_3-5_2-13/CHANGELOG.md create mode 100644 sdk/cosmos/azure-cosmos-spark_3-5_2-13/CONTRIBUTING.md create mode 100644 sdk/cosmos/azure-cosmos-spark_3-5_2-13/README.md create mode 100644 sdk/cosmos/azure-cosmos-spark_3-5_2-13/pom.xml create mode 100644 sdk/cosmos/azure-cosmos-spark_3-5_2-13/scalastyle_config.xml create mode 100644 sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/main/resources/azure-cosmos-spark.properties create mode 100644 sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/test/resources/META-INF/services/com.azure.cosmos.spark.CosmosClientBuilderInterceptor create mode 100644 sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/test/resources/META-INF/services/com.azure.cosmos.spark.CosmosClientInterceptor create mode 100644 sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/test/resources/META-INF/services/com.azure.cosmos.spark.WriteOnRetryCommitInterceptor diff --git a/.vscode/cspell.json b/.vscode/cspell.json index 9a864abbac2a..7c69ad6801ed 100644 --- a/.vscode/cspell.json +++ b/.vscode/cspell.json @@ -105,6 +105,7 @@ "sdk/cosmos/azure-cosmos-spark_3-4_2-12/**", "sdk/cosmos/azure-cosmos-spark_3-5/**", "sdk/cosmos/azure-cosmos-spark_3-5_2-12/**", + "sdk/cosmos/azure-cosmos-spark_3-5_2-13/**", "sdk/cosmos/azure-cosmos-spark-account-data-resolver-sample/**", "sdk/cosmos/fabric-cosmos-spark-auth_3/**", "sdk/cosmos/azure-cosmos-encryption/**", diff --git a/eng/.docsettings.yml b/eng/.docsettings.yml index e8bdd397627d..e68c43e623e6 100644 --- a/eng/.docsettings.yml +++ b/eng/.docsettings.yml @@ -78,6 +78,7 @@ known_content_issues: - ['sdk/cosmos/azure-cosmos-spark_3-3_2-12/README.md', '#3113'] - ['sdk/cosmos/azure-cosmos-spark_3-4_2-12/README.md', '#3113'] - ['sdk/cosmos/azure-cosmos-spark_3-5_2-12/README.md', '#3113'] + - ['sdk/cosmos/azure-cosmos-spark_3-5_2-13/README.md', '#3113'] - ['sdk/cosmos/azure-cosmos-spark-account-data-resolver-sample/README.md', '#3113'] - ['sdk/cosmos/fabric-cosmos-spark-auth_3/README.md', '#3113'] - ['sdk/cosmos/azure-cosmos-spark_3_2-12/dev/README.md', '#3113'] diff --git a/eng/pipelines/templates/stages/cosmos-emulator-matrix.json b/eng/pipelines/templates/stages/cosmos-emulator-matrix.json index b3cc2b8d46d0..d1a2da8a0c64 100644 --- a/eng/pipelines/templates/stages/cosmos-emulator-matrix.json +++ b/eng/pipelines/templates/stages/cosmos-emulator-matrix.json @@ -71,18 +71,25 @@ "JavaTestVersion": "1.11", "AdditionalArgs": "-DACCOUNT_HOST=https://localhost:8081/ -Dhadoop.home.dir=D:/Hadoop -DCOSMOS.AZURE_COSMOS_DISABLE_NON_STREAMING_ORDER_BY=true" }, - "Spark 3.5 Integration Tests targeting Cosmos Emulator - Java 8'": { - "ProfileFlag": "-Dspark-e2e_3-5", + "Spark 3.5, Scala 2.12 Integration Tests targeting Cosmos Emulator - Java 8'": { + "ProfileFlag": "-Dspark-e2e_3-5_2-12", "PROTOCOLS": "[\"Tcp\"]", "DESIRED_CONSISTENCIES": "[\"Session\"]", "JavaTestVersion": "1.8", "AdditionalArgs": "-DACCOUNT_HOST=https://localhost:8081/ -Dhadoop.home.dir=D:/Hadoop -DCOSMOS.AZURE_COSMOS_DISABLE_NON_STREAMING_ORDER_BY=true" }, - "Spark 3.5 Integration Tests targeting Cosmos Emulator - Java 11'": { - "ProfileFlag": "-Dspark-e2e_3-5", + "Spark 3.5, Scala 2.12 Integration Tests targeting Cosmos Emulator - Java 17'": { + "ProfileFlag": "-Dspark-e2e_3-5_2-12", "PROTOCOLS": "[\"Tcp\"]", "DESIRED_CONSISTENCIES": "[\"Session\"]", - "JavaTestVersion": "1.11", + "JavaTestVersion": "1.17", + "AdditionalArgs": "-DACCOUNT_HOST=https://localhost:8081/ -Dhadoop.home.dir=D:/Hadoop -DCOSMOS.AZURE_COSMOS_DISABLE_NON_STREAMING_ORDER_BY=true" + }, + "Spark 3.5, Scala 2.13 Integration Tests targeting Cosmos Emulator - Java 17'": { + "ProfileFlag": "-Dspark-e2e_3-5_2-13", + "PROTOCOLS": "[\"Tcp\"]", + "DESIRED_CONSISTENCIES": "[\"Session\"]", + "JavaTestVersion": "1.17", "AdditionalArgs": "-DACCOUNT_HOST=https://localhost:8081/ -Dhadoop.home.dir=D:/Hadoop -DCOSMOS.AZURE_COSMOS_DISABLE_NON_STREAMING_ORDER_BY=true" }, "Kafka Integration Tests targeting Cosmos Emulator - Java 11": { diff --git a/eng/versioning/external_dependencies.txt b/eng/versioning/external_dependencies.txt index 79f376900df6..1243039d504c 100644 --- a/eng/versioning/external_dependencies.txt +++ b/eng/versioning/external_dependencies.txt @@ -256,8 +256,11 @@ cosmos-spark_3-3_org.apache.spark:spark-hive_2.12;3.3.0 cosmos-spark_3-4_org.apache.spark:spark-hive_2.12;3.4.0 cosmos-spark_3-5_org.apache.spark:spark-hive_2.12;3.5.0 cosmos_org.scala-lang:scala-library;2.12.19 -cosmos_org.scala-lang.modules:scala-java8-compat_2.12;0.8.0 +cosmos-scala213_org.scala-lang:scala-library;2.13.17 +cosmos_org.scala-lang.modules:scala-java8-compat_2.12;0.9.1 +cosmos-scala213_org.scala-lang.modules:scala-java8-compat_2.13;0.9.1 cosmos_io.projectreactor:reactor-scala-extensions_2.12;0.8.0 +cosmos-scala213_io.projectreactor:reactor-scala-extensions_2.13;0.8.0 cosmos_commons-io:commons-io;2.4 cosmos_com.microsoft.azure:applicationinsights-core;2.6.4 cosmos_io.micrometer:micrometer-core;1.15.1 @@ -266,9 +269,13 @@ cosmos_io.micrometer:micrometer-registry-graphite;1.15.1 # Cosmos Spark connector tests only cosmos_org.scalatest:scalatest_2.12;3.2.2 +cosmos-scala213_org.scalatest:scalatest_2.13;3.2.2 cosmos_org.scalatest:scalatest-flatspec_2.12;3.2.3 +cosmos-scala213_org.scalatest:scalatest-flatspec_2.13;3.2.3 cosmos_org.scalactic:scalactic_2.12;3.2.3 +cosmos-scala213_org.scalactic:scalactic_2.13;3.2.3 cosmos_org.scalamock:scalamock_2.12;5.0.0 +cosmos-scala213_org.scalamock:scalamock_2.13;5.0.0 cosmos_com.globalmentor:hadoop-bare-naked-local-fs;0.1.0 cosmos_org.mockito:mockito-core;4.8.1 diff --git a/eng/versioning/pom_file_version_scanner.ps1 b/eng/versioning/pom_file_version_scanner.ps1 index 38546e5e02c9..654188d7deb4 100644 --- a/eng/versioning/pom_file_version_scanner.ps1 +++ b/eng/versioning/pom_file_version_scanner.ps1 @@ -723,31 +723,46 @@ Get-ChildItem -Path $Path -Filter pom*.xml -Recurse -File | ForEach-Object { $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: dependency is missing version element for groupId=$($groupId), artifactId=$($artifactId) should be " continue } - if ($versionNode.NextSibling -and $versionNode.NextSibling.NodeType -eq "Comment") + + if ($versionNode.FirstChild.Value.StartsWith('${')) { - # unfortunately because there are POM exceptions we need to wildcard the group which may be - # something like _groupId - if ($versionNode.NextSibling.Value.Trim() -notmatch "{x-version-update;(.+)?$($groupId):$($artifactId);\w+}") + # skip version checks when they have been intentionally applied via variables + } + else + { + if ($versionNode.NextSibling -and $versionNode.NextSibling.NodeType -eq "Comment") { - $hasError = $true - $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: dependency version update tag for groupId=$($groupId), artifactId=$($artifactId) should be " + # unfortunately because there are POM exceptions we need to wildcard the group which may be + # something like _groupId + if ($versionNode.FirstChild.Value.StartsWith('${')) + { + # skip version checks when they have been intentionally applied via variables + } + else + { + if ($versionNode.NextSibling.Value.Trim() -notmatch "{x-version-update;(.+)?$($groupId):$($artifactId);\w+}") + { + $hasError = $true + $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: dependency version update tag for groupId=$($groupId), artifactId=$($artifactId) should be " + } + else + { + # verify the version tag and version are correct + $retVal = Test-Dependency-Tag-And-Version $libHash $extDepHash $versionNode.InnerText.Trim() $versionNode.NextSibling.Value $artifactsPerSDHashSet + if ($retVal) + { + $hasError = $true + $potentialLogMessage = Join-With-NewLine $potentialLogMessage $retVal + } + } + } } else { - # verify the version tag and version are correct - $retVal = Test-Dependency-Tag-And-Version $libHash $extDepHash $versionNode.InnerText.Trim() $versionNode.NextSibling.Value $artifactsPerSDHashSet - if ($retVal) - { - $hasError = $true - $potentialLogMessage = Join-With-NewLine $potentialLogMessage $retVal - } + $hasError = $true + $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: Missing dependency version update tag for groupId=$($groupId), artifactId=$($artifactId). The tag should be " } - } - else - { - $hasError = $true - $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: Missing dependency version update tag for groupId=$($groupId), artifactId=$($artifactId). The tag should be " - } + } } # Verify every plugin has a group, artifact and version # Verify every dependency has a group, artifact and version @@ -882,80 +897,87 @@ Get-ChildItem -Path $Path -Filter pom*.xml -Recurse -File | ForEach-Object { $groupId = $split[0] $artifactId = $split[1] $version = $split[2] - # The groupId match has to be able to deal with _ for external dependency exceptions - if (!$includeNode.NextSibling -or $includeNode.NextSibling.NodeType -ne "Comment") - { - $hasError = $true - $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: is missing the update tag which should be " - } - elseif ($includeNode.NextSibling.Value.Trim() -notmatch "{x-include-update;(.+)?$($groupId):$($artifactId);(current|dependency|external_dependency)}") - { - $hasError = $true - $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: version update tag for $($includeNode.InnerText) should be " + + if ($version.StartsWith('[${')) { + # skip version checks when they have been intentionally applied via variables } else { - # verify that the version is formatted correctly - if (!$version.StartsWith("[") -or !$version.EndsWith("]")) + # The groupId match has to be able to deal with _ for external dependency exceptions + if (!$includeNode.NextSibling -or $includeNode.NextSibling.NodeType -ne "Comment") { $hasError = $true - $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: the version entry '$($version)' for '$($rawIncludeText)' is not formatted correctly. The include version needs to of the form '[]', the braces lock the include to a specific version for these entries. -->" + $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: is missing the update tag which should be " + } + elseif ($includeNode.NextSibling.Value.Trim() -notmatch "{x-include-update;(.+)?$($groupId):$($artifactId);(current|dependency|external_dependency)}") + { + $hasError = $true + $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: version update tag for $($includeNode.InnerText) should be " } - # verify the version has the correct value else { - $versionWithoutBraces = $version.Substring(1, $version.Length -2) - # the key into the dependency has needs to be created from the tag's group/artifact - # entries in case it's an external dependency entry. Because this has already - # been validated for format, grab the group:artifact - $depKey = $includeNode.NextSibling.Value.Trim().Split(";")[1] - $depType = $includeNode.NextSibling.Value.Trim().Split(";")[2] - $depType = $depType.Substring(0, $depType.IndexOf("}")) - if ($depType -eq $DependencyTypeExternal) + # verify that the version is formatted correctly + if (!$version.StartsWith("[") -or !$version.EndsWith("]")) { - if ($extDepHash.ContainsKey($depKey)) - { - if ($versionWithoutBraces -ne $extDepHash[$depKey].ver) - { - $hasError = $true - $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: $($depKey)'s version is '$($versionWithoutBraces)' but the external_dependency version is listed as $($extDepHash[$depKey].ver)" - } - } - else - { - $hasError = $true - $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: the groupId:artifactId entry '$($depKey)' for '$($rawIncludeText)' is not a valid external dependency. Please verify the entry exists in the external_dependencies.txt file. -->" - } + $hasError = $true + $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: the version entry '$($version)' for '$($rawIncludeText)' is not formatted correctly. The include version needs to of the form '[]', the braces lock the include to a specific version for these entries. -->" } + # verify the version has the correct value else { - # If the tag isn't external_dependency then verify it exists in the library hash - if (!$libHash.ContainsKey($depKey)) - { - $hasError = $true - return "Error: $($depKey)'s dependency type is '$($depType)' but the dependency does not exist in any of the version_*.txt files. Should this be an external_dependency? Please ensure the dependency type is correct or the dependency is added to the appropriate file." - - } - if ($depType -eq $DependencyTypeDependency) + $versionWithoutBraces = $version.Substring(1, $version.Length -2) + # the key into the dependency has needs to be created from the tag's group/artifact + # entries in case it's an external dependency entry. Because this has already + # been validated for format, grab the group:artifact + $depKey = $includeNode.NextSibling.Value.Trim().Split(";")[1] + $depType = $includeNode.NextSibling.Value.Trim().Split(";")[2] + $depType = $depType.Substring(0, $depType.IndexOf("}")) + if ($depType -eq $DependencyTypeExternal) { - if ($versionWithoutBraces -ne $libHash[$depKey].depVer) + if ($extDepHash.ContainsKey($depKey)) + { + if ($versionWithoutBraces -ne $extDepHash[$depKey].ver) + { + $hasError = $true + $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: $($depKey)'s version is '$($versionWithoutBraces)' but the external_dependency version is listed as $($extDepHash[$depKey].ver)" + } + } + else { $hasError = $true - return "Error: $($depKey)'s is '$($versionString)' but the dependency version is listed as $($libHash[$depKey].depVer)" + $potentialLogMessage = Join-With-NewLine $potentialLogMessage "Error: the groupId:artifactId entry '$($depKey)' for '$($rawIncludeText)' is not a valid external dependency. Please verify the entry exists in the external_dependencies.txt file. -->" } } - elseif ($depType -eq $DependencyTypeCurrent) + else { - # Verify that none of the 'current' dependencies are using a groupId that starts with 'unreleased_' or 'beta_' - if ($depKey.StartsWith('unreleased_') -or $depKey.StartsWith('beta_')) + # If the tag isn't external_dependency then verify it exists in the library hash + if (!$libHash.ContainsKey($depKey)) { $hasError = $true - return "Error: $($versionUpdateString) is using an unreleased_ or beta_ dependency and trying to set current value. Only dependency versions can be set with an unreleased or beta dependency." + return "Error: $($depKey)'s dependency type is '$($depType)' but the dependency does not exist in any of the version_*.txt files. Should this be an external_dependency? Please ensure the dependency type is correct or the dependency is added to the appropriate file." + } - if ($versionWithoutBraces -ne $libHash[$depKey].curVer) + if ($depType -eq $DependencyTypeDependency) { - $hasError = $true - return "Error: $($depKey)'s is '$($versionString)' but the current version is listed as $($libHash[$depKey].curVer)" + if ($versionWithoutBraces -ne $libHash[$depKey].depVer) + { + $hasError = $true + return "Error: $($depKey)'s is '$($versionString)' but the dependency version is listed as $($libHash[$depKey].depVer)" + } + } + elseif ($depType -eq $DependencyTypeCurrent) + { + # Verify that none of the 'current' dependencies are using a groupId that starts with 'unreleased_' or 'beta_' + if ($depKey.StartsWith('unreleased_') -or $depKey.StartsWith('beta_')) + { + $hasError = $true + return "Error: $($versionUpdateString) is using an unreleased_ or beta_ dependency and trying to set current value. Only dependency versions can be set with an unreleased or beta dependency." + } + if ($versionWithoutBraces -ne $libHash[$depKey].curVer) + { + $hasError = $true + return "Error: $($depKey)'s is '$($versionString)' but the current version is listed as $($libHash[$depKey].curVer)" + } } } } diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index ff7fa333a1ea..3ad0fab9647d 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -115,6 +115,7 @@ com.azure:azure-cosmos-test;1.0.0-beta.16;1.0.0-beta.17 com.azure.cosmos.spark:azure-cosmos-spark_3-3_2-12;4.42.0;4.43.0-beta.1 com.azure.cosmos.spark:azure-cosmos-spark_3-4_2-12;4.42.0;4.43.0-beta.1 com.azure.cosmos.spark:azure-cosmos-spark_3-5_2-12;4.42.0;4.43.0-beta.1 +com.azure.cosmos.spark:azure-cosmos-spark_3-5_2-13;4.42.0;4.43.0-beta.1 com.azure.cosmos.spark:fabric-cosmos-spark-auth_3;1.1.0;1.2.0-beta.1 com.azure:azure-cosmos-tests;1.0.0-beta.1;1.0.0-beta.1 com.azure:azure-data-appconfiguration;1.8.5;1.9.0-beta.1 diff --git a/sdk/cosmos/azure-cosmos-spark-account-data-resolver-sample/pom.xml b/sdk/cosmos/azure-cosmos-spark-account-data-resolver-sample/pom.xml index 5f8aa27d8f28..c594cbfb2f1f 100644 --- a/sdk/cosmos/azure-cosmos-spark-account-data-resolver-sample/pom.xml +++ b/sdk/cosmos/azure-cosmos-spark-account-data-resolver-sample/pom.xml @@ -103,7 +103,7 @@ org.scala-lang.modules scala-java8-compat_2.12 - 0.8.0 + 0.9.1 io.projectreactor @@ -281,7 +281,7 @@ org.apache.spark:spark-sql_2.12:[3.5.0] commons-io:commons-io:[2.4] org.scala-lang:scala-library:[2.12.19] - org.scala-lang.modules:scala-java8-compat_2.12:[0.8.0] + org.scala-lang.modules:scala-java8-compat_2.12:[0.9.1] io.projectreactor:reactor-scala-extensions_2.12:[0.8.0] org.scalatest:scalatest_2.12:[3.2.2] org.apache.maven.plugins:maven-antrun-plugin:[3.1.0] diff --git a/sdk/cosmos/azure-cosmos-spark_3-5/pom.xml b/sdk/cosmos/azure-cosmos-spark_3-5/pom.xml index 348d8c15caec..85337b09b220 100644 --- a/sdk/cosmos/azure-cosmos-spark_3-5/pom.xml +++ b/sdk/cosmos/azure-cosmos-spark_3-5/pom.xml @@ -24,6 +24,10 @@ ${cosmos.spark.skip} ${cosmos.spark.skip} 3.5 + 2.12 + 3.5.0 + 3.5.0 + 2.18.4 @@ -93,8 +97,8 @@ org.apache.spark - spark-sql_2.12 - 3.5.0 + spark-sql_${scala.binary.version} + ${spark35.version} io.netty @@ -109,8 +113,8 @@ org.apache.spark - spark-hive_2.12 - 3.5.0 + spark-hive_${scala.binary.version} + ${spark-hive-version} io.netty @@ -130,8 +134,8 @@ com.fasterxml.jackson.module - jackson-module-scala_2.12 - 2.18.4 + jackson-module-scala_${scala.binary.version} + ${scala-jackson.version} diff --git a/sdk/cosmos/azure-cosmos-spark_3-5_2-12/pom.xml b/sdk/cosmos/azure-cosmos-spark_3-5_2-12/pom.xml index 22434193aeae..5bbe86d16d50 100644 --- a/sdk/cosmos/azure-cosmos-spark_3-5_2-12/pom.xml +++ b/sdk/cosmos/azure-cosmos-spark_3-5_2-12/pom.xml @@ -40,6 +40,18 @@ false + 2.12 + 2.12.19 + 3.3.0 + 3.4.0 + 3.5.0 + 0.9.1 + 0.8.0 + 3.2.2 + 3.2.3 + 3.2.3 + 5.0.0 + 2.18.4 @@ -102,13 +114,13 @@ - spark-e2e_3-5 + spark-e2e_3-5_2-12 ${basedir}/scalastyle_config.xml - spark-e2e_3-5 + spark-e2e_3-5_2-12 @@ -148,6 +160,7 @@ scalatest-maven-plugin 2.1.0 + ${scalatest.argLine} ${project.build.directory}/surefire-reports . SparkTestSuite.txt @@ -165,5 +178,14 @@ + + java9-plus + + [9,) + + + --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false + + diff --git a/sdk/cosmos/azure-cosmos-spark_3-5_2-13/CHANGELOG.md b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/CHANGELOG.md new file mode 100644 index 000000000000..6ae4d7ce01d5 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/CHANGELOG.md @@ -0,0 +1,13 @@ +## Release History + +### 4.43.0-beta.1 (Unreleased) + +#### Features Added + +#### Breaking Changes + +#### Bugs Fixed + +#### Other Changes + +### NOTE: See CHANGELOG.md in 3.3; 3.4 and 3.5 for scala 2.12 projects for changes prior to 4.43.0 diff --git a/sdk/cosmos/azure-cosmos-spark_3-5_2-13/CONTRIBUTING.md b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/CONTRIBUTING.md new file mode 100644 index 000000000000..6949e20fb69d --- /dev/null +++ b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/CONTRIBUTING.md @@ -0,0 +1,84 @@ +# Contributing +This instruction is guideline for building and code contribution. + +## Prerequisites +- JDK 8 and above +- [Maven](https://maven.apache.org/) 3.0 and above + +## Build from source +To build the project, run maven commands. + +```bash +git clone https://github.com/Azure/azure-sdk-for-java.git +cd sdk/cosmos/azure-cosmos-spark_3-5_2-13 +mvn clean install +``` + +## Test +There are integration tests on azure and on emulator to trigger integration test execution +against Azure Cosmos DB and against +[Azure Cosmos DB Emulator](https://docs.microsoft.com/azure/cosmos-db/local-emulator), you need to +follow the link to set up emulator before test execution. + +- Run unit tests +```bash +mvn clean install -Dgpg.skip +``` + +- Run integration tests + - on Azure + > **NOTE** Please note that integration test against Azure requires Azure Cosmos DB Document + API and will automatically create a Cosmos database in your Azure subscription, then there + will be **Azure usage fee.** + + Integration tests will require a Azure Subscription. If you don't already have an Azure + subscription, you can activate your + [MSDN subscriber benefits](https://azure.microsoft.com/pricing/member-offers/msdn-benefits-details/) + or sign up for a [free Azure account](https://azure.microsoft.com/free/). + + 1. Create an Azure Cosmos DB on Azure. + - Go to [Azure portal](https://portal.azure.com/) and click +New. + - Click Databases, and then click Azure Cosmos DB to create your database. + - Navigate to the database you have created, and click Access keys and copy your + URI and access keys for your database. + + 2. Set environment variables ACCOUNT_HOST, ACCOUNT_KEY and SECONDARY_ACCOUNT_KEY, where value + of them are Cosmos account URI, primary key and secondary key. + + So set the + second group environment variables NEW_ACCOUNT_HOST, NEW_ACCOUNT_KEY and + NEW_SECONDARY_ACCOUNT_KEY, the two group environment variables can be same. + 3. Run maven command with `integration-test-azure` profile. + + ```bash + set ACCOUNT_HOST=your-cosmos-account-uri + set ACCOUNT_KEY=your-cosmos-account-primary-key + set SECONDARY_ACCOUNT_KEY=your-cosmos-account-secondary-key + + set NEW_ACCOUNT_HOST=your-cosmos-account-uri + set NEW_ACCOUNT_KEY=your-cosmos-account-primary-key + set NEW_SECONDARY_ACCOUNT_KEY=your-cosmos-account-secondary-key + mvnw -P integration-test-azure clean install + ``` + + - on Emulator + + Setup Azure Cosmos DB Emulator by following + [this instruction](https://docs.microsoft.com/azure/cosmos-db/local-emulator), and set + associated environment variables. Then run test with: + ```bash + mvnw -P integration-test-emulator install + ``` + + +- Skip tests execution +```bash +mvn clean install -Dgpg.skip -DskipTests +``` + +## Version management +Developing version naming convention is like `0.1.2-beta.1`. Release version naming convention is like `0.1.2`. + +## Contribute to code +Contribution is welcome. Please follow +[this instruction](https://github.com/Azure/azure-sdk-for-java/blob/main/CONTRIBUTING.md) to contribute code. diff --git a/sdk/cosmos/azure-cosmos-spark_3-5_2-13/README.md b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/README.md new file mode 100644 index 000000000000..250fba8bb05e --- /dev/null +++ b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/README.md @@ -0,0 +1,192 @@ +# Azure Cosmos DB OLTP Spark 3 connector + +## Azure Cosmos DB OLTP Spark 3 connector for Spark 3.5 +**Azure Cosmos DB OLTP Spark connector** provides Apache Spark support for Azure Cosmos DB using +the [SQL API][sql_api_query]. +[Azure Cosmos DB][cosmos_introduction] is a globally-distributed database service which allows +developers to work with data using a variety of standard APIs, such as SQL, MongoDB, Cassandra, Graph, and Table. + +If you have any feedback or ideas on how to improve your experience please let us know here: +https://github.com/Azure/azure-sdk-for-java/issues/new + +### Documentation + +- [Getting started](https://aka.ms/azure-cosmos-spark-3-quickstart) +- [Catalog API](https://aka.ms/azure-cosmos-spark-3-catalog-api) +- [Configuration Parameter Reference](https://aka.ms/azure-cosmos-spark-3-config) + +[//]: # (//TODO: add more sections) +[//]: # (//TODO: Enable Client Logging) +[//]: # (//TODO: Examples) +[//]: # (//TODO: Next steps) +[//]: # (//TODO: Key concepts) +[//]: # (//TODO: Azure Cosmos DB Partition) +[//]: # (//TODO: Troubleshooting) + +### Version Compatibility + +#### azure-cosmos-spark_3-5_2-12 +| Connector | Supported Spark Versions | Minimum Java Version | Supported Scala Versions | Supported Databricks Runtimes | Supported Fabric Runtimes | +|-----------|--------------------------|-----------------------|---------------------------|-------------------------------|---------------------------| +| 4.41.0 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\*, 16.4 LTS | 1.3.\* | +| 4.40.0 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.39.0 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.38.0 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.37.2 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.37.1 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.37.0 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.36.1 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.36.0 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.35.0 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.34.0 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.33.1 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.33.0 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.32.1 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.32.0 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.31.0 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.30.0 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | +| 4.29.0 | 3.5.0 | [8, 11] | 2.12 | 14.\*, 15.\* | | + +Note: Java 8 prior to version 8u371 support is deprecated as of Spark 3.5.0. When using the Scala API, it is necessary for applications +to use the same version of Scala that Spark was compiled for. + +#### azure-cosmos-spark_3-4_2-12 +| Connector | Supported Spark Versions | Supported JVM Versions | Supported Scala Versions | Supported Databricks Runtimes | Supported Fabric Runtimes | +|-----------|--------------------------|------------------------|--------------------------|-------------------------------|---------------------------| +| 4.41.0 | 3.4.0 - 3.4.1 | [8, 11] | 2.12 | 13.\* | | +| 4.40.0 | 3.4.0 - 3.4.1 | [8, 11] | 2.12 | 13.\* | | +| 4.39.0 | 3.4.0 - 3.4.1 | [8, 11] | 2.12 | 13.\* | | +| 4.38.0 | 3.4.0 - 3.4.1 | [8, 11] | 2.12 | 13.\* | | +| 4.37.2 | 3.4.0 - 3.4.1 | [8, 11] | 2.12 | 13.\* | | +| 4.37.1 | 3.4.0 - 3.4.1 | [8, 11] | 2.12 | 13.\* | | +| 4.37.0 | 3.4.0 - 3.4.1 | [8, 11] | 2.12 | 13.\* | | +| 4.36.1 | 3.4.0 - 3.4.1 | [8, 11] | 2.12 | 13.\* | | +| 4.36.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.35.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.34.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.33.1 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.33.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.32.1 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.32.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.31.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.30.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.29.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.28.4 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.28.3 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.28.2 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.28.1 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.28.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.27.1 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.27.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.26.1 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.26.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.25.1 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.25.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.24.1 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.24.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.23.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.22.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.21.1 | 3.4.0 | [8, 11] | 2.12 | 13.* | | +| 4.21.0 | 3.4.0 | [8, 11] | 2.12 | 13.* | | + +#### azure-cosmos-spark_3-3_2-12 +| Connector | Supported Spark Versions | Supported JVM Versions | Supported Scala Versions | Supported Databricks Runtimes | +|-----------|--------------------------|------------------------|--------------------------|-------------------------------| +| 4.41.0 | 3.3.0 - 3.3.2 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.40.0 | 3.3.0 - 3.3.2 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.39.0 | 3.3.0 - 3.3.2 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.38.0 | 3.3.0 - 3.3.2 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.37.2 | 3.3.0 - 3.3.2 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.37.1 | 3.3.0 - 3.3.2 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.37.0 | 3.3.0 - 3.3.2 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.36.1 | 3.3.0 - 3.3.2 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.36.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.35.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.34.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.33.1 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.33.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.32.1 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.32.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.31.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.30.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.29.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.28.4 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.28.3 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.28.2 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.28.1 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.28.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.27.1 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.27.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.26.1 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.26.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.25.1 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.25.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.24.1 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.24.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.23.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.22.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.21.1 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.21.0 | 3.3.0 | [8, 11] | 2.12 | 11.\*, 12.\* | +| 4.20.0 | 3.3.0 | [8, 11] | 2.12 | 11.\* | +| 4.19.0 | 3.3.0 | [8, 11] | 2.12 | 11.\* | +| 4.18.2 | 3.3.0 | [8, 11] | 2.12 | 11.\* | +| 4.18.1 | 3.3.0 | [8, 11] | 2.12 | 11.\* | +| 4.18.0 | 3.3.0 | [8, 11] | 2.12 | 11.\* | +| 4.17.2 | 3.3.0 | [8, 11] | 2.12 | 11.\* | +| 4.17.0 | 3.3.0 | [8, 11] | 2.12 | 11.\* | +| 4.16.0 | 3.3.0 | [8, 11] | 2.12 | 11.\* | +| 4.15.0 | 3.3.0 | [8, 11] | 2.12 | 11.\* | + +### Download + +You can use the maven coordinate of the jar to auto install the Spark Connector to your Databricks Runtime from Maven: +`com.azure.cosmos.spark:azure-cosmos-spark_3-5_2-12:4.41.0` + +You can also integrate against Cosmos DB Spark Connector in your SBT project: +```scala +libraryDependencies += "com.azure.cosmos.spark" % "azure-cosmos-spark_3-5_2-12" % "4.41.0" +``` + +Cosmos DB Spark Connector is available on [Maven Central Repo](https://central.sonatype.com/search?namespace=com.azure.cosmos.spark). + +#### General + +If you encounter any bug, please file an issue [here](https://github.com/Azure/azure-sdk-for-java/issues/new). + +To suggest a new feature or changes that could be made, file an issue the same way you would for a bug. + +### License +This project is under MIT license and uses and repackages other third party libraries as an uber jar. +See [NOTICE.txt](https://github.com/Azure/azure-sdk-for-java/blob/main/NOTICE.txt). + +### Contributing + +This project welcomes contributions and suggestions. Most contributions require you to agree to a +[Contributor License Agreement (CLA)][cla] declaring that you have the right to, and actually do, grant us the rights +to use your contribution. + +When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate +the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to +do this once across all repos using our CLA. + +This project has adopted the [Microsoft Open Source Code of Conduct][coc]. For more information see the [Code of Conduct FAQ][coc_faq] +or contact [opencode@microsoft.com][coc_contact] with any additional questions or comments. + + +[source_code]: src +[cosmos_introduction]: https://learn.microsoft.com/azure/cosmos-db/ +[cosmos_docs]: https://learn.microsoft.com/azure/cosmos-db/introduction +[jdk]: https://learn.microsoft.com/java/azure/jdk/?view=azure-java-stable +[maven]: https://maven.apache.org/ +[cla]: https://cla.microsoft.com +[coc]: https://opensource.microsoft.com/codeofconduct/ +[coc_faq]: https://opensource.microsoft.com/codeofconduct/faq/ +[coc_contact]: mailto:opencode@microsoft.com +[azure_subscription]: https://azure.microsoft.com/free/ +[samples]: https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/azure-spring-data-cosmos/src/samples/java/com/azure/spring/data/cosmos +[sql_api_query]: https://learn.microsoft.com/azure/cosmos-db/sql-api-sql-query +[local_emulator]: https://learn.microsoft.com/azure/cosmos-db/local-emulator +[local_emulator_export_ssl_certificates]: https://learn.microsoft.com/azure/cosmos-db/local-emulator-export-ssl-certificates +[azure_cosmos_db_partition]: https://learn.microsoft.com/azure/cosmos-db/partition-data +[sql_queries_in_cosmos]: https://learn.microsoft.com/azure/cosmos-db/tutorial-query-sql-api +[sql_queries_getting_started]: https://learn.microsoft.com/azure/cosmos-db/sql-query-getting-started diff --git a/sdk/cosmos/azure-cosmos-spark_3-5_2-13/pom.xml b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/pom.xml new file mode 100644 index 000000000000..c91292394edc --- /dev/null +++ b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/pom.xml @@ -0,0 +1,171 @@ + + + 4.0.0 + + com.azure.cosmos.spark + azure-cosmos-spark_3-5 + 0.0.1-beta.1 + ../azure-cosmos-spark_3-5 + + com.azure.cosmos.spark + azure-cosmos-spark_3-5_2-13 + 4.43.0-beta.1 + jar + https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/cosmos/azure-cosmos-spark_3-5_2-13 + OLTP Spark 3.5 Connector for Azure Cosmos DB SQL API + OLTP Spark 3.5 Connector for Azure Cosmos DB SQL API + + scm:git:https://github.com/Azure/azure-sdk-for-java.git/sdk/cosmos/azure-cosmos-spark_3-5_2-13 + + https://github.com/Azure/azure-sdk-for-java/sdk/cosmos/azure-cosmos-spark_3-5_2-13 + + + Microsoft Corporation + http://microsoft.com + + + + The MIT License (MIT) + http://opensource.org/licenses/MIT + repo + + + + + microsoft + Microsoft Corporation + + + + false + 2.13 + 2.13.17 + 0.9.1 + 0.8.0 + 3.2.2 + 3.2.3 + 3.2.3 + 5.0.0 + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.6.1 + + + add-sources + generate-sources + + add-source + + + + ${basedir}/../azure-cosmos-spark_3/src/main/scala + ${basedir}/../azure-cosmos-spark_3-5/src/main/scala + ${basedir}/src/main/scala + + + + + add-test-sources + generate-test-sources + + add-test-source + + + + ${basedir}/../azure-cosmos-spark_3/src/test/scala + ${basedir}/../azure-cosmos-spark_3-5/src/test/scala + ${basedir}/src/test/scala + + + + + add-resources + generate-resources + + add-resource + + + + ${basedir}/../azure-cosmos-spark_3/src/main/resources + ${basedir}/../azure-cosmos-spark_3-5/src/main/resources + ${basedir}/src/main/resources + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.6.1 + + + + + + + spark-e2e_3-5_2-13 + + + ${basedir}/scalastyle_config.xml + + + spark-e2e_3-5_2-13 + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.3 + + + **/*.* + **/*Test.* + **/*Suite.* + **/*Spec.* + + true + + + + org.scalatest + scalatest-maven-plugin + 2.1.0 + + ${scalatest.argLine} + ${project.build.directory}/surefire-reports + . + SparkTestSuite.txt + (ITest|Test|Spec|Suite) + + + + test + + test + + + + + + + + + java9-plus + + [9,) + + + --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false + + + + diff --git a/sdk/cosmos/azure-cosmos-spark_3-5_2-13/scalastyle_config.xml b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/scalastyle_config.xml new file mode 100644 index 000000000000..7a8ad2823fb8 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/scalastyle_config.xml @@ -0,0 +1,130 @@ + + Scalastyle standard configuration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/main/resources/azure-cosmos-spark.properties b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/main/resources/azure-cosmos-spark.properties new file mode 100644 index 000000000000..ca812989b4f2 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/main/resources/azure-cosmos-spark.properties @@ -0,0 +1,2 @@ +name=${project.artifactId} +version=${project.version} diff --git a/sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/test/resources/META-INF/services/com.azure.cosmos.spark.CosmosClientBuilderInterceptor b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/test/resources/META-INF/services/com.azure.cosmos.spark.CosmosClientBuilderInterceptor new file mode 100644 index 000000000000..0d43a5bfc657 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/test/resources/META-INF/services/com.azure.cosmos.spark.CosmosClientBuilderInterceptor @@ -0,0 +1 @@ +com.azure.cosmos.spark.TestCosmosClientBuilderInterceptor \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/test/resources/META-INF/services/com.azure.cosmos.spark.CosmosClientInterceptor b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/test/resources/META-INF/services/com.azure.cosmos.spark.CosmosClientInterceptor new file mode 100644 index 000000000000..e2239720776d --- /dev/null +++ b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/test/resources/META-INF/services/com.azure.cosmos.spark.CosmosClientInterceptor @@ -0,0 +1 @@ +com.azure.cosmos.spark.TestFaultInjectionClientInterceptor \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/test/resources/META-INF/services/com.azure.cosmos.spark.WriteOnRetryCommitInterceptor b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/test/resources/META-INF/services/com.azure.cosmos.spark.WriteOnRetryCommitInterceptor new file mode 100644 index 000000000000..c60cbf2f14e4 --- /dev/null +++ b/sdk/cosmos/azure-cosmos-spark_3-5_2-13/src/test/resources/META-INF/services/com.azure.cosmos.spark.WriteOnRetryCommitInterceptor @@ -0,0 +1 @@ +com.azure.cosmos.spark.TestWriteOnRetryCommitInterceptor \ No newline at end of file diff --git a/sdk/cosmos/azure-cosmos-spark_3/dev/README.md b/sdk/cosmos/azure-cosmos-spark_3/dev/README.md index d15bf4113612..30ba9fbfc0db 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/dev/README.md +++ b/sdk/cosmos/azure-cosmos-spark_3/dev/README.md @@ -46,6 +46,7 @@ mvn -e -DskipTests -Dgpg.skip -Dmaven.javadoc.skip=true -Dcodesnippet.skip=true mvn -e -DskipTests -Dgpg.skip -Dmaven.javadoc.skip=true -Dcodesnippet.skip=true -Dspotbugs.skip=true -Dcheckstyle.skip=true -Drevapi.skip=true -pl ,azure-cosmos-spark_3-3_2-12 clean install mvn -e -DskipTests -Dgpg.skip -Dmaven.javadoc.skip=true -Dcodesnippet.skip=true -Dspotbugs.skip=true -Dcheckstyle.skip=true -Drevapi.skip=true -pl ,azure-cosmos-spark_3-4_2-12 clean install mvn -e -DskipTests -Dgpg.skip -Dmaven.javadoc.skip=true -Dcodesnippet.skip=true -Dspotbugs.skip=true -Dcheckstyle.skip=true -Drevapi.skip=true -pl ,azure-cosmos-spark_3-5_2-12 clean install +mvn -e -DskipTests -Dgpg.skip -Dmaven.javadoc.skip=true -Dcodesnippet.skip=true -Dspotbugs.skip=true -Dcheckstyle.skip=true -Drevapi.skip=true -pl ,azure-cosmos-spark_3-5_2-13 clean install ``` Take these files: diff --git a/sdk/cosmos/azure-cosmos-spark_3/pom.xml b/sdk/cosmos/azure-cosmos-spark_3/pom.xml index e7b846207ee5..3dc770578e67 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/pom.xml +++ b/sdk/cosmos/azure-cosmos-spark_3/pom.xml @@ -38,7 +38,20 @@ ${cosmos.spark.skip} ${cosmos.spark.skip} - 3.1 + 3.3 + + 2.12 + 2.12.19 + 3.3.0 + 3.4.0 + 3.5.0 + 0.9.1 + 0.8.0 + 3.2.2 + 3.2.3 + 3.2.3 + 5.0.0 + 2.18.4 @@ -52,7 +65,7 @@ org.scala-lang scala-library - 2.12.19 + ${scala.version} provided @@ -72,13 +85,13 @@ org.scala-lang.modules - scala-java8-compat_2.12 - 0.8.0 + scala-java8-compat_${scala.binary.version} + ${scala-java8-compat.version} io.projectreactor - reactor-scala-extensions_2.12 - 0.8.0 + reactor-scala-extensions_${scala.binary.version} + ${reactor-scala-extensions.version} io.projectreactor @@ -170,26 +183,26 @@ org.scalatest - scalatest_2.12 - 3.2.2 + scalatest_${scala.binary.version} + ${scalatest.version} test org.scalatest - scalatest-flatspec_2.12 - 3.2.3 + scalatest-flatspec_${scala.binary.version} + ${scalatest-flatspec.version} test org.scalactic - scalactic_2.12 - 3.2.3 + scalactic_${scala.binary.version} + ${scalactic.version} test org.scalamock - scalamock_2.12 - 5.0.0 + scalamock_${scala.binary.version} + ${scalamock.version} test @@ -279,20 +292,25 @@ org.apache.commons:commons-lang3:[3.18.0] org.slf4j:slf4j-api:[1.7.36] - org.apache.spark:spark-sql_2.12:[3.3.0] - org.apache.spark:spark-sql_2.12:[3.4.0] - org.apache.spark:spark-sql_2.12:[3.5.0] - org.scala-lang:scala-library:[2.12.19] - org.scala-lang.modules:scala-java8-compat_2.12:[0.8.0] - io.projectreactor:reactor-scala-extensions_2.12:[0.8.0] - org.scalatest:scalatest_2.12:[3.2.2] + org.apache.spark:spark-sql_2.12:[${spark33.version}] + org.apache.spark:spark-sql_2.12:[${spark34.version}] + org.apache.spark:spark-sql_2.12:[${spark35.version}] + org.apache.spark:spark-sql_2.13:[${spark35.version}] + org.scala-lang:scala-library:[${scala.version}] + org.scala-lang.modules:scala-java8-compat_2.12:[${scala-java8-compat.version}] + org.scala-lang.modules:scala-java8-compat_2.13:[${scala-java8-compat.version}] + io.projectreactor:reactor-scala-extensions_2.12:[${reactor-scala-extensions.version}] + io.projectreactor:reactor-scala-extensions_2.13:[${reactor-scala-extensions.version}] + org.scalatest:scalatest_2.12:[${scalatest.version}] + org.scalatest:scalatest_2.13:[${scalatest.version}] org.apache.maven.plugins:maven-antrun-plugin:[3.1.0] net.alchim31.maven:scala-maven-plugin:[4.8.1] org.scalastyle:scalastyle-maven-plugin:[1.0.0] com.fasterxml.jackson.core:jackson-databind:[2.18.4] com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.18.4] com.fasterxml.jackson.module:jackson-module-afterburner:[2.18.4] - com.fasterxml.jackson.module:jackson-module-scala_2.12:[2.18.4] + com.fasterxml.jackson.module:jackson-module-scala_2.12:[${scala-jackson.version}] + com.fasterxml.jackson.module:jackson-module-scala_2.13:[${scala-jackson.version}] io.micrometer:micrometer-registry-azure-monitor:[1.15.1] io.micrometer:micrometer-core:[1.15.1] com.microsoft.azure:applicationinsights-core:[2.6.4] @@ -381,7 +399,7 @@ 1.8 1.8 - 2.12.19 + ${scala.version} diff --git a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosCatalogBase.scala b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosCatalogBase.scala index 27a69b012eef..3da6ea1cb0b9 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosCatalogBase.scala +++ b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosCatalogBase.scala @@ -604,7 +604,7 @@ class CosmosCatalogBase v.viewName.equals(viewName)) match { case Some(existingView) => val updatedViewDefinitionsSnapshot: Array[ViewDefinition] = - (ArrayBuffer(viewDefinitions: _*) - existingView).toArray + ArrayBuffer(viewDefinitions: _*).filterNot(_ == existingView).toArray if (viewRepositorySnapshot.add( lastBatchId + 1, diff --git a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosClientMetrics.scala b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosClientMetrics.scala index 99f906ff4a2e..05defc0884ed 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosClientMetrics.scala +++ b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosClientMetrics.scala @@ -80,7 +80,7 @@ private[spark] object CosmosClientMetrics extends BasicLoggingTrait { override protected def nullGaugeValue: java.lang.Double = Double.NaN - override protected def close(): Unit = { + override def close(): Unit = { super.close() slf4JReporter match { diff --git a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosItemIdentityHelper.scala b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosItemIdentityHelper.scala index bc149f9623c8..c91b732d7b63 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosItemIdentityHelper.scala +++ b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosItemIdentityHelper.scala @@ -6,6 +6,7 @@ package com.azure.cosmos.spark import com.azure.cosmos.implementation.routing.PartitionKeyInternal import com.azure.cosmos.implementation.{ImplementationBridgeHelpers, Utils} import com.azure.cosmos.models.{CosmosItemIdentity, PartitionKey} +import com.azure.cosmos.spark.diagnostics.BasicLoggingTrait import java.util @@ -13,7 +14,7 @@ import java.util import scala.collection.JavaConverters._ // scalastyle:on underscore.import -private[spark] object CosmosItemIdentityHelper { +private[spark] object CosmosItemIdentityHelper extends BasicLoggingTrait { // pattern will be recognized // 1. id(idValue).pk(partitionKeyValue) // diff --git a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosTableSchemaInferrer.scala b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosTableSchemaInferrer.scala index 41af8d70cef9..0b7d46dae134 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosTableSchemaInferrer.scala +++ b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/CosmosTableSchemaInferrer.scala @@ -163,7 +163,7 @@ private object CosmosTableSchemaInferrer .limit(cosmosInferenceConfig.inferSchemaSamplingSize) .collect(Collectors.toList[ObjectNode]()) - schema = Some(inferSchema(feedResponseList.asScala, + schema = Some(inferSchema(feedResponseList.asScala.toSeq, cosmosInferenceConfig.inferSchemaQuery.isDefined || cosmosInferenceConfig.includeSystemProperties, cosmosInferenceConfig.inferSchemaQuery.isDefined || cosmosInferenceConfig.includeTimestamp, cosmosInferenceConfig.allowNullForInferredProperties)) diff --git a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/PointWriter.scala b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/PointWriter.scala index 45d45e033e53..8f07bf5339d5 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/PointWriter.scala +++ b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/PointWriter.scala @@ -145,7 +145,7 @@ private class PointWriter(container: CosmosAsyncContainer, executeAsync(() => createWithRetry(partitionKeyValue, objectNode, createOperation)) .onComplete { case Success(_) => - promise.success(Unit) + promise.success(()) pendingPointWrites.remove(promise.future) log.logItemWriteCompletion(createOperation) case Failure(e) => @@ -167,7 +167,7 @@ private class PointWriter(container: CosmosAsyncContainer, executeAsync(() => upsertWithRetry(partitionKeyValue, objectNode, upsertOperation)) .onComplete { case Success(_) => - promise.success(Unit) + promise.success(()) pendingPointWrites.remove(promise.future) log.logItemWriteCompletion(upsertOperation) case Failure(e) => @@ -191,7 +191,7 @@ private class PointWriter(container: CosmosAsyncContainer, executeAsync(() => deleteWithRetry(partitionKeyValue, objectNode, onlyIfNotModified, deleteOperation)) .onComplete { case Success(_) => - promise.success(Unit) + promise.success(()) pendingPointWrites.remove(promise.future) log.logItemWriteCompletion(deleteOperation) case Failure(e) => @@ -214,7 +214,7 @@ private class PointWriter(container: CosmosAsyncContainer, executeAsync(() => patchWithRetry(partitionKeyValue, objectNode, patchOperation, ignoreNotFound)) .onComplete { case Success(_) => - promise.success(Unit) + promise.success(()) pendingPointWrites.remove(promise.future) log.logItemWriteCompletion(patchOperation) case Failure(e) => @@ -241,7 +241,7 @@ private class PointWriter(container: CosmosAsyncContainer, executeAsync(() => replaceIfNotModifiedWithRetry(partitionKeyValue, objectNode, etag, replaceOperation)) .onComplete { case Success(_) => - promise.success(Unit) + promise.success(()) pendingPointWrites.remove(promise.future) log.logItemWriteCompletion(replaceOperation) case Failure(e) => @@ -648,7 +648,7 @@ private class PointWriter(container: CosmosAsyncContainer, override def call(): Unit = { try { work() - future.complete(Unit) + future.complete(()) } catch { case e: Exception => future.completeExceptionally(e) diff --git a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/TransientIOErrorsRetryingReadManyIterator.scala b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/TransientIOErrorsRetryingReadManyIterator.scala index 39053c668574..c51c5c1226e1 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/TransientIOErrorsRetryingReadManyIterator.scala +++ b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/TransientIOErrorsRetryingReadManyIterator.scala @@ -59,7 +59,7 @@ private[spark] class TransientIOErrorsRetryingReadManyIterator[TSparkRow] while (returnValue.isEmpty) { if (readManyFilterBatchIterator.hasNext) { // fetch items for the next readMany filter batch - val readManyFilterBatch = readManyFilterBatchIterator.next() + val readManyFilterBatch = readManyFilterBatchIterator.next().toList returnValue = TransientErrorsRetryPolicy.executeWithRetry( () => hasNextInternalCore(readManyFilterBatch), diff --git a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/catalog/CosmosCatalogCosmosSDKClient.scala b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/catalog/CosmosCatalogCosmosSDKClient.scala index d4e7e07f73f7..0ee2162eabd0 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/catalog/CosmosCatalogCosmosSDKClient.scala +++ b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/catalog/CosmosCatalogCosmosSDKClient.scala @@ -4,7 +4,8 @@ package com.azure.cosmos.spark.catalog import com.azure.cosmos.CosmosAsyncClient -import com.azure.cosmos.models.{CosmosContainerProperties, ExcludedPath, FeedRange, IncludedPath, IndexingMode, IndexingPolicy, ModelBridgeInternal, PartitionKeyDefinition, PartitionKeyDefinitionVersion, PartitionKind, SparkModelBridgeInternal, ThroughputProperties} +import com.azure.cosmos.models.{CosmosContainerProperties => ModelsCosmosContainerProperties, ExcludedPath, FeedRange, IncludedPath, IndexingMode, IndexingPolicy, ModelBridgeInternal, PartitionKeyDefinition, PartitionKeyDefinitionVersion, PartitionKind, SparkModelBridgeInternal, ThroughputProperties} +import com.azure.cosmos.spark.catalog.{CosmosContainerProperties => CatalogCosmosContainerProperties} import com.azure.cosmos.spark.diagnostics.BasicLoggingTrait import com.azure.cosmos.spark.{ContainerFeedRangesCache, CosmosConstants, Exceptions} import org.apache.spark.sql.connector.catalog.{NamespaceChange, TableChange} @@ -21,6 +22,8 @@ import java.util.Collections import scala.collection.JavaConverters._ // scalastyle:on underscore.import + + private[spark] case class CosmosCatalogCosmosSDKClient(cosmosAsyncClient: CosmosAsyncClient) extends CosmosCatalogClient with BasicLoggingTrait { @@ -80,15 +83,15 @@ private[spark] case class CosmosCatalogCosmosSDKClient(cosmosAsyncClient: Cosmos val partitionKeyDefinition = getPartitionKeyDefinition(containerProperties) val indexingPolicy = getIndexingPolicy(containerProperties) - val cosmosContainerProperties = new CosmosContainerProperties(containerName, partitionKeyDefinition) + val cosmosContainerProperties = new ModelsCosmosContainerProperties(containerName, partitionKeyDefinition) cosmosContainerProperties.setIndexingPolicy(indexingPolicy) - CosmosContainerProperties.getDefaultTtlInSeconds(containerProperties) match { + CatalogCosmosContainerProperties.getDefaultTtlInSeconds(containerProperties) match { case Some(ttl) => cosmosContainerProperties.setDefaultTimeToLiveInSeconds(ttl) case None => } - CosmosContainerProperties.getAnalyticalStoreTtlInSeconds(containerProperties) match { + CatalogCosmosContainerProperties.getAnalyticalStoreTtlInSeconds(containerProperties) match { case Some(ttl) => cosmosContainerProperties.setAnalyticalStoreTimeToLiveInSeconds(ttl) case None => } @@ -147,15 +150,15 @@ private[spark] case class CosmosCatalogCosmosSDKClient(cosmosAsyncClient: Cosmos cosmosAsyncClient.getDatabase(databaseName).read().asScala.`then`() private def getIndexingPolicy(containerProperties: Map[String, String]): IndexingPolicy = { - val indexingPolicySpecification = CosmosContainerProperties.getIndexingPolicy(containerProperties) + val indexingPolicySpecification = CatalogCosmosContainerProperties.getIndexingPolicy(containerProperties) //scalastyle:on multiple.string.literals - if (CosmosContainerProperties.AllPropertiesIndexingPolicyName.equalsIgnoreCase(indexingPolicySpecification)) { + if (CatalogCosmosContainerProperties.AllPropertiesIndexingPolicyName.equalsIgnoreCase(indexingPolicySpecification)) { new IndexingPolicy() .setAutomatic(true) .setIndexingMode(IndexingMode.CONSISTENT) .setIncludedPaths(util.Arrays.asList(new IncludedPath("/*"))) .setExcludedPaths(util.Arrays.asList(new ExcludedPath(raw"""/"_etag"/?"""))) - } else if (CosmosContainerProperties.OnlySystemPropertiesIndexingPolicyName.equalsIgnoreCase(indexingPolicySpecification)) { + } else if (CatalogCosmosContainerProperties.OnlySystemPropertiesIndexingPolicyName.equalsIgnoreCase(indexingPolicySpecification)) { new IndexingPolicy() .setAutomatic(true) .setIndexingMode(IndexingMode.CONSISTENT) @@ -168,42 +171,38 @@ private[spark] case class CosmosCatalogCosmosSDKClient(cosmosAsyncClient: Cosmos } private def getPartitionKeyDefinition(containerProperties: Map[String, String]): PartitionKeyDefinition = { - val partitionKeyPath = CosmosContainerProperties.getPartitionKeyPath(containerProperties) + val partitionKeyPath = CatalogCosmosContainerProperties.getPartitionKeyPath(containerProperties) val partitionKeyDef = new PartitionKeyDefinition val paths = new util.ArrayList[String] val pathList = partitionKeyPath.split(",").toList if (pathList.size >= 2) { - partitionKeyDef.setKind(CosmosContainerProperties.getPartitionKeyKind(containerProperties) match { - case Some(pkKind) => { - if (pkKind == PartitionKind.HASH.toString) { - throw new IllegalArgumentException("PartitionKind HASH is not supported for multi-hash partition key") - } - PartitionKind.MULTI_HASH - } + partitionKeyDef.setKind(CatalogCosmosContainerProperties.getPartitionKeyKind(containerProperties) match { + case Some(pkKind) => + if (pkKind == PartitionKind.HASH.toString) { + throw new IllegalArgumentException("PartitionKind HASH is not supported for multi-hash partition key") + } + PartitionKind.MULTI_HASH case None => PartitionKind.MULTI_HASH }) - partitionKeyDef.setVersion(CosmosContainerProperties.getPartitionKeyVersion(containerProperties) match { + partitionKeyDef.setVersion(CatalogCosmosContainerProperties.getPartitionKeyVersion(containerProperties) match { case Some(pkVersion) => - { - if (pkVersion == PartitionKeyDefinitionVersion.V1.toString) { - throw new IllegalArgumentException("PartitionKeyVersion V1 is not supported for multi-hash partition key") - } - PartitionKeyDefinitionVersion.V2 + if (pkVersion == PartitionKeyDefinitionVersion.V1.toString) { + throw new IllegalArgumentException("PartitionKeyVersion V1 is not supported for multi-hash partition key") } + PartitionKeyDefinitionVersion.V2 case None => PartitionKeyDefinitionVersion.V2 }) pathList.foreach(path => paths.add(path.trim)) } else { - partitionKeyDef.setKind(CosmosContainerProperties.getPartitionKeyKind(containerProperties) match { - case Some(pkKind) => { - if (pkKind == PartitionKind.MULTI_HASH.toString) { - throw new IllegalArgumentException("PartitionKind MULTI_HASH is not supported for single-hash partition key") - } - PartitionKind.HASH - } + partitionKeyDef.setKind(CatalogCosmosContainerProperties.getPartitionKeyKind(containerProperties) match { + case Some(pkKind) => + if (pkKind == PartitionKind.MULTI_HASH.toString) { + throw new IllegalArgumentException("PartitionKind MULTI_HASH is not supported for single-hash partition key") + } + PartitionKind.HASH case None => PartitionKind.HASH }) - CosmosContainerProperties.getPartitionKeyVersion(containerProperties) match { + CatalogCosmosContainerProperties.getPartitionKeyVersion(containerProperties) match { case Some(pkVersion) => partitionKeyDef.setVersion(PartitionKeyDefinitionVersion.valueOf(pkVersion)) case None => } @@ -278,10 +277,10 @@ private[spark] case class CosmosCatalogCosmosSDKClient(cosmosAsyncClient: Cosmos // scalastyle:off method.length private def generateTblProperties ( - metadata: (CosmosContainerProperties, List[FeedRange], Option[(ThroughputProperties, Boolean)]) + metadata: (ModelsCosmosContainerProperties, List[FeedRange], Option[(ThroughputProperties, Boolean)]) ): util.HashMap[String, String] = { - val containerProperties: CosmosContainerProperties = metadata._1 + val containerProperties: ModelsCosmosContainerProperties = metadata._1 val feedRanges: List[FeedRange] = metadata._2 val throughputPropertiesOption: Option[(ThroughputProperties, Boolean)] = metadata._3 diff --git a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/udf/GetCosmosItemIdentityValue.scala b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/udf/GetCosmosItemIdentityValue.scala index f8c2a7b7dac9..45259f6b6a66 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/udf/GetCosmosItemIdentityValue.scala +++ b/sdk/cosmos/azure-cosmos-spark_3/src/main/scala/com/azure/cosmos/spark/udf/GetCosmosItemIdentityValue.scala @@ -20,9 +20,9 @@ class GetCosmosItemIdentityValue extends UDF2[String, Object, String] { requireNotNull(partitionKeyValue, "partitionKeyValue") partitionKeyValue match { - // for subpartitions case - case wrappedArray: mutable.WrappedArray[Any] => - CosmosItemIdentityHelper.getCosmosItemIdentityValueString(id, wrappedArray.map(_.asInstanceOf[Object]).toList) + // for subpartitions case - Seq covers both WrappedArray (Scala 2.12) and ArraySeq (Scala 2.13) + case seq: Seq[Any] => + CosmosItemIdentityHelper.getCosmosItemIdentityValueString(id, seq.map(_.asInstanceOf[Object]).toList) case _ => CosmosItemIdentityHelper.getCosmosItemIdentityValueString(id, List(partitionKeyValue)) } } diff --git a/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/CosmosConfigSpec.scala b/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/CosmosConfigSpec.scala index c73bdb027fc4..0144b468582b 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/CosmosConfigSpec.scala +++ b/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/CosmosConfigSpec.scala @@ -252,7 +252,7 @@ class CosmosConfigSpec extends UnitSpec with BasicLoggingTrait { case otherError: Throwable => throw otherError } - val userCfgMissingArmEndpoint = userConfig.toMap.filterKeys(_ != "spark.cosmos.account.azureEnvironment.mANagement") + val userCfgMissingArmEndpoint = userConfig.toMap.filter(_._1 != "spark.cosmos.account.azureEnvironment.mANagement") try { CosmosAccountConfig.parseCosmosAccountConfig(userCfgMissingArmEndpoint) throw new IllegalStateException("Should never reach here when ARM endpoint config is missing") diff --git a/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/CosmosPartitionPlannerITest.scala b/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/CosmosPartitionPlannerITest.scala index 78262b17455f..8826c6d46fe4 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/CosmosPartitionPlannerITest.scala +++ b/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/CosmosPartitionPlannerITest.scala @@ -20,7 +20,7 @@ import java.util import java.util.UUID import java.util.concurrent.atomic.{AtomicInteger, AtomicLong} import scala.collection.mutable.ArrayBuffer -import scala.jdk.CollectionConverters.asScalaBufferConverter +import scala.jdk.CollectionConverters._ class CosmosPartitionPlannerITest extends UnitSpec @@ -386,7 +386,7 @@ class CosmosPartitionPlannerITest val alwaysThrow = false partitions.foreach { - case _: CosmosInputPartition => Unit + case _: CosmosInputPartition => () case _ => assert(alwaysThrow, "Unexpected partition type") } partitions should have size expectedPartitionCount diff --git a/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/FilterAnalyzerSpec.scala b/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/FilterAnalyzerSpec.scala index 659dd0782399..949384815fb1 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/FilterAnalyzerSpec.scala +++ b/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/FilterAnalyzerSpec.scala @@ -53,7 +53,7 @@ class FilterAnalyzerSpec extends UnitSpec { EqualTo("physicist", "Schrodinger"), In("isCatAlive", Array(true, false))) val analyzedQuery = filterProcessorWithoutCustomQuery.analyze(filters) analyzedQuery.filtersNotSupportedByCosmos shouldBe empty - analyzedQuery.filtersToBePushedDownToCosmos.toIterable should contain theSameElementsAs filters.toList + analyzedQuery.filtersToBePushedDownToCosmos.toArray should contain theSameElementsAs filters.toList val query = analyzedQuery.cosmosParametrizedQuery query.queryText shouldEqual "SELECT * FROM r WHERE r['physicist']=@param0 AND r['isCatAlive'] IN (@param1,@param2)" @@ -223,7 +223,7 @@ class FilterAnalyzerSpec extends UnitSpec { EqualTo("physicist", "Schrodinger"), In("isCatAlive", Array(true, false))) val analyzedQuery = filterProcessorWithCustomQuery.analyze(filters) analyzedQuery.filtersToBePushedDownToCosmos shouldBe empty - analyzedQuery.filtersNotSupportedByCosmos.toIterable should contain theSameElementsAs filters.toList + analyzedQuery.filtersNotSupportedByCosmos.toArray should contain theSameElementsAs filters.toList val query = analyzedQuery.cosmosParametrizedQuery query.queryText shouldEqual queryText @@ -238,7 +238,7 @@ class FilterAnalyzerSpec extends UnitSpec { val analyzedFilters = filterProcessorWithoutCustomQuery.analyze(filters) analyzedFilters.filtersToBePushedDownToCosmos shouldBe empty - analyzedFilters.filtersNotSupportedByCosmos.toIterable should contain theSameElementsAs filters.toList + analyzedFilters.filtersNotSupportedByCosmos.toArray should contain theSameElementsAs filters.toList analyzedFilters.cosmosParametrizedQuery.queryText shouldEqual QueryFilterAnalyzer.rootParameterizedQuery.queryText analyzedFilters.readManyFiltersOpt.isDefined shouldBe false } diff --git a/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/SparkE2EBulkWriteITest.scala b/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/SparkE2EBulkWriteITest.scala index 0ad43de74e30..a1be10199ed9 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/SparkE2EBulkWriteITest.scala +++ b/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/SparkE2EBulkWriteITest.scala @@ -114,7 +114,7 @@ class SparkE2EBulkWriteITest toBeIngested += s"record_$i" } - val df = toBeIngested.toDF("id") + val df = toBeIngested.toSeq.toDF("id") var bytesWrittenSnapshot = 0L var recordsWrittenSnapshot = 0L diff --git a/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/SparkE2EChangeFeedITest.scala b/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/SparkE2EChangeFeedITest.scala index 6c82a92f59be..85d46a8e4032 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/SparkE2EChangeFeedITest.scala +++ b/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/SparkE2EChangeFeedITest.scala @@ -20,7 +20,7 @@ import java.time.Duration import java.util.UUID import scala.collection.mutable import scala.collection.mutable.ArrayBuffer -import scala.jdk.CollectionConverters.asScalaBufferConverter +import scala.jdk.CollectionConverters._ class SparkE2EChangeFeedITest extends IntegrationSpec @@ -248,7 +248,6 @@ class SparkE2EChangeFeedITest val cosmosMasterKey = TestConfigurations.MASTER_KEY CosmosClientMetrics.meterRegistry.isDefined shouldEqual true - val meterRegistry = CosmosClientMetrics.meterRegistry.get val container = cosmosClient.getDatabase(cosmosDatabase).getContainer(cosmosContainer) val sinkContainerName = cosmosClient @@ -535,8 +534,10 @@ class SparkE2EChangeFeedITest val collectedFrame = groupedFrame.collect() collectedFrame.foreach(row => { - val wrappedArray = row.get(1).asInstanceOf[mutable.WrappedArray[String]] - val array = wrappedArray.array + val array = row.get(1) match { + case seq: Seq[String] => seq.toArray + case _ => throw new IllegalArgumentException("Unexpected type of array") + } row.get(0) match { case "create" => validateArraysUnordered(createdObjectIds, array) @@ -859,7 +860,7 @@ class SparkE2EChangeFeedITest hdfs.copyToLocalFile(true, new Path(startOffsetFileLocation), new Path(startOffsetFileBackupLocation)) hdfs.exists(new Path(startOffsetFileLocation)) shouldEqual false - var remainingFromLastBatchOfTen = 10; + var remainingFromLastBatchOfTen = 10 while(remainingFromLastBatchOfTen > 0) { hdfs.copyToLocalFile(true, new Path(startOffsetFileBackupLocation), new Path(startOffsetFileLocation)) hdfs.delete(new Path(latestOffsetFileLocation), true) diff --git a/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/TestUtils.scala b/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/TestUtils.scala index 8eadf4261287..e5040944932a 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/TestUtils.scala +++ b/sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/TestUtils.scala @@ -25,10 +25,7 @@ import java.util.UUID import java.util.concurrent.atomic.AtomicInteger import javax.annotation.concurrent.NotThreadSafe import scala.collection.mutable.ListBuffer -import scala.jdk.CollectionConverters.iterableAsScalaIterableConverter -// scalastyle:off underscore.import -import scala.collection.JavaConverters._ -// scalastyle:on underscore.import +import scala.jdk.CollectionConverters._ // extending class will have a pre-created spark session @NotThreadSafe // marking this as not thread safe because we have to stop Spark Context in some unit tests diff --git a/sdk/cosmos/azure-cosmos-spark_3/test-databricks/databricks-jar-install.sh b/sdk/cosmos/azure-cosmos-spark_3/test-databricks/databricks-jar-install.sh index d361a49014ef..d0a16daa4f67 100644 --- a/sdk/cosmos/azure-cosmos-spark_3/test-databricks/databricks-jar-install.sh +++ b/sdk/cosmos/azure-cosmos-spark_3/test-databricks/databricks-jar-install.sh @@ -3,7 +3,9 @@ CLUSTER_NAME=$1 AVOID_DBFS=$2 JARPATH=$3 -STORAGE_ACCOUNT_KEY=$4 +STORAGE_ACCOUNT_NAME=$4 +STORAGE_ACCOUNT_KEY=$5 +JAR_NAME=$6 [[ -z "$CLUSTER_NAME" ]] && exit 1 [[ -z "$JARPATH" ]] && exit 1 @@ -45,13 +47,13 @@ echo "Avoid DBFS: $AVOID_DBFS" # DATABRICKS_RUNTIME_VERSION is not populated in the environment and version comparison is messy in bash # Using cluster name for the cluster that was created with 16.4 if [[ "${AVOID_DBFS,,}" == "true" ]]; then - account=oltpsparkcijarstore + account=$STORAGE_ACCOUNT_NAME - echo "Uploading jar '$JARPATH/$JARFILE' to Azure Storage account oltpsparkcijarstore (ephemeral tenant) container jarstore BLOB jars/azure-cosmos-spark_3-5_2-12-latest-ci-candidate.jar" - az storage blob upload --account-name oltpsparkcijarstore --account-key $STORAGE_ACCOUNT_KEY --container-name jarstore --name jars/azure-cosmos-spark_3-5_2-12-latest-ci-candidate.jar --file $JARPATH/$JARFILE --type block --overwrite true --only-show-errors + echo "Uploading jar '$JARPATH/$JARFILE' to Azure Storage account $STORAGE_ACCOUNT_NAME (ephemeral tenant) container jarstore BLOB jars/$JAR_NAME" + az storage blob upload --account-name $STORAGE_ACCOUNT_NAME --account-key $STORAGE_ACCOUNT_KEY --container-name jarstore --name jars/$JAR_NAME --file $JARPATH/$JARFILE --type block --overwrite true --only-show-errors if [ $? -eq 0 ]; then - echo "Successfully uploaded JAR to oltpsparkcijarstore (ephemeral tenant)." + echo "Successfully uploaded JAR to $STORAGE_ACCOUNT_NAME (ephemeral tenant)." echo "Rebooting cluster to install new library via init script" else echo "Failed to upload JAR to Workspace Files." diff --git a/sdk/cosmos/ci.yml b/sdk/cosmos/ci.yml index 2f094d0ec3b9..2e1c845dae37 100644 --- a/sdk/cosmos/ci.yml +++ b/sdk/cosmos/ci.yml @@ -18,6 +18,7 @@ trigger: - sdk/cosmos/azure-cosmos-spark_3-4_2-12/ - sdk/cosmos/azure-cosmos-spark_3-5/ - sdk/cosmos/azure-cosmos-spark_3-5_2-12/ + - sdk/cosmos/azure-cosmos-spark_3-5_2-13/ - sdk/cosmos/fabric-cosmos-spark-auth_3/ - sdk/cosmos/azure-cosmos-test/ - sdk/cosmos/azure-cosmos-tests/ @@ -33,6 +34,7 @@ trigger: - sdk/cosmos/azure-cosmos-spark_3-3_2-12/pom.xml - sdk/cosmos/azure-cosmos-spark_3-4_2-12/pom.xml - sdk/cosmos/azure-cosmos-spark_3-5_2-12/pom.xml + - sdk/cosmos/azure-cosmos-spark_3-5_2-13/pom.xml - sdk/cosmos/azure-cosmos-spark_3-5/pom.xml - sdk/cosmos/fabric-cosmos-spark-auth_3/pom.xml - sdk/cosmos/azure-cosmos-kafka-connect/pom.xml @@ -59,6 +61,7 @@ pr: - sdk/cosmos/azure-cosmos-spark_3-4_2-12/ - sdk/cosmos/azure-cosmos-spark_3-5/ - sdk/cosmos/azure-cosmos-spark_3-5_2-12/ + - sdk/cosmos/azure-cosmos-spark_3-5_2-13/ - sdk/cosmos/fabric-cosmos-spark-auth_3/ - sdk/cosmos/faq/ - sdk/cosmos/azure-cosmos-kafka-connect/ @@ -72,6 +75,7 @@ pr: - sdk/cosmos/azure-cosmos-spark_3-4_2-12/pom.xml - sdk/cosmos/azure-cosmos-spark_3-5/pom.xml - sdk/cosmos/azure-cosmos-spark_3-5_2-12/pom.xml + - sdk/cosmos/azure-cosmos-spark_3-5_2-13/pom.xml - sdk/cosmos/fabric-cosmos-spark-auth_3/pom.xml - sdk/cosmos/azure-cosmos-test/pom.xml - sdk/cosmos/azure-cosmos-tests/pom.xml @@ -93,10 +97,14 @@ parameters: displayName: 'azure-cosmos-spark_3-4_2-12' type: boolean default: true - - name: release_azurecosmosspark35 + - name: release_azurecosmosspark35_scala212 displayName: 'azure-cosmos-spark_3-5_2-12' type: boolean default: true + - name: release_azurecosmosspark35_scala213 + displayName: 'azure-cosmos-spark_3-5_2-13' + type: boolean + default: true - name: release_fabriccosmossparkauth3 displayName: 'fabric-cosmos-spark-auth_3' type: boolean @@ -140,11 +148,18 @@ extends: releaseInBatch: ${{ parameters.release_azurecosmosspark34 }} - name: azure-cosmos-spark_3-5_2-12 groupId: com.azure.cosmos.spark - safeName: azurecosmosspark35 + safeName: azurecosmosspark35scala212 + uberJar: true + skipPublishDocGithubIo: true + skipPublishDocMs: true + releaseInBatch: ${{ parameters.release_azurecosmosspark35_scala212 }} + - name: azure-cosmos-spark_3-5_2-13 + groupId: com.azure.cosmos.spark + safeName: azurecosmosspark35scala213 uberJar: true skipPublishDocGithubIo: true skipPublishDocMs: true - releaseInBatch: ${{ parameters.release_azurecosmosspark35 }} + releaseInBatch: ${{ parameters.release_azurecosmosspark35_scala213 }} - name: fabric-cosmos-spark-auth_3 groupId: com.azure.cosmos.spark safeName: fabriccosmossparkauth3 diff --git a/sdk/cosmos/fabric-cosmos-spark-auth_3/pom.xml b/sdk/cosmos/fabric-cosmos-spark-auth_3/pom.xml index 94d7f17c86ad..45524afbe974 100644 --- a/sdk/cosmos/fabric-cosmos-spark-auth_3/pom.xml +++ b/sdk/cosmos/fabric-cosmos-spark-auth_3/pom.xml @@ -176,7 +176,7 @@ org.slf4j:slf4j-api:[1.7.36] org.scala-lang:scala-library:[2.12.19] - org.scala-lang.modules:scala-java8-compat_2.12:[0.8.0] + org.scala-lang.modules:scala-java8-compat_2.12:[0.9.1] org.scalatest:scalatest_2.12:[3.2.2] org.apache.maven.plugins:maven-antrun-plugin:[3.1.0] org.scalastyle:scalastyle-maven-plugin:[1.0.0] diff --git a/sdk/cosmos/pom.xml b/sdk/cosmos/pom.xml index c486b2fe9849..81b2db7ca53e 100644 --- a/sdk/cosmos/pom.xml +++ b/sdk/cosmos/pom.xml @@ -18,6 +18,7 @@ azure-cosmos-spark_3-4_2-12 azure-cosmos-spark_3-5 azure-cosmos-spark_3-5_2-12 + azure-cosmos-spark_3-5_2-13 azure-cosmos-test azure-cosmos-tests azure-cosmos-kafka-connect diff --git a/sdk/cosmos/spark.databricks.yml b/sdk/cosmos/spark.databricks.yml index 50b10d49190f..e7044941e9c9 100644 --- a/sdk/cosmos/spark.databricks.yml +++ b/sdk/cosmos/spark.databricks.yml @@ -34,6 +34,10 @@ parameters: type: string - name: JarReadOnlySasUri type: string + - name: JarStorageAccountName + type: string + - name: JarName + type: string stages: - stage: displayName: 'Spark Databricks integration ${{ parameters.ClusterName }} - ${{ parameters.SparkVersion }}' @@ -91,7 +95,7 @@ stages: displayName: Importing Jars inputs: filePath: $(build.sourcesdirectory)/sdk/cosmos/azure-cosmos-spark_3/test-databricks/databricks-jar-install.sh - arguments: '${{ parameters.ClusterName }} ${{ parameters.AvoidDBFS }} $(build.sourcesdirectory)/sdk/cosmos/${{ parameters.SparkVersion }}/target ${{ parameters.JarStorageAccountKey }}' + arguments: '${{ parameters.ClusterName }} ${{ parameters.AvoidDBFS }} $(build.sourcesdirectory)/sdk/cosmos/${{ parameters.SparkVersion }}/target ${{ parameters.JarStorageAccountName }} ${{ parameters.JarStorageAccountKey }} ${{ parameters.JarName }}' - task: Bash@3 displayName: Importing and executing notebooks inputs: @@ -135,6 +139,6 @@ stages: fi env: JAR_URL: '${{ parameters.JarReadOnlySasUri }}' - JAR_NAME: 'azure-cosmos-spark_3-5_2-12-latest-ci-candidate.jar' + JAR_NAME: '${{ parameters.SparkVersion }}-latest-ci-candidate.jar' JAR_CHECK_SUM: $(JarCheckSum) AVOID_DBFS: ${{ parameters.AvoidDBFS }} diff --git a/sdk/cosmos/spark.yml b/sdk/cosmos/spark.yml index 465a66078343..0dcfd657d0ae 100644 --- a/sdk/cosmos/spark.yml +++ b/sdk/cosmos/spark.yml @@ -26,6 +26,8 @@ stages: ClusterName: 'oltp-ci-spark33-2workers-ds3v2' JarStorageAccountKey: $(spark-databricks-cosmos-spn-clientIdCert) JarReadOnlySasUri: $(spark-databricks-cosmos-spn-clientCertBase64) + JarStorageAccountName: 'oltpsparkcijarstore1225' + JarName: 'azure-cosmos-spark_3-5_2-12-latest-ci-candidate.jar' - template: /sdk/cosmos/spark.databricks.yml parameters: CosmosEndpointMsi: $(spark-databricks-cosmos-endpoint-msi) @@ -44,6 +46,8 @@ stages: ClusterName: 'oltp-ci-spark34-2workers-ds3v2' JarStorageAccountKey: $(spark-databricks-cosmos-spn-clientIdCert) JarReadOnlySasUri: $(spark-databricks-cosmos-spn-clientCertBase64) + JarStorageAccountName: 'oltpsparkcijarstore1225' + JarName: 'azure-cosmos-spark_3-5_2-12-latest-ci-candidate.jar' - template: /sdk/cosmos/spark.databricks.yml parameters: CosmosEndpointMsi: $(spark-databricks-cosmos-endpoint-msi) @@ -63,6 +67,8 @@ stages: AvoidDBFS: false JarStorageAccountKey: $(spark-databricks-cosmos-spn-clientIdCert) JarReadOnlySasUri: $(spark-databricks-cosmos-spn-clientCertBase64) + JarStorageAccountName: 'oltpsparkcijarstore1225' + JarName: 'azure-cosmos-spark_3-5_2-12-latest-ci-candidate.jar' - template: /sdk/cosmos/spark.databricks.yml parameters: CosmosEndpointMsi: $(spark-databricks-cosmos-endpoint-msi) @@ -82,4 +88,26 @@ stages: AvoidDBFS: true JarStorageAccountKey: $(spark-databricks-cosmos-spn-clientIdCert) JarReadOnlySasUri: $(spark-databricks-cosmos-spn-clientCertBase64) - + JarStorageAccountName: 'oltpsparkcijarstore1225' + JarName: 'azure-cosmos-spark_3-5_2-12-latest-ci-candidate.jar' + - template: /sdk/cosmos/spark.databricks.yml + parameters: + CosmosEndpointMsi: $(spark-databricks-cosmos-endpoint-msi) + CosmosEndpoint: $(spark-databricks-cosmos-endpoint) + CosmosKey: $(spark-databricks-cosmos-key) + DatabricksEndpoint: $(spark-databricks-endpoint-with-msi) + SubscriptionId: '8fba6d4f-7c37-4d13-9063-fd58ad2b86e2' + TenantId: '72f988bf-86f1-41af-91ab-2d7cd011db47' + ResourceGroupName: 'oltp-spark-ci' + ClientId: $(spark-databricks-cosmos-spn-clientId) + ClientSecret: $(spark-databricks-cosmos-spn-clientSecret) + CosmosContainerName: 'sampleContainer7' + CosmosDatabaseName: 'sampleDB7' + DatabricksToken: $(spark-databricks-token-with-msi) + SparkVersion: 'azure-cosmos-spark_3-5_2-13' + ClusterName: 'oltp-ci-spark35-2workers-ds3v2-16.4-scala_2.13' + AvoidDBFS: true + JarStorageAccountKey: $(spark-databricks-cosmos-spn-clientIdCert) + JarReadOnlySasUri: $(spark-databricks-token) + JarStorageAccountName: 'oltpsparkcijarstore1225' + JarName: 'azure-cosmos-spark_3-5_2-13-latest-ci-candidate.jar' From 305647c95fc1b4f9dc8d59b5c933335dc5e28959 Mon Sep 17 00:00:00 2001 From: Alan Zimmer <48699787+alzimmermsft@users.noreply.github.com> Date: Thu, 8 Jan 2026 13:58:41 -0500 Subject: [PATCH 35/41] Transcription test cleanup and Test Proxy bug work around (#47641) * Attempt to resolve transcription failures during From Source * Add in workaround --- .../azure-ai-speech-transcription/assets.json | 7 +- .../azure-ai-speech-transcription/pom.xml | 19 ++ .../TranscriptionAsyncClientTest.java | 219 +++++------------ .../TranscriptionClientTest.java | 163 ++++--------- .../TranscriptionClientTestBase.java | 222 +++--------------- .../transcription => resources}/sample.wav | Bin 6 files changed, 179 insertions(+), 451 deletions(-) rename sdk/transcription/azure-ai-speech-transcription/src/test/{java/com/azure/ai/speech/transcription => resources}/sample.wav (100%) diff --git a/sdk/transcription/azure-ai-speech-transcription/assets.json b/sdk/transcription/azure-ai-speech-transcription/assets.json index 5c6f05bf06f2..0678580b84a5 100644 --- a/sdk/transcription/azure-ai-speech-transcription/assets.json +++ b/sdk/transcription/azure-ai-speech-transcription/assets.json @@ -1 +1,6 @@ -{"AssetsRepo":"Azure/azure-sdk-assets","AssetsRepoPrefixPath":"java","TagPrefix":"java/transcription/azure-ai-speech-transcription","Tag": "java/transcription/azure-ai-speech-transcription_c82ca4aec0"} +{ + "AssetsRepo": "Azure/azure-sdk-assets", + "AssetsRepoPrefixPath": "java", + "TagPrefix": "java/transcription/azure-ai-speech-transcription", + "Tag": "java/transcription/azure-ai-speech-transcription_c82ca4aec0" +} diff --git a/sdk/transcription/azure-ai-speech-transcription/pom.xml b/sdk/transcription/azure-ai-speech-transcription/pom.xml index 993a6f6163eb..95f0578d6489 100644 --- a/sdk/transcription/azure-ai-speech-transcription/pom.xml +++ b/sdk/transcription/azure-ai-speech-transcription/pom.xml @@ -68,4 +68,23 @@ Code generated by Microsoft (R) TypeSpec Code Generator. test + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.3 + + + + + 300000 + 300000 + 300000 + + + + + diff --git a/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionAsyncClientTest.java b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionAsyncClientTest.java index 2d46371ee25d..c7caaaf99383 100644 --- a/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionAsyncClientTest.java +++ b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionAsyncClientTest.java @@ -6,19 +6,30 @@ import com.azure.ai.speech.transcription.models.ProfanityFilterMode; import com.azure.ai.speech.transcription.models.TranscriptionDiarizationOptions; import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; import com.azure.core.exception.HttpResponseException; import com.azure.core.http.HttpHeaderName; import com.azure.core.http.rest.RequestOptions; +import com.azure.core.util.BinaryData; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import reactor.test.StepVerifier; import java.util.Arrays; +import java.util.Collections; + +import static org.junit.jupiter.api.Assertions.fail; /** * Tests for TranscriptionAsyncClient (asynchronous client). */ class TranscriptionAsyncClientTest extends TranscriptionClientTestBase { + private TranscriptionAsyncClient client; - private final Boolean sync = false; // All tests in this file use the async client + @BeforeEach + public void setupTest() { + this.client = configureBuilder(true, true).buildAsyncClient(); + } /*********************************************************************************** * @@ -28,184 +39,95 @@ class TranscriptionAsyncClientTest extends TranscriptionClientTestBase { @Test public void testTranscribeAsyncBasicFromFile() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options = new TranscriptionOptions((String) null); - - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeAsyncBasicFromFile", fromAudioFile()); } @Test public void testTranscribeAsyncWithLanguageFromFile() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US")); - - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeAsyncWithLanguageFromFile", + fromAudioFile().setLocales(Collections.singletonList("en-US"))); } @Test public void testTranscribeAsyncWithMultipleLanguagesFromFile() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options - = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US", "es-ES", "fr-FR")); - - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeAsyncWithMultipleLanguagesFromFile", + fromAudioFile().setLocales(Arrays.asList("en-US", "es-ES", "fr-FR"))); } @Test public void testTranscribeAsyncWithDiarizationFromFile() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionDiarizationOptions diarizationOptions = new TranscriptionDiarizationOptions().setMaxSpeakers(5); - - TranscriptionOptions options - = new TranscriptionOptions((String) null).setDiarizationOptions(diarizationOptions); - - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeAsyncWithDiarizationFromFile", + fromAudioFile().setDiarizationOptions(new TranscriptionDiarizationOptions().setMaxSpeakers(5))); } @Test public void testTranscribeAsyncWithProfanityFilterFromFile() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options - = new TranscriptionOptions((String) null).setProfanityFilterMode(ProfanityFilterMode.MASKED); - - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeAsyncWithProfanityFilterFromFile", + fromAudioFile().setProfanityFilterMode(ProfanityFilterMode.MASKED)); } @Test public void testTranscribeAsyncWithChannelsFromFile() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options = new TranscriptionOptions((String) null).setActiveChannels(Arrays.asList(0)); - - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeAsyncWithChannelsFromFile", + fromAudioFile().setActiveChannels(Collections.singletonList(0))); } @Test public void testTranscribeAsyncAllOptionsFromFile() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionDiarizationOptions diarizationOptions = new TranscriptionDiarizationOptions().setMaxSpeakers(5); - - TranscriptionOptions options = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US")) - .setDiarizationOptions(diarizationOptions) + TranscriptionOptions options = fromAudioFile().setLocales(Collections.singletonList("en-US")) + .setDiarizationOptions(new TranscriptionDiarizationOptions().setMaxSpeakers(5)) .setProfanityFilterMode(ProfanityFilterMode.MASKED) - .setActiveChannels(Arrays.asList(0)); + .setActiveChannels(Collections.singletonList(0)); - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeAsyncAllOptionsFromFile", options); } @Test public void testTranscribeAsyncBasicFromFileWithResponse() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options = new TranscriptionOptions((String) null); - RequestOptions requestOptions - = new RequestOptions().addHeader(HttpHeaderName.fromString("x-custom-header"), "custom-value"); - - doTranscription(methodName, sync, true, audioFile, options, requestOptions); + transcribeAndVerifyResponse("testTranscribeAsyncBasicFromFileWithResponse", fromAudioFile(), + new RequestOptions().addHeader(HttpHeaderName.fromString("x-custom-header"), "custom-value")); } @Test public void testTranscribeAsyncWithAllOptionsFromFileWithResponse() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionDiarizationOptions diarizationOptions = new TranscriptionDiarizationOptions().setMaxSpeakers(5); - - TranscriptionOptions options - = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US", "es-ES")) - .setDiarizationOptions(diarizationOptions) - .setProfanityFilterMode(ProfanityFilterMode.REMOVED) - .setActiveChannels(Arrays.asList(0, 1)); + TranscriptionOptions options = fromAudioFile().setLocales(Arrays.asList("en-US", "es-ES")) + .setDiarizationOptions(new TranscriptionDiarizationOptions().setMaxSpeakers(5)) + .setProfanityFilterMode(ProfanityFilterMode.REMOVED) + .setActiveChannels(Arrays.asList(0, 1)); RequestOptions requestOptions = new RequestOptions().addHeader(HttpHeaderName.fromString("x-custom-header"), "custom-value") .addQueryParam("test-param", "test-value"); - doTranscription(methodName, sync, true, audioFile, options, requestOptions); + transcribeAndVerifyResponse("testTranscribeAsyncWithAllOptionsFromFileWithResponse", options, requestOptions); } @Test public void testTranscribeAsyncWithAudioUrl() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - // Using a publicly accessible sample audio file from Azure samples String audioUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-speech-sdk/master/sampledata/audiofiles/aboutSpeechSdk.wav"; - TranscriptionOptions options = new TranscriptionOptions(audioUrl).setLocales(Arrays.asList("en-US")); - // For URL-based transcription, we don't pass the local audio file path - doTranscriptionWithUrl(methodName, sync, options); + transcribeAndVerifyResult("testTranscribeAsyncWithAudioUrl", + new TranscriptionOptions(audioUrl).setLocales(Collections.singletonList("en-US"))); } @Test public void testTranscribeAsyncWithProfanityModeMasked() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options - = new TranscriptionOptions((String) null).setProfanityFilterMode(ProfanityFilterMode.MASKED); - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeAsyncWithProfanityModeMasked", + fromAudioFile().setProfanityFilterMode(ProfanityFilterMode.MASKED)); } @Test public void testTranscribeAsyncWithProfanityModeRemoved() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options - = new TranscriptionOptions((String) null).setProfanityFilterMode(ProfanityFilterMode.REMOVED); - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeAsyncWithProfanityModeTags", + fromAudioFile().setProfanityFilterMode(ProfanityFilterMode.REMOVED)); } @Test public void testTranscribeAsyncWithProfanityModeTags() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options - = new TranscriptionOptions((String) null).setProfanityFilterMode(ProfanityFilterMode.TAGS); - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeAsyncWithProfanityModeTags", + fromAudioFile().setProfanityFilterMode(ProfanityFilterMode.TAGS)); } /*********************************************************************************** @@ -216,58 +138,47 @@ public void testTranscribeAsyncWithProfanityModeTags() { @Test public void testTranscribeAsyncWithEmptyAudioData() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - // Test with minimal audio data - service should handle gracefully - TranscriptionOptions options = new TranscriptionOptions((String) null); - - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeAsyncWithEmptyAudioData", fromAudioFile()); } @Test public void testTranscribeAsyncWithInvalidLanguageCode() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - // Use invalid language code to trigger service error - TranscriptionOptions options - = new TranscriptionOptions((String) null).setLocales(Arrays.asList("invalid-locale-code")); + TranscriptionOptions options = fromAudioFile().setLocales(Collections.singletonList("invalid-locale-code")); // The service should return a 400 error for invalid locale // doTranscription wraps exceptions in RuntimeException, so we catch that - try { - doTranscription(methodName, sync, false, audioFile, options, null); - // Should not reach here - the above should throw an exception - throw new AssertionError("Expected RuntimeException with HttpResponseException cause but none was thrown"); - } catch (RuntimeException e) { + StepVerifier.create(client.transcribe(options)).verifyErrorSatisfies(e -> { // Expected behavior - verify the cause is HttpResponseException with 400 status - if (!(e.getCause() instanceof HttpResponseException)) { - throw new AssertionError( - "Expected RuntimeException cause to be HttpResponseException but got: " + e.getCause().getClass()); + if (!(e instanceof HttpResponseException)) { + fail("Expected RuntimeException cause to be HttpResponseException but got: " + e.getClass()); } - HttpResponseException httpException = (HttpResponseException) e.getCause(); + HttpResponseException httpException = (HttpResponseException) e; if (httpException.getResponse().getStatusCode() != 400) { - throw new AssertionError( - "Expected 400 status code but got: " + httpException.getResponse().getStatusCode()); + fail("Expected 400 status code but got: " + httpException.getResponse().getStatusCode()); } - } + }); } @Test public void testTranscribeAsyncCancellation() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - // Test cancellation behavior with a normal transcription request - TranscriptionOptions options = new TranscriptionOptions((String) null); + transcribeAndVerifyResult("testTranscribeAsyncCancellation", fromAudioFile()); + } + + private void transcribeAndVerifyResult(String testName, TranscriptionOptions options) { + StepVerifier.create(client.transcribe(options)) + .assertNext(result -> validateTranscriptionResult(testName, result)) + .verifyComplete(); + } - doTranscription(methodName, sync, false, audioFile, options, null); + private void transcribeAndVerifyResponse(String testName, TranscriptionOptions options, + RequestOptions requestOptions) { + BinaryData multipartBody = createMultipartBody(options, requestOptions); + StepVerifier.create(client.transcribeWithResponse(multipartBody, requestOptions)).assertNext(response -> { + printHttpRequestAndResponse(response); + validateTranscriptionResult(testName, response.getValue().toObject(TranscriptionResult.class)); + }).verifyComplete(); } } diff --git a/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTest.java b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTest.java index 0d9b261ccf44..bfa8eea77130 100644 --- a/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTest.java +++ b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTest.java @@ -6,11 +6,16 @@ import com.azure.ai.speech.transcription.models.ProfanityFilterMode; import com.azure.ai.speech.transcription.models.TranscriptionDiarizationOptions; import com.azure.ai.speech.transcription.models.TranscriptionOptions; +import com.azure.ai.speech.transcription.models.TranscriptionResult; import com.azure.core.http.HttpHeaderName; import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.util.BinaryData; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.util.Arrays; +import java.util.Collections; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -18,8 +23,12 @@ * Tests for TranscriptionClient (synchronous client). */ class TranscriptionClientTest extends TranscriptionClientTestBase { + private TranscriptionClient client; - private final Boolean sync = true; // All tests in this file use the sync client + @BeforeEach + public void setupTest() { + this.client = configureBuilder(true, true).buildClient(); + } /*********************************************************************************** * @@ -29,161 +38,84 @@ class TranscriptionClientTest extends TranscriptionClientTestBase { @Test public void testTranscribeSyncBasicFromFile() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options = new TranscriptionOptions((String) null); - - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeSyncBasicFromFile", fromAudioFile()); } @Test public void testTranscribeSyncWithLanguageFromFile() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US")); - - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeSyncWithLanguageFromFile", + fromAudioFile().setLocales(Collections.singletonList("en-US"))); } @Test public void testTranscribeSyncWithMultipleLanguagesFromFile() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options - = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US", "es-ES", "fr-FR")); - - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeSyncWithMultipleLanguagesFromFile", + fromAudioFile().setLocales(Arrays.asList("en-US", "es-ES", "fr-FR"))); } @Test public void testTranscribeSyncWithDiarizationFromFile() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionDiarizationOptions diarizationOptions = new TranscriptionDiarizationOptions().setMaxSpeakers(5); - - TranscriptionOptions options - = new TranscriptionOptions((String) null).setDiarizationOptions(diarizationOptions); - - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeSyncWithDiarizationFromFile", + fromAudioFile().setDiarizationOptions(new TranscriptionDiarizationOptions().setMaxSpeakers(5))); } @Test public void testTranscribeSyncWithProfanityFilterFromFile() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options - = new TranscriptionOptions((String) null).setProfanityFilterMode(ProfanityFilterMode.MASKED); - - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeSyncWithProfanityFilterFromFile", + fromAudioFile().setProfanityFilterMode(ProfanityFilterMode.MASKED)); } @Test public void testTranscribeSyncWithChannelsFromFile() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options = new TranscriptionOptions((String) null).setActiveChannels(Arrays.asList(0)); - - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeSyncWithChannelsFromFile", + fromAudioFile().setActiveChannels(Collections.singletonList(0))); } @Test public void testTranscribeSyncAllOptionsFromFile() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionDiarizationOptions diarizationOptions = new TranscriptionDiarizationOptions().setMaxSpeakers(5); - - TranscriptionOptions options = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US")) - .setDiarizationOptions(diarizationOptions) + TranscriptionOptions options = fromAudioFile().setLocales(Collections.singletonList("en-US")) + .setDiarizationOptions(new TranscriptionDiarizationOptions().setMaxSpeakers(5)) .setProfanityFilterMode(ProfanityFilterMode.MASKED) - .setActiveChannels(Arrays.asList(0)); + .setActiveChannels(Collections.singletonList(0)); - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeSyncAllOptionsFromFile", options); } @Test public void testTranscribeSyncBasicFromFileWithResponse() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options = new TranscriptionOptions((String) null); - RequestOptions requestOptions - = new RequestOptions().addHeader(HttpHeaderName.fromString("x-custom-header"), "custom-value"); - - doTranscription(methodName, sync, true, audioFile, options, requestOptions); + transcribeAndVerifyResponse("testTranscribeSyncBasicFromFileWithResponse", fromAudioFile(), + new RequestOptions().addHeader(HttpHeaderName.fromString("x-custom-header"), "custom-value")); } @Test public void testTranscribeSyncWithAllOptionsFromFileWithResponse() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionDiarizationOptions diarizationOptions = new TranscriptionDiarizationOptions().setMaxSpeakers(5); - - TranscriptionOptions options - = new TranscriptionOptions((String) null).setLocales(Arrays.asList("en-US", "es-ES")) - .setDiarizationOptions(diarizationOptions) - .setProfanityFilterMode(ProfanityFilterMode.REMOVED) - .setActiveChannels(Arrays.asList(0, 1)); + TranscriptionOptions options = fromAudioFile().setLocales(Arrays.asList("en-US", "es-ES")) + .setDiarizationOptions(new TranscriptionDiarizationOptions().setMaxSpeakers(5)) + .setProfanityFilterMode(ProfanityFilterMode.REMOVED) + .setActiveChannels(Arrays.asList(0, 1)); RequestOptions requestOptions = new RequestOptions().addHeader(HttpHeaderName.fromString("x-custom-header"), "custom-value") .addQueryParam("test-param", "test-value"); - doTranscription(methodName, sync, true, audioFile, options, requestOptions); + transcribeAndVerifyResponse("testTranscribeSyncWithAllOptionsFromFileWithResponse", options, requestOptions); } @Test public void testTranscribeSyncWithMultipleChannels() { // Test with multiple channel indices - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - - TranscriptionOptions options = new TranscriptionOptions((String) null).setActiveChannels(Arrays.asList(0, 1)); - - doTranscription(methodName, sync, false, audioFile, options, null); + transcribeAndVerifyResult("testTranscribeSyncWithMultipleChannels", + fromAudioFile().setActiveChannels(Arrays.asList(0, 1))); } @Test public void testTranscribeSyncWithAudioUrl() { - createClient(true, true, sync); - - String methodName = new Object() { - }.getClass().getEnclosingMethod().getName(); - // Using a publicly accessible sample audio file from Azure samples String audioUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-speech-sdk/master/sampledata/audiofiles/aboutSpeechSdk.wav"; - TranscriptionOptions options = new TranscriptionOptions(audioUrl).setLocales(Arrays.asList("en-US")); - // For URL-based transcription, we don't pass the local audio file path - doTranscriptionWithUrl(methodName, sync, options); + transcribeAndVerifyResult("testTranscribeSyncWithAudioUrl", + new TranscriptionOptions(audioUrl).setLocales(Collections.singletonList("en-US"))); } /*********************************************************************************** @@ -194,18 +126,13 @@ public void testTranscribeSyncWithAudioUrl() { @Test public void testTranscribeSyncWithNullOptions() { - createClient(true, true, sync); - // Test that null options throws appropriate exception - assertThrows(NullPointerException.class, () -> { - getClient().transcribe((TranscriptionOptions) null); - }, "Transcribe should throw NullPointerException when options is null"); + assertThrows(NullPointerException.class, () -> client.transcribe((TranscriptionOptions) null), + "Transcribe should throw NullPointerException when options is null"); } @Test public void testTranscribeSyncWithEmptyAudioData() { - createClient(true, true, sync); - // Test with empty audio data - this should result in a service error // Note: Depending on service behavior, this may throw HttpResponseException // The exact behavior should be validated based on actual service responses @@ -213,8 +140,6 @@ public void testTranscribeSyncWithEmptyAudioData() { @Test public void testTranscribeSyncWithInvalidLanguageCode() { - createClient(true, true, sync); - // Note: This test requires actual service call to verify behavior // In PLAYBACK mode, this would replay the recorded error response // Example implementation: @@ -223,4 +148,16 @@ public void testTranscribeSyncWithInvalidLanguageCode() { // doTranscription(methodName, sync, false, audioFile, options, null); // The service should return an error for invalid locale } + + private void transcribeAndVerifyResult(String testName, TranscriptionOptions options) { + validateTranscriptionResult(testName, client.transcribe(options)); + } + + private void transcribeAndVerifyResponse(String testName, TranscriptionOptions options, + RequestOptions requestOptions) { + BinaryData multipartBody = createMultipartBody(options, requestOptions); + Response response = client.transcribeWithResponse(multipartBody, requestOptions); + printHttpRequestAndResponse(response); + validateTranscriptionResult(testName, response.getValue().toObject(TranscriptionResult.class)); + } } diff --git a/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTestBase.java b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTestBase.java index 7a8b8c1ec0f8..10f0417e118b 100644 --- a/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTestBase.java +++ b/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/TranscriptionClientTestBase.java @@ -3,6 +3,7 @@ package com.azure.ai.speech.transcription; +import com.azure.ai.speech.transcription.implementation.MultipartFormDataHelper; import com.azure.ai.speech.transcription.models.AudioFileDetails; import com.azure.ai.speech.transcription.models.TranscriptionOptions; import com.azure.ai.speech.transcription.models.TranscriptionResult; @@ -13,16 +14,13 @@ import com.azure.core.http.policy.HttpLogOptions; import com.azure.core.http.rest.RequestOptions; import com.azure.core.http.rest.Response; -import com.azure.core.test.TestMode; import com.azure.core.test.TestProxyTestBase; import com.azure.core.util.BinaryData; import com.azure.core.util.Configuration; -import com.azure.core.util.logging.ClientLogger; import com.azure.identity.DefaultAzureCredentialBuilder; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Paths; @@ -35,52 +33,34 @@ * Supports both API Key (KeyCredential) and Entra ID (TokenCredential) authentication. */ class TranscriptionClientTestBase extends TestProxyTestBase { - private static final ClientLogger LOGGER = new ClientLogger(TranscriptionClientTestBase.class); + private static final boolean PRINT_RESULTS = false; // Set to true to print results to console window - final Boolean printResults = false; // Set to true to print results to console window + private static final String SAMPLE_WAV_FILE_NAME = "sample.wav"; + private static final byte[] SAMPLE_WAV; - // Sample audio file for testing - final String audioFile = "./src/test/java/com/azure/ai/speech/transcription/sample.wav"; - - // The clients that will be used for tests - private TranscriptionClient client = null; - private TranscriptionAsyncClient asyncClient = null; - - /** - * Sets up the test resources before each test. - */ - @BeforeEach - public void setupTest() { - // Reset clients before each test to ensure clean state - client = null; - asyncClient = null; - } - - /** - * Cleans up test resources after each test. - */ - @AfterEach - public void cleanupTest() { - // Clean up any resources if needed - // Note: The clients don't require explicit cleanup as they are managed by the test framework + static { + try { + SAMPLE_WAV = Files.readAllBytes(Paths + .get(TranscriptionClientTestBase.class.getClassLoader().getResource(SAMPLE_WAV_FILE_NAME).toURI())); + } catch (URISyntaxException | IOException ex) { + throw new RuntimeException("Failed to load audio file for testing.", ex); + } } /** - * Creates a client for testing. + * Configures a {@link TranscriptionClientBuilder} that will be used to create the specific sync or async client for + * testing. * * @param useKeyAuth Whether to use key-based authentication (true) or token-based authentication (false) * @param useRealKey Whether to use a real key from environment variables (true) or a fake key (false). * Only applies when useKeyAuth is true. - * @param sync Whether to create a synchronous client (true) or asynchronous client (false) */ - protected void createClient(Boolean useKeyAuth, Boolean useRealKey, Boolean sync) { - TestMode testMode = getTestMode(); - + protected TranscriptionClientBuilder configureBuilder(boolean useKeyAuth, boolean useRealKey) { // Define endpoint and auth credentials String endpoint = "https://fake-resource-name.cognitiveservices.azure.com"; String key = "00000000000000000000000000000000"; - if (testMode == TestMode.LIVE || testMode == TestMode.RECORD) { + if (!interceptorManager.isPlaybackMode()) { endpoint = Configuration.getGlobalConfiguration().get("SPEECH_ENDPOINT"); assertTrue(endpoint != null && !endpoint.isEmpty(), "Endpoint URL is required to run live tests."); @@ -95,7 +75,7 @@ protected void createClient(Boolean useKeyAuth, Boolean useRealKey, Boolean sync .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS)); // Update the client builder with credentials and recording/playback policies - if (getTestMode() == TestMode.LIVE) { + if (interceptorManager.isLiveMode()) { if (useKeyAuth) { transcriptionClientBuilder.credential(new KeyCredential(key)); } else { @@ -103,7 +83,7 @@ protected void createClient(Boolean useKeyAuth, Boolean useRealKey, Boolean sync TokenCredential credential = new DefaultAzureCredentialBuilder().build(); transcriptionClientBuilder.credential(credential); } - } else if (getTestMode() == TestMode.RECORD) { + } else if (interceptorManager.isRecordMode()) { transcriptionClientBuilder.addPolicy(interceptorManager.getRecordPolicy()); if (useKeyAuth) { transcriptionClientBuilder.credential(new KeyCredential(key)); @@ -111,7 +91,7 @@ protected void createClient(Boolean useKeyAuth, Boolean useRealKey, Boolean sync TokenCredential credential = new DefaultAzureCredentialBuilder().build(); transcriptionClientBuilder.credential(credential); } - } else if (getTestMode() == TestMode.PLAYBACK) { + } else if (interceptorManager.isPlaybackMode()) { transcriptionClientBuilder.httpClient(interceptorManager.getPlaybackClient()); // In playback mode, use a fake key regardless of authentication method transcriptionClientBuilder.credential(new KeyCredential(key)); @@ -126,129 +106,23 @@ protected void createClient(Boolean useKeyAuth, Boolean useRealKey, Boolean sync interceptorManager.removeSanitizers("AZSDK2003", "AZSDK2030", "AZSDK3430", "AZSDK3493"); } - if (sync) { - client = transcriptionClientBuilder.buildClient(); - } else { - asyncClient = transcriptionClientBuilder.buildAsyncClient(); - } + return transcriptionClientBuilder; } - /** - * Performs transcription with audio URL and validates the result. - * - * @param testName A label that uniquely defines the test. Used in console printout. - * @param sync 'true' to use synchronous client, 'false' to use asynchronous client. - * @param options TranscriptionOptions with audioUrl set - */ - protected void doTranscriptionWithUrl(String testName, Boolean sync, TranscriptionOptions options) { - try { - // Verify that audioUrl is set - assertNotNull(options.getAudioUrl(), "AudioUrl must be set for URL-based transcription"); - assertFalse(options.getAudioUrl().isEmpty(), "AudioUrl must not be empty"); - - TranscriptionResult result = null; - if (sync) { - result = client.transcribe(options); - } else { - result = asyncClient.transcribe(options).block(); - } - - validateTranscriptionResult(testName, result); - } catch (Exception e) { - LOGGER.error("Error in test {}: {}", testName, e.getMessage()); - throw new RuntimeException(e); - } + protected TranscriptionOptions fromAudioFile() { + return new TranscriptionOptions( + new AudioFileDetails(BinaryData.fromBytes(SAMPLE_WAV)).setFilename(SAMPLE_WAV_FILE_NAME)); } - /** - * Performs transcription and validates the result. - * - * @param testName A label that uniquely defines the test. Used in console printout. - * @param sync 'true' to use synchronous client, 'false' to use asynchronous client. - * @param transcribeWithResponse 'true' to use transcribeWithResponse(), 'false' to use transcribe(). - * @param audioFilePath Path to the audio file to transcribe - * @param options TranscriptionOptions (can be null) - * @param requestOptions RequestOptions (can be null) - */ - protected void doTranscription(String testName, Boolean sync, Boolean transcribeWithResponse, String audioFilePath, - TranscriptionOptions options, RequestOptions requestOptions) { - - try { - // Load audio file - byte[] audioData = Files.readAllBytes(Paths.get(audioFilePath)); - AudioFileDetails audioFileDetails - = new AudioFileDetails(BinaryData.fromBytes(audioData)).setFilename(new File(audioFilePath).getName()); - - // Create new options with audio file details if options is currently using URL or null - if (options.getAudioUrl() == null) { - // Options was created with null, need to create a new one with audio file details - options = new TranscriptionOptions(audioFileDetails).setLocales(options.getLocales()) - .setLocaleModelMapping(options.getLocaleModelMapping()) - .setProfanityFilterMode(options.getProfanityFilterMode()) - .setDiarizationOptions(options.getDiarizationOptions()) - .setActiveChannels(options.getActiveChannels()) - .setEnhancedModeOptions(options.getEnhancedModeOptions()) - .setPhraseListOptions(options.getPhraseListOptions()); - } + protected BinaryData createMultipartBody(TranscriptionOptions options, RequestOptions requestOptions) { + AudioFileDetails audioFileDetails + = new AudioFileDetails(BinaryData.fromBytes(SAMPLE_WAV)).setFilename(SAMPLE_WAV_FILE_NAME); - if (sync) { - TranscriptionResult result = null; - if (!transcribeWithResponse) { - result = client.transcribe(options); - } else { - if (requestOptions == null) { - // Use the new transcribeWithResponse(TranscriptionOptions) convenience method - Response response = client.transcribeWithResponse(options); - printHttpRequestAndResponse(response); - result = response.getValue(); - } else { - // When custom RequestOptions are needed, use the lower-level API - BinaryData multipartBody - = new com.azure.ai.speech.transcription.implementation.MultipartFormDataHelper( - requestOptions) - .serializeJsonField("definition", options) - .serializeFileField("audio", audioFileDetails.getContent(), - audioFileDetails.getContentType(), audioFileDetails.getFilename()) - .end() - .getRequestBody(); - Response response = client.transcribeWithResponse(multipartBody, requestOptions); - printHttpRequestAndResponse(response); - result = response.getValue().toObject(TranscriptionResult.class); - } - } - validateTranscriptionResult(testName, result); - } else { - TranscriptionResult result = null; - if (!transcribeWithResponse) { - result = asyncClient.transcribe(options).block(); - } else { - if (requestOptions == null) { - // Use the new transcribeWithResponse(TranscriptionOptions) convenience method - Response response = asyncClient.transcribeWithResponse(options).block(); - printHttpRequestAndResponse(response); - result = response.getValue(); - } else { - // When custom RequestOptions are needed, use the lower-level API - BinaryData multipartBody - = new com.azure.ai.speech.transcription.implementation.MultipartFormDataHelper( - requestOptions) - .serializeJsonField("definition", options) - .serializeFileField("audio", audioFileDetails.getContent(), - audioFileDetails.getContentType(), audioFileDetails.getFilename()) - .end() - .getRequestBody(); - Response response - = asyncClient.transcribeWithResponse(multipartBody, requestOptions).block(); - printHttpRequestAndResponse(response); - result = response.getValue().toObject(TranscriptionResult.class); - } - } - validateTranscriptionResult(testName, result); - } - } catch (Exception e) { - LOGGER.error("Error in test {}: {}", testName, e.getMessage()); - throw new RuntimeException(e); - } + return new MultipartFormDataHelper(requestOptions).serializeJsonField("definition", options) + .serializeFileField("audio", audioFileDetails.getContent(), audioFileDetails.getContentType(), + audioFileDetails.getFilename()) + .end() + .getRequestBody(); } /** @@ -258,18 +132,17 @@ protected void doTranscription(String testName, Boolean sync, Boolean transcribe * @param result The transcription result to validate */ protected void validateTranscriptionResult(String testName, TranscriptionResult result) { - if (printResults) { + if (PRINT_RESULTS) { System.out.println("\n===== Test: " + testName + " ====="); System.out.println("Duration: " + result.getDuration() + "ms"); if (result.getCombinedPhrases() != null) { - result.getCombinedPhrases().forEach(phrase -> { - System.out.println("Channel " + phrase.getChannel() + ": " + phrase.getText()); - }); + result.getCombinedPhrases() + .forEach(phrase -> System.out.println("Channel " + phrase.getChannel() + ": " + phrase.getText())); } if (result.getPhrases() != null) { - result.getPhrases().forEach(phrase -> { - System.out.println("Phrase: " + phrase.getText() + " (confidence: " + phrase.getConfidence() + ")"); - }); + result.getPhrases() + .forEach(phrase -> System.out + .println("Phrase: " + phrase.getText() + " (confidence: " + phrase.getConfidence() + ")")); } } @@ -305,7 +178,7 @@ protected void validateTranscriptionResult(String testName, TranscriptionResult * @param response The HTTP response */ protected void printHttpRequestAndResponse(Response response) { - if (printResults) { + if (PRINT_RESULTS) { HttpRequest request = response.getRequest(); System.out.println("\n===== HTTP Request ====="); System.out.println(request.getHttpMethod() + " " + request.getUrl()); @@ -317,21 +190,4 @@ protected void printHttpRequestAndResponse(Response response) { } } - /** - * Gets the synchronous client. - * - * @return The TranscriptionClient - */ - protected TranscriptionClient getClient() { - return client; - } - - /** - * Gets the asynchronous client. - * - * @return The TranscriptionAsyncClient - */ - protected TranscriptionAsyncClient getAsyncClient() { - return asyncClient; - } } diff --git a/sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/sample.wav b/sdk/transcription/azure-ai-speech-transcription/src/test/resources/sample.wav similarity index 100% rename from sdk/transcription/azure-ai-speech-transcription/src/test/java/com/azure/ai/speech/transcription/sample.wav rename to sdk/transcription/azure-ai-speech-transcription/src/test/resources/sample.wav From bab3c5b94c355e326390c3bfc0ced99ceb164567 Mon Sep 17 00:00:00 2001 From: Jiarui Guo Date: Thu, 8 Jan 2026 12:59:15 -0800 Subject: [PATCH 36/41] Set release date for text translator 2.0.0-beta.1 (#47664) Co-authored-by: Jiarui Guo --- sdk/translation/azure-ai-translation-text/CHANGELOG.md | 8 ++------ sdk/translation/azure-ai-translation-text/README.md | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/sdk/translation/azure-ai-translation-text/CHANGELOG.md b/sdk/translation/azure-ai-translation-text/CHANGELOG.md index 542660e33105..70a042302e93 100644 --- a/sdk/translation/azure-ai-translation-text/CHANGELOG.md +++ b/sdk/translation/azure-ai-translation-text/CHANGELOG.md @@ -1,10 +1,10 @@ # Release History -## 2.0.0-beta.1 (Unreleased) +## 2.0.0-beta.1 (2026-01-08) ### Features Added -- Added support for the latest Azure AI Translator API, including translations using LLM models, adaptive custom translation, tone variant translations, and gender-specific translations. +- Added support for the Azure AI Translator API 2025-10-01-preview, including translations using LLM models, adaptive custom translation, tone variant translations, and gender-specific translations. - Added `TranslationTarget` class for configuring translation options. ### Breaking Changes @@ -15,10 +15,6 @@ - Removed `SourceText` and `Transliteration` properties in translation responses. - Dictionary, sentence boundaries and text alignments features have been deprecated and relevant classes and properties have been removed. -### Bugs Fixed - -### Other Changes - ## 1.1.7 (2025-10-27) ### Other Changes diff --git a/sdk/translation/azure-ai-translation-text/README.md b/sdk/translation/azure-ai-translation-text/README.md index d955c4b3bb39..7ce7a0351213 100644 --- a/sdk/translation/azure-ai-translation-text/README.md +++ b/sdk/translation/azure-ai-translation-text/README.md @@ -82,7 +82,7 @@ For asynchronous operations use `TextTranslationAsyncClient`. ### Input -A **text element** (`InputTextItem`), is a single unit of input to be processed by the translation models in the Translator service. Operations on `TextTranslationClient` may take a single text element or a collection of text elements. +A **TranslateInputItem** is a single unit of input to be processed by the translation models in the Translator service. Each `TranslateInputItem` defines both the input string to translate and the output specifications for the translation. For text element length limits, maximum requests size, and supported text encoding see [here][translator_limits]. ## Examples From 362b9378e39008c3cabf081d411c932802674e05 Mon Sep 17 00:00:00 2001 From: Ray Chen Date: Thu, 8 Jan 2026 13:36:35 -0800 Subject: [PATCH 37/41] Added instructions for local sdk generation (#47646) --- .github/copilot-instructions.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index ce5b56587f72..fe95eec5e5ba 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -192,6 +192,18 @@ When facing issues, direct users to: - [GitHub Issues](https://github.com/Azure/azure-sdk-for-java/issues/new/choose) - [Stack Overflow with azure-java-sdk tag](https://stackoverflow.com/questions/tagged/azure-java-sdk) +## Local SDK Generation and Package Lifecycle (TypeSpec) + +### AUTHORITATIVE REFERENCE +For all TypeSpec-based SDK workflows (generation, building, validation, testing, versioning, and release preparation), follow #file:../eng/common/instructions/azsdk-tools/local-sdk-workflow.instructions.md + +### DEFAULT BEHAVIORS +- **Repository:** Use the current workspace as the local SDK repository unless the user specifies a different path. +- **Configuration:** Identify `tsp-location.yaml` from files open in the editor. If unclear, ask the user. + +### REQUIRED CONFIRMATIONS +Ask the user for clarification if repository path or configuration file is ambiguous. + ## SDK release For detailed workflow instructions, see [SDK Release](../eng/common/instructions/copilot/sdk-release.instructions.md). From e9cc599f7aa1b832bf4040b4b97a136e48f092fa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 9 Jan 2026 01:21:18 +0000 Subject: [PATCH 38/41] Initial plan From 03d0cf6afb30ae9d9dcddd1d1e48fb992363bdb2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 9 Jan 2026 01:34:28 +0000 Subject: [PATCH 39/41] Fix on_behalf_of token payload issue by flattening duplicate parameters Co-authored-by: Netyyyy <92105726+Netyyyy@users.noreply.github.com> --- ...dJwtBearerGrantRequestEntityConverter.java | 39 +++++++++++++ ...earerGrantRequestEntityConverterTests.java | 56 +++++++++++++++++++ 2 files changed, 95 insertions(+) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverter.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverter.java index 378b13cfc165..24caa1d1857a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverter.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverter.java @@ -3,10 +3,15 @@ package com.azure.spring.cloud.autoconfigure.implementation.aad.security; +import org.springframework.http.RequestEntity; import org.springframework.security.oauth2.client.endpoint.JwtBearerGrantRequest; import org.springframework.security.oauth2.client.endpoint.JwtBearerGrantRequestEntityConverter; +import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; +import java.util.List; +import java.util.Map; + /** * This is a special JWT Bearer flow implementation for Microsoft identify platform. * @@ -22,5 +27,39 @@ protected MultiValueMap createParameters(JwtBearerGrantRequest j parameters.add("requested_token_use", "on_behalf_of"); return parameters; } + + @Override + public RequestEntity convert(JwtBearerGrantRequest jwtBearerGrantRequest) { + // Call the parent convert() method which will run all registered parameter converters + RequestEntity requestEntity = super.convert(jwtBearerGrantRequest); + + // Get the body (parameters) from the request entity + Object body = requestEntity.getBody(); + if (!(body instanceof MultiValueMap)) { + return requestEntity; + } + + @SuppressWarnings("unchecked") + MultiValueMap parameters = (MultiValueMap) body; + + // Flatten multi-valued parameters to single values + // This fixes the issue where multiple converters add the same parameter key, + // causing duplicate values (e.g., grant_type=[value1, value2] instead of grant_type=[value1]) + MultiValueMap flattenedParameters = new LinkedMultiValueMap<>(); + for (Map.Entry> entry : parameters.entrySet()) { + List values = entry.getValue(); + if (values != null && !values.isEmpty()) { + // Use set() to ensure only one value per key + // Take the first value to preserve the base implementation's default + flattenedParameters.set(entry.getKey(), values.get(0)); + } + } + + // Return a new RequestEntity with the flattened parameters + return RequestEntity + .method(requestEntity.getMethod(), requestEntity.getUrl()) + .headers(requestEntity.getHeaders()) + .body(flattenedParameters); + } } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverterTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverterTests.java index ce771c846038..14b504676101 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverterTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverterTests.java @@ -10,11 +10,14 @@ import org.springframework.security.oauth2.core.AuthorizationGrantType; import org.springframework.security.oauth2.jose.jws.JwsAlgorithms; import org.springframework.security.oauth2.jwt.Jwt; +import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import java.time.Instant; +import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; class AadJwtBearerGrantRequestEntityConverterTests { @@ -43,4 +46,57 @@ void requestedTokenUseParameter() { assertTrue(parameters.containsKey("requested_token_use")); assertEquals("on_behalf_of", parameters.getFirst("requested_token_use")); } + + @SuppressWarnings("unchecked") + @Test + void noDuplicateGrantTypeParameterWithAdditionalConverter() { + ClientRegistration clientRegistration = ClientRegistration.withRegistrationId("test") + .clientId("test") + .clientSecret("test-secret") + .authorizationGrantType(AuthorizationGrantType.JWT_BEARER) + .tokenUri("http://localhost/token") + .build(); + Jwt jwt = Jwt.withTokenValue("jwt-token-value") + .header("alg", JwsAlgorithms.RS256) + .claim("sub", "test") + .issuedAt(Instant.ofEpochMilli(Instant.now().toEpochMilli())) + .expiresAt(Instant.ofEpochMilli(Instant.now().plusSeconds(60).toEpochMilli())) + .build(); + JwtBearerGrantRequest request = new JwtBearerGrantRequest(clientRegistration, jwt); + AadJwtBearerGrantRequestEntityConverter converter = + new AadJwtBearerGrantRequestEntityConverter(); + + // Add a parameters converter that might set the grant_type again + // This simulates the scenario where multiple converters provide the same parameter + converter.addParametersConverter(grantRequest -> { + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("grant_type", "urn:ietf:params:oauth:grant-type:jwt-bearer"); + params.add("custom_param", "custom_value"); + return params; + }); + + RequestEntity> entity = + (RequestEntity>) converter.convert(request); + MultiValueMap parameters = entity.getBody(); + + // Verify that grant_type is present + assertTrue(parameters.containsKey("grant_type"), "grant_type parameter should be present"); + + // Verify that grant_type has only one value (not duplicated) + List grantTypeValues = parameters.get("grant_type"); + assertNotNull(grantTypeValues, "grant_type values should not be null"); + assertEquals(1, grantTypeValues.size(), + "grant_type should have exactly one value, not a list with duplicates"); + assertEquals("urn:ietf:params:oauth:grant-type:jwt-bearer", grantTypeValues.get(0), + "grant_type should have the correct value"); + + // Verify custom parameter is present + assertTrue(parameters.containsKey("custom_param"), "custom_param should be present"); + assertEquals("custom_value", parameters.getFirst("custom_param")); + + // Verify requested_token_use is present + assertTrue(parameters.containsKey("requested_token_use"), + "requested_token_use parameter should be present"); + assertEquals("on_behalf_of", parameters.getFirst("requested_token_use")); + } } From 49e69b5cbc3fd2156af1b79500e5d58428b55cff Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 9 Jan 2026 01:37:39 +0000 Subject: [PATCH 40/41] Add clarifying comment about empty parameter handling Co-authored-by: Netyyyy <92105726+Netyyyy@users.noreply.github.com> --- .../aad/security/AadJwtBearerGrantRequestEntityConverter.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverter.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverter.java index 24caa1d1857a..f446d680f342 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverter.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverter.java @@ -53,6 +53,8 @@ public RequestEntity convert(JwtBearerGrantRequest jwtBearerGrantRequest) { // Take the first value to preserve the base implementation's default flattenedParameters.set(entry.getKey(), values.get(0)); } + // Note: Parameters with null or empty value lists are intentionally excluded + // from the request, as per OAuth2 specification } // Return a new RequestEntity with the flattened parameters From 28d242449148535e06997d12e5fe6fb02e1e04e0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 9 Jan 2026 01:38:16 +0000 Subject: [PATCH 41/41] Update CHANGELOG.md with bug fix details Co-authored-by: Netyyyy <92105726+Netyyyy@users.noreply.github.com> --- sdk/spring/spring-cloud-azure-autoconfigure/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/CHANGELOG.md b/sdk/spring/spring-cloud-azure-autoconfigure/CHANGELOG.md index b8c75ef9dc93..c5c3b19c8163 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-autoconfigure/CHANGELOG.md @@ -8,6 +8,8 @@ ### Bugs Fixed +- Fixed duplicate parameter issue in `AadJwtBearerGrantRequestEntityConverter` when using on_behalf_of grant type. Previously, when additional parameter converters were registered, Spring Security's `MultiValueMap.addAll()` would create duplicate values for parameters like `grant_type`, causing authentication failures with error `AADSTS70003: The app requested an unsupported grant type`. The converter now flattens multi-valued parameters to single values after all converters are processed. + ### Other Changes ## 6.1.0 (2025-12-16)