/
ThreeTierConfiguration.cs
125 lines (114 loc) · 8.07 KB
/
ThreeTierConfiguration.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// <auto-generated/>
#nullable disable
using System;
using System.Collections.Generic;
using Azure.Core;
namespace Azure.ResourceManager.Workloads.Models
{
/// <summary> Gets or sets the three tier SAP configuration. For prerequisites for creating the infrastructure, please see [here](https://go.microsoft.com/fwlink/?linkid=2212611&clcid=0x409). </summary>
public partial class ThreeTierConfiguration : InfrastructureConfiguration
{
/// <summary> Initializes a new instance of <see cref="ThreeTierConfiguration"/>. </summary>
/// <param name="appResourceGroup"> The application resource group where SAP system resources will be deployed. </param>
/// <param name="centralServer"> The central server configuration. </param>
/// <param name="applicationServer"> The application server configuration. </param>
/// <param name="databaseServer"> The database configuration. </param>
/// <exception cref="ArgumentNullException"> <paramref name="appResourceGroup"/>, <paramref name="centralServer"/>, <paramref name="applicationServer"/> or <paramref name="databaseServer"/> is null. </exception>
public ThreeTierConfiguration(string appResourceGroup, CentralServerConfiguration centralServer, ApplicationServerConfiguration applicationServer, DatabaseConfiguration databaseServer) : base(appResourceGroup)
{
Argument.AssertNotNull(appResourceGroup, nameof(appResourceGroup));
Argument.AssertNotNull(centralServer, nameof(centralServer));
Argument.AssertNotNull(applicationServer, nameof(applicationServer));
Argument.AssertNotNull(databaseServer, nameof(databaseServer));
CentralServer = centralServer;
ApplicationServer = applicationServer;
DatabaseServer = databaseServer;
DeploymentType = SapDeploymentType.ThreeTier;
}
/// <summary> Initializes a new instance of <see cref="ThreeTierConfiguration"/>. </summary>
/// <param name="deploymentType"> The type of SAP deployment, single server or Three tier. </param>
/// <param name="appResourceGroup"> The application resource group where SAP system resources will be deployed. </param>
/// <param name="serializedAdditionalRawData"> Keeps track of any properties unknown to the library. </param>
/// <param name="networkConfiguration"> Network configuration common to all servers. </param>
/// <param name="centralServer"> The central server configuration. </param>
/// <param name="applicationServer"> The application server configuration. </param>
/// <param name="databaseServer"> The database configuration. </param>
/// <param name="highAvailabilityConfig"> The high availability configuration. </param>
/// <param name="storageConfiguration"> The storage configuration. </param>
/// <param name="customResourceNames">
/// The set of custom names to be used for underlying azure resources that are part of the SAP system.
/// Please note <see cref="ThreeTierCustomResourceNames"/> is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes.
/// The available derived classes include <see cref="ThreeTierFullResourceNames"/>.
/// </param>
internal ThreeTierConfiguration(SapDeploymentType deploymentType, string appResourceGroup, IDictionary<string, BinaryData> serializedAdditionalRawData, NetworkConfiguration networkConfiguration, CentralServerConfiguration centralServer, ApplicationServerConfiguration applicationServer, DatabaseConfiguration databaseServer, HighAvailabilityConfiguration highAvailabilityConfig, SapStorageConfiguration storageConfiguration, ThreeTierCustomResourceNames customResourceNames) : base(deploymentType, appResourceGroup, serializedAdditionalRawData)
{
NetworkConfiguration = networkConfiguration;
CentralServer = centralServer;
ApplicationServer = applicationServer;
DatabaseServer = databaseServer;
HighAvailabilityConfig = highAvailabilityConfig;
StorageConfiguration = storageConfiguration;
CustomResourceNames = customResourceNames;
DeploymentType = deploymentType;
}
/// <summary> Initializes a new instance of <see cref="ThreeTierConfiguration"/> for deserialization. </summary>
internal ThreeTierConfiguration()
{
}
/// <summary> Network configuration common to all servers. </summary>
internal NetworkConfiguration NetworkConfiguration { get; set; }
/// <summary> Specifies whether a secondary IP address should be added to the network interface on all VMs of the SAP system being deployed. </summary>
public bool? IsSecondaryIPEnabled
{
get => NetworkConfiguration is null ? default : NetworkConfiguration.IsSecondaryIPEnabled;
set
{
if (NetworkConfiguration is null)
NetworkConfiguration = new NetworkConfiguration();
NetworkConfiguration.IsSecondaryIPEnabled = value;
}
}
/// <summary> The central server configuration. </summary>
public CentralServerConfiguration CentralServer { get; set; }
/// <summary> The application server configuration. </summary>
public ApplicationServerConfiguration ApplicationServer { get; set; }
/// <summary> The database configuration. </summary>
public DatabaseConfiguration DatabaseServer { get; set; }
/// <summary> The high availability configuration. </summary>
internal HighAvailabilityConfiguration HighAvailabilityConfig { get; set; }
/// <summary> The high availability type. </summary>
public SapHighAvailabilityType? HighAvailabilityType
{
get => HighAvailabilityConfig is null ? default(SapHighAvailabilityType?) : HighAvailabilityConfig.HighAvailabilityType;
set
{
HighAvailabilityConfig = value.HasValue ? new HighAvailabilityConfiguration(value.Value) : null;
}
}
/// <summary> The storage configuration. </summary>
internal SapStorageConfiguration StorageConfiguration { get; set; }
/// <summary>
/// The properties of the transport directory attached to the VIS. The default for transportFileShareConfiguration is the createAndMount flow if storage configuration is missing.
/// Please note <see cref="FileShareConfiguration"/> is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes.
/// The available derived classes include <see cref="CreateAndMountFileShareConfiguration"/>, <see cref="MountFileShareConfiguration"/> and <see cref="SkipFileShareConfiguration"/>.
/// </summary>
public FileShareConfiguration StorageTransportFileShareConfiguration
{
get => StorageConfiguration is null ? default : StorageConfiguration.TransportFileShareConfiguration;
set
{
if (StorageConfiguration is null)
StorageConfiguration = new SapStorageConfiguration();
StorageConfiguration.TransportFileShareConfiguration = value;
}
}
/// <summary>
/// The set of custom names to be used for underlying azure resources that are part of the SAP system.
/// Please note <see cref="ThreeTierCustomResourceNames"/> is the base class. According to the scenario, a derived class of the base class might need to be assigned here, or this property needs to be casted to one of the possible derived classes.
/// The available derived classes include <see cref="ThreeTierFullResourceNames"/>.
/// </summary>
public ThreeTierCustomResourceNames CustomResourceNames { get; set; }
}
}