Skip to content

Commit 6d1d6e0

Browse files
Migrate ContainerInstance from generation to main (#22537)
* Move ContainerInstance to main * Create containerGroups-containers.json * Create containerGroups.json --------- Co-authored-by: Beisi Zhou <[email protected]>
1 parent c9a63e3 commit 6d1d6e0

File tree

84 files changed

+327
-256
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+327
-256
lines changed

src/ContainerInstance/Az.ContainerInstance.psd1

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44
# Generated by: Microsoft Corporation
55
#
6-
# Generated on: 3/6/2023
6+
# Generated on: 8/10/2023
77
#
88

99
@{
@@ -125,8 +125,7 @@ PrivateData = @{
125125
# IconUri = ''
126126

127127
# ReleaseNotes of this module
128-
ReleaseNotes = '* Added ''priority'' property to Container Group properties
129-
* Added ''Confidential'' sku type to Container Group Skus'
128+
# ReleaseNotes = ''
130129

131130
# Prerelease string of this module
132131
# Prerelease = ''

src/ContainerInstance/Az.ContainerInstance.psm1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
}
3434

3535
if(-not $accountsModule) {
36-
Write-Error "`nThis module requires $accountsName version 2.7.5 or greater. For installation instructions, please see: https://docs.microsoft.com/powershell/azure/install-az-ps" -ErrorAction Stop
36+
Write-Error "`nThis module requires $accountsName version 2.7.5 or greater. For installation instructions, please see: https://learn.microsoft.com/powershell/azure/install-az-ps" -ErrorAction Stop
3737
} elseif (($accountsModule.Version -lt [System.Version]'2.7.5') -and (-not $localAccounts)) {
3838
Write-Error "`nThis module requires $accountsName version 2.7.5 or greater. An earlier version of Az.Accounts is imported in the current PowerShell session. If you are running test, please try to add the switch '-RegenerateSupportModule' when executing 'test-module.ps1'. Otherwise please open a new PowerShell session and import this module again.`nAdditionally, this error could indicate that multiple incompatible versions of Azure PowerShell modules are installed on your system. For troubleshooting information, please see: https://aka.ms/azps-version-error" -ErrorAction Stop
3939
}

src/ContainerInstance/ContainerInstance.sln

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@ Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio Version 17
44
VisualStudioVersion = 17.0.31903.59
55
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Accounts", "..\Accounts\Accounts\Accounts.csproj", "{1A1084E7-5A00-4FA6-B18F-4BFCA38BE254}"
6+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Accounts", "..\Accounts\Accounts\Accounts.csproj", "{ECF1F067-4F78-4602-8B5B-0921A62735FD}"
77
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AssemblyLoading", "..\Accounts\AssemblyLoading\AssemblyLoading.csproj", "{61EA7453-63B5-4411-9574-6E1E981C70C4}"
8+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AssemblyLoading", "..\Accounts\AssemblyLoading\AssemblyLoading.csproj", "{480C952C-5C5E-4F37-9D00-7AE941D096DC}"
99
EndProject
10-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Authentication", "..\Accounts\Authentication\Authentication.csproj", "{7D43B483-6FA9-497F-9FFC-B4D73EF8BA50}"
10+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Authentication", "..\Accounts\Authentication\Authentication.csproj", "{620242F8-B561-4AD7-AB19-31E2C6DC3E05}"
1111
EndProject
12-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Authentication.ResourceManager", "..\Accounts\Authentication.ResourceManager\Authentication.ResourceManager.csproj", "{EF3A983C-7304-447B-A5F8-1D787D0138D2}"
12+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Authentication.ResourceManager", "..\Accounts\Authentication.ResourceManager\Authentication.ResourceManager.csproj", "{2CFACAA8-39B5-4D51-BDA6-1B4532D1C7C0}"
1313
EndProject
14-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AuthenticationAssemblyLoadContext", "..\Accounts\AuthenticationAssemblyLoadContext\AuthenticationAssemblyLoadContext.csproj", "{3D78805B-070E-47CF-8A42-B8889F3DC2F4}"
14+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AuthenticationAssemblyLoadContext", "..\Accounts\AuthenticationAssemblyLoadContext\AuthenticationAssemblyLoadContext.csproj", "{980F0E51-E2F1-4466-808C-74F560823737}"
1515
EndProject
16-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Authenticators", "..\Accounts\Authenticators\Authenticators.csproj", "{D8759E0E-E6AC-418F-819A-8519CA166BA6}"
16+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Authenticators", "..\Accounts\Authenticators\Authenticators.csproj", "{57E72256-3DCC-4BF8-B1CB-2713DB8BABD6}"
1717
EndProject
18-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Az.ContainerInstance", "Az.ContainerInstance.csproj", "{D42492AA-1029-4F54-92B1-603AEF0205E0}"
18+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Az.ContainerInstance", "Az.ContainerInstance.csproj", "{9E349674-A1EC-47B2-975B-3C7934918FAE}"
1919
EndProject
2020
Global
2121
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -26,33 +26,33 @@ Global
2626
HideSolutionNode = FALSE
2727
EndGlobalSection
2828
GlobalSection(ProjectConfigurationPlatforms) = postSolution
29-
{1A1084E7-5A00-4FA6-B18F-4BFCA38BE254}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
30-
{1A1084E7-5A00-4FA6-B18F-4BFCA38BE254}.Debug|Any CPU.Build.0 = Debug|Any CPU
31-
{1A1084E7-5A00-4FA6-B18F-4BFCA38BE254}.Release|Any CPU.ActiveCfg = Release|Any CPU
32-
{1A1084E7-5A00-4FA6-B18F-4BFCA38BE254}.Release|Any CPU.Build.0 = Release|Any CPU
33-
{61EA7453-63B5-4411-9574-6E1E981C70C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
34-
{61EA7453-63B5-4411-9574-6E1E981C70C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
35-
{61EA7453-63B5-4411-9574-6E1E981C70C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
36-
{61EA7453-63B5-4411-9574-6E1E981C70C4}.Release|Any CPU.Build.0 = Release|Any CPU
37-
{7D43B483-6FA9-497F-9FFC-B4D73EF8BA50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
38-
{7D43B483-6FA9-497F-9FFC-B4D73EF8BA50}.Debug|Any CPU.Build.0 = Debug|Any CPU
39-
{7D43B483-6FA9-497F-9FFC-B4D73EF8BA50}.Release|Any CPU.ActiveCfg = Release|Any CPU
40-
{7D43B483-6FA9-497F-9FFC-B4D73EF8BA50}.Release|Any CPU.Build.0 = Release|Any CPU
41-
{EF3A983C-7304-447B-A5F8-1D787D0138D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
42-
{EF3A983C-7304-447B-A5F8-1D787D0138D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
43-
{EF3A983C-7304-447B-A5F8-1D787D0138D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
44-
{EF3A983C-7304-447B-A5F8-1D787D0138D2}.Release|Any CPU.Build.0 = Release|Any CPU
45-
{3D78805B-070E-47CF-8A42-B8889F3DC2F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
46-
{3D78805B-070E-47CF-8A42-B8889F3DC2F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
47-
{3D78805B-070E-47CF-8A42-B8889F3DC2F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
48-
{3D78805B-070E-47CF-8A42-B8889F3DC2F4}.Release|Any CPU.Build.0 = Release|Any CPU
49-
{D8759E0E-E6AC-418F-819A-8519CA166BA6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
50-
{D8759E0E-E6AC-418F-819A-8519CA166BA6}.Debug|Any CPU.Build.0 = Debug|Any CPU
51-
{D8759E0E-E6AC-418F-819A-8519CA166BA6}.Release|Any CPU.ActiveCfg = Release|Any CPU
52-
{D8759E0E-E6AC-418F-819A-8519CA166BA6}.Release|Any CPU.Build.0 = Release|Any CPU
53-
{D42492AA-1029-4F54-92B1-603AEF0205E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
54-
{D42492AA-1029-4F54-92B1-603AEF0205E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
55-
{D42492AA-1029-4F54-92B1-603AEF0205E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
56-
{D42492AA-1029-4F54-92B1-603AEF0205E0}.Release|Any CPU.Build.0 = Release|Any CPU
29+
{ECF1F067-4F78-4602-8B5B-0921A62735FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
30+
{ECF1F067-4F78-4602-8B5B-0921A62735FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
31+
{ECF1F067-4F78-4602-8B5B-0921A62735FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
32+
{ECF1F067-4F78-4602-8B5B-0921A62735FD}.Release|Any CPU.Build.0 = Release|Any CPU
33+
{480C952C-5C5E-4F37-9D00-7AE941D096DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
34+
{480C952C-5C5E-4F37-9D00-7AE941D096DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
35+
{480C952C-5C5E-4F37-9D00-7AE941D096DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
36+
{480C952C-5C5E-4F37-9D00-7AE941D096DC}.Release|Any CPU.Build.0 = Release|Any CPU
37+
{620242F8-B561-4AD7-AB19-31E2C6DC3E05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
38+
{620242F8-B561-4AD7-AB19-31E2C6DC3E05}.Debug|Any CPU.Build.0 = Debug|Any CPU
39+
{620242F8-B561-4AD7-AB19-31E2C6DC3E05}.Release|Any CPU.ActiveCfg = Release|Any CPU
40+
{620242F8-B561-4AD7-AB19-31E2C6DC3E05}.Release|Any CPU.Build.0 = Release|Any CPU
41+
{2CFACAA8-39B5-4D51-BDA6-1B4532D1C7C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
42+
{2CFACAA8-39B5-4D51-BDA6-1B4532D1C7C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
43+
{2CFACAA8-39B5-4D51-BDA6-1B4532D1C7C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
44+
{2CFACAA8-39B5-4D51-BDA6-1B4532D1C7C0}.Release|Any CPU.Build.0 = Release|Any CPU
45+
{980F0E51-E2F1-4466-808C-74F560823737}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
46+
{980F0E51-E2F1-4466-808C-74F560823737}.Debug|Any CPU.Build.0 = Debug|Any CPU
47+
{980F0E51-E2F1-4466-808C-74F560823737}.Release|Any CPU.ActiveCfg = Release|Any CPU
48+
{980F0E51-E2F1-4466-808C-74F560823737}.Release|Any CPU.Build.0 = Release|Any CPU
49+
{57E72256-3DCC-4BF8-B1CB-2713DB8BABD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
50+
{57E72256-3DCC-4BF8-B1CB-2713DB8BABD6}.Debug|Any CPU.Build.0 = Debug|Any CPU
51+
{57E72256-3DCC-4BF8-B1CB-2713DB8BABD6}.Release|Any CPU.ActiveCfg = Release|Any CPU
52+
{57E72256-3DCC-4BF8-B1CB-2713DB8BABD6}.Release|Any CPU.Build.0 = Release|Any CPU
53+
{9E349674-A1EC-47B2-975B-3C7934918FAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
54+
{9E349674-A1EC-47B2-975B-3C7934918FAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
55+
{9E349674-A1EC-47B2-975B-3C7934918FAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
56+
{9E349674-A1EC-47B2-975B-3C7934918FAE}.Release|Any CPU.Build.0 = Release|Any CPU
5757
EndGlobalSection
5858
EndGlobal

src/ContainerInstance/build-module.ps1

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,10 @@ $null = New-Item -ItemType Directory -Force -Path $examplesFolder
123123

124124
Write-Host -ForegroundColor Green 'Creating cmdlets for specified models...'
125125
$modelCmdlets = @()
126+
$modelCmdletFolder = Join-Path (Join-Path $PSScriptRoot './custom') 'autogen-model-cmdlets'
127+
if (Test-Path $modelCmdletFolder) {
128+
$null = Remove-Item -Force -Recurse -Path $modelCmdletFolder
129+
}
126130
if ($modelCmdlets.Count -gt 0) {
127131
. (Join-Path $PSScriptRoot 'create-model-cmdlets.ps1')
128132
CreateModelCmdlet($modelCmdlets)

src/ContainerInstance/create-model-cmdlets.ps1

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,13 @@ function CreateModelCmdlet {
2323
}
2424

2525
$ModelCsPath = Join-Path (Join-Path $PSScriptRoot 'generated\api') 'Models'
26-
$ModuleName = 'ContainerInstance'
2726
$OutputDir = Join-Path $PSScriptRoot 'custom\autogen-model-cmdlets'
2827
$null = New-Item -ItemType Directory -Force -Path $OutputDir
28+
if (''.length -gt 0) {
29+
$ModuleName = ''
30+
} else {
31+
$ModuleName = 'Az.ContainerInstance'
32+
}
2933

3034
$CsFiles = Get-ChildItem -Path $ModelCsPath -Recurse -Filter *.cs
3135
$Content = ''
@@ -64,10 +68,10 @@ function CreateModelCmdlet {
6468
$ObjectType = $Model
6569
$ObjectTypeWithNamespace = "${Namespace}.${ObjectType}"
6670
# remove duplicated module name
67-
if ($ObjectType.StartsWith($ModuleName)) {
71+
if ($ObjectType.StartsWith('ContainerInstance')) {
6872
$ModulePrefix = ''
6973
} else {
70-
$ModulePrefix = $ModuleName
74+
$ModulePrefix = 'ContainerInstance'
7175
}
7276
$OutputPath = Join-Path -ChildPath "New-Az${ModulePrefix}${ObjectType}Object.ps1" -Path $OutputDir
7377

@@ -158,7 +162,7 @@ Create an in-memory object for ${ObjectType}.
158162
.Outputs
159163
${ObjectTypeWithNamespace}
160164
.Link
161-
https://learn.microsoft.com/powershell/module/az.${ModuleName}/new-Az${ModulePrefix}${ObjectType}Object
165+
https://learn.microsoft.com/powershell/module/${ModuleName}/new-Az${ModulePrefix}${ObjectType}Object
162166
#>
163167
function New-Az${ModulePrefix}${ObjectType}Object {
164168
[OutputType('${ObjectTypeWithNamespace}')]

src/ContainerInstance/custom/InvokeAzContainerInstanceCommand_ExecuteExpanded.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,15 @@ private Task PullResponse()
7171

7272
if (!string.IsNullOrEmpty(result) && PassThru.ToBool()) { WriteObject(result.TrimEnd()); }
7373

74-
}, this._cancellationTokenSource.Token);
74+
}, this._cancellationTokenSource.Token).Unwrap();
7575
}
7676

7777
private Task PushCommand()
7878
{
7979
return Task.Factory.StartNew(async () =>
8080
{
81+
if (Console.IsInputRedirected) return;
82+
8183
StringBuilder input = new StringBuilder();
8284
// Loop until input is entered.
8385
while (socket.State == WebSocketState.Open && !this._cancellationTokenSource.Token.IsCancellationRequested)
@@ -95,7 +97,7 @@ private Task PushCommand()
9597
System.Threading.Thread.Sleep(250);
9698
}
9799

98-
}, this._cancellationTokenSource.Token);
100+
}, this._cancellationTokenSource.Token).Unwrap();
99101

100102
}
101103
}

src/ContainerInstance/custom/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ These provide functionality to our HTTP pipeline and other useful features. In s
3232
### Attributes
3333
For processing the cmdlets, we've created some additional attributes:
3434
- `Microsoft.Azure.PowerShell.Cmdlets.ContainerInstance.DescriptionAttribute`
35-
- Used in C# cmdlets to provide a high-level description of the cmdlet. This is propagated to reference documentation via [help comments](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_comment_based_help) in the exported scripts.
35+
- Used in C# cmdlets to provide a high-level description of the cmdlet. This is propagated to reference documentation via [help comments](https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_comment_based_help) in the exported scripts.
3636
- `Microsoft.Azure.PowerShell.Cmdlets.ContainerInstance.DoNotExportAttribute`
3737
- Used in C# and script cmdlets to suppress creating an exported cmdlet at build-time. These cmdlets will *not be exposed* by `Az.ContainerInstance`.
3838
- `Microsoft.Azure.PowerShell.Cmdlets.ContainerInstance.InternalExportAttribute`

src/ContainerInstance/exports/Add-AzContainerInstanceOutput.ps1

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ param(
6565
[ValidateNotNull()]
6666
[Microsoft.Azure.PowerShell.Cmdlets.ContainerInstance.Category('Azure')]
6767
[System.Management.Automation.PSObject]
68-
# The credentials, account, tenant, and subscription used for communication with Azure.
68+
# The DefaultProfile parameter is not functional.
69+
# Use the SubscriptionId parameter when available if executing the cmdlet against a different subscription.
6970
${DefaultProfile},
7071

7172
[Parameter(DontShow)]
@@ -117,7 +118,7 @@ begin {
117118
$parameterSet = $PSCmdlet.ParameterSetName
118119

119120
if ($null -eq [Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet]::PowerShellVersion) {
120-
[Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet]::PowerShellVersion = $Host.Version.ToString()
121+
[Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet]::PowerShellVersion = $PSVersionTable.PSVersion.ToString()
121122
}
122123
$preTelemetryId = [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::TelemetryId
123124
if ($preTelemetryId -eq '') {

src/ContainerInstance/exports/Get-AzContainerGroup.ps1

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ param(
9191
[ValidateNotNull()]
9292
[Microsoft.Azure.PowerShell.Cmdlets.ContainerInstance.Category('Azure')]
9393
[System.Management.Automation.PSObject]
94-
# The credentials, account, tenant, and subscription used for communication with Azure.
94+
# The DefaultProfile parameter is not functional.
95+
# Use the SubscriptionId parameter when available if executing the cmdlet against a different subscription.
9596
${DefaultProfile},
9697

9798
[Parameter(DontShow)]
@@ -143,7 +144,7 @@ begin {
143144
$parameterSet = $PSCmdlet.ParameterSetName
144145

145146
if ($null -eq [Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet]::PowerShellVersion) {
146-
[Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet]::PowerShellVersion = $Host.Version.ToString()
147+
[Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet]::PowerShellVersion = $PSVersionTable.PSVersion.ToString()
147148
}
148149
$preTelemetryId = [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::TelemetryId
149150
if ($preTelemetryId -eq '') {

src/ContainerInstance/exports/Get-AzContainerInstanceCachedImage.ps1

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ param(
5050
[ValidateNotNull()]
5151
[Microsoft.Azure.PowerShell.Cmdlets.ContainerInstance.Category('Azure')]
5252
[System.Management.Automation.PSObject]
53-
# The credentials, account, tenant, and subscription used for communication with Azure.
53+
# The DefaultProfile parameter is not functional.
54+
# Use the SubscriptionId parameter when available if executing the cmdlet against a different subscription.
5455
${DefaultProfile},
5556

5657
[Parameter(DontShow)]
@@ -102,7 +103,7 @@ begin {
102103
$parameterSet = $PSCmdlet.ParameterSetName
103104

104105
if ($null -eq [Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet]::PowerShellVersion) {
105-
[Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet]::PowerShellVersion = $Host.Version.ToString()
106+
[Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet]::PowerShellVersion = $PSVersionTable.PSVersion.ToString()
106107
}
107108
$preTelemetryId = [Microsoft.WindowsAzure.Commands.Common.MetricHelper]::TelemetryId
108109
if ($preTelemetryId -eq '') {

0 commit comments

Comments
 (0)