/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include namespace Aws { namespace RedshiftServerless { namespace Model { /** */ class CreateWorkgroupRequest : public RedshiftServerlessRequest { public: AWS_REDSHIFTSERVERLESS_API CreateWorkgroupRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "CreateWorkgroup"; } AWS_REDSHIFTSERVERLESS_API Aws::String SerializePayload() const override; AWS_REDSHIFTSERVERLESS_API Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override; /** *

The base data warehouse capacity of the workgroup in Redshift Processing * Units (RPUs).

*/ inline int GetBaseCapacity() const{ return m_baseCapacity; } /** *

The base data warehouse capacity of the workgroup in Redshift Processing * Units (RPUs).

*/ inline bool BaseCapacityHasBeenSet() const { return m_baseCapacityHasBeenSet; } /** *

The base data warehouse capacity of the workgroup in Redshift Processing * Units (RPUs).

*/ inline void SetBaseCapacity(int value) { m_baseCapacityHasBeenSet = true; m_baseCapacity = value; } /** *

The base data warehouse capacity of the workgroup in Redshift Processing * Units (RPUs).

*/ inline CreateWorkgroupRequest& WithBaseCapacity(int value) { SetBaseCapacity(value); return *this;} /** *

An array of parameters to set for advanced control over a database. The * options are auto_mv, datestyle, * enable_case_sensitivity_identifier, * enable_user_activity_logging, query_group, * search_path, and query monitoring metrics that let you define * performance boundaries. For more information about query monitoring rules and * available metrics, see * Query monitoring metrics for Amazon Redshift Serverless.

*/ inline const Aws::Vector& GetConfigParameters() const{ return m_configParameters; } /** *

An array of parameters to set for advanced control over a database. The * options are auto_mv, datestyle, * enable_case_sensitivity_identifier, * enable_user_activity_logging, query_group, * search_path, and query monitoring metrics that let you define * performance boundaries. For more information about query monitoring rules and * available metrics, see * Query monitoring metrics for Amazon Redshift Serverless.

*/ inline bool ConfigParametersHasBeenSet() const { return m_configParametersHasBeenSet; } /** *

An array of parameters to set for advanced control over a database. The * options are auto_mv, datestyle, * enable_case_sensitivity_identifier, * enable_user_activity_logging, query_group, * search_path, and query monitoring metrics that let you define * performance boundaries. For more information about query monitoring rules and * available metrics, see * Query monitoring metrics for Amazon Redshift Serverless.

*/ inline void SetConfigParameters(const Aws::Vector& value) { m_configParametersHasBeenSet = true; m_configParameters = value; } /** *

An array of parameters to set for advanced control over a database. The * options are auto_mv, datestyle, * enable_case_sensitivity_identifier, * enable_user_activity_logging, query_group, * search_path, and query monitoring metrics that let you define * performance boundaries. For more information about query monitoring rules and * available metrics, see * Query monitoring metrics for Amazon Redshift Serverless.

*/ inline void SetConfigParameters(Aws::Vector&& value) { m_configParametersHasBeenSet = true; m_configParameters = std::move(value); } /** *

An array of parameters to set for advanced control over a database. The * options are auto_mv, datestyle, * enable_case_sensitivity_identifier, * enable_user_activity_logging, query_group, * search_path, and query monitoring metrics that let you define * performance boundaries. For more information about query monitoring rules and * available metrics, see * Query monitoring metrics for Amazon Redshift Serverless.

*/ inline CreateWorkgroupRequest& WithConfigParameters(const Aws::Vector& value) { SetConfigParameters(value); return *this;} /** *

An array of parameters to set for advanced control over a database. The * options are auto_mv, datestyle, * enable_case_sensitivity_identifier, * enable_user_activity_logging, query_group, * search_path, and query monitoring metrics that let you define * performance boundaries. For more information about query monitoring rules and * available metrics, see * Query monitoring metrics for Amazon Redshift Serverless.

*/ inline CreateWorkgroupRequest& WithConfigParameters(Aws::Vector&& value) { SetConfigParameters(std::move(value)); return *this;} /** *

An array of parameters to set for advanced control over a database. The * options are auto_mv, datestyle, * enable_case_sensitivity_identifier, * enable_user_activity_logging, query_group, * search_path, and query monitoring metrics that let you define * performance boundaries. For more information about query monitoring rules and * available metrics, see * Query monitoring metrics for Amazon Redshift Serverless.

*/ inline CreateWorkgroupRequest& AddConfigParameters(const ConfigParameter& value) { m_configParametersHasBeenSet = true; m_configParameters.push_back(value); return *this; } /** *

An array of parameters to set for advanced control over a database. The * options are auto_mv, datestyle, * enable_case_sensitivity_identifier, * enable_user_activity_logging, query_group, * search_path, and query monitoring metrics that let you define * performance boundaries. For more information about query monitoring rules and * available metrics, see * Query monitoring metrics for Amazon Redshift Serverless.

*/ inline CreateWorkgroupRequest& AddConfigParameters(ConfigParameter&& value) { m_configParametersHasBeenSet = true; m_configParameters.push_back(std::move(value)); return *this; } /** *

The value that specifies whether to turn on enhanced virtual private cloud * (VPC) routing, which forces Amazon Redshift Serverless to route traffic through * your VPC instead of over the internet.

*/ inline bool GetEnhancedVpcRouting() const{ return m_enhancedVpcRouting; } /** *

The value that specifies whether to turn on enhanced virtual private cloud * (VPC) routing, which forces Amazon Redshift Serverless to route traffic through * your VPC instead of over the internet.

*/ inline bool EnhancedVpcRoutingHasBeenSet() const { return m_enhancedVpcRoutingHasBeenSet; } /** *

The value that specifies whether to turn on enhanced virtual private cloud * (VPC) routing, which forces Amazon Redshift Serverless to route traffic through * your VPC instead of over the internet.

*/ inline void SetEnhancedVpcRouting(bool value) { m_enhancedVpcRoutingHasBeenSet = true; m_enhancedVpcRouting = value; } /** *

The value that specifies whether to turn on enhanced virtual private cloud * (VPC) routing, which forces Amazon Redshift Serverless to route traffic through * your VPC instead of over the internet.

*/ inline CreateWorkgroupRequest& WithEnhancedVpcRouting(bool value) { SetEnhancedVpcRouting(value); return *this;} /** *

The name of the namespace to associate with the workgroup.

*/ inline const Aws::String& GetNamespaceName() const{ return m_namespaceName; } /** *

The name of the namespace to associate with the workgroup.

*/ inline bool NamespaceNameHasBeenSet() const { return m_namespaceNameHasBeenSet; } /** *

The name of the namespace to associate with the workgroup.

*/ inline void SetNamespaceName(const Aws::String& value) { m_namespaceNameHasBeenSet = true; m_namespaceName = value; } /** *

The name of the namespace to associate with the workgroup.

*/ inline void SetNamespaceName(Aws::String&& value) { m_namespaceNameHasBeenSet = true; m_namespaceName = std::move(value); } /** *

The name of the namespace to associate with the workgroup.

*/ inline void SetNamespaceName(const char* value) { m_namespaceNameHasBeenSet = true; m_namespaceName.assign(value); } /** *

The name of the namespace to associate with the workgroup.

*/ inline CreateWorkgroupRequest& WithNamespaceName(const Aws::String& value) { SetNamespaceName(value); return *this;} /** *

The name of the namespace to associate with the workgroup.

*/ inline CreateWorkgroupRequest& WithNamespaceName(Aws::String&& value) { SetNamespaceName(std::move(value)); return *this;} /** *

The name of the namespace to associate with the workgroup.

*/ inline CreateWorkgroupRequest& WithNamespaceName(const char* value) { SetNamespaceName(value); return *this;} /** *

The custom port to use when connecting to a workgroup. Valid port ranges are * 5431-5455 and 8191-8215. The default is 5439.

*/ inline int GetPort() const{ return m_port; } /** *

The custom port to use when connecting to a workgroup. Valid port ranges are * 5431-5455 and 8191-8215. The default is 5439.

*/ inline bool PortHasBeenSet() const { return m_portHasBeenSet; } /** *

The custom port to use when connecting to a workgroup. Valid port ranges are * 5431-5455 and 8191-8215. The default is 5439.

*/ inline void SetPort(int value) { m_portHasBeenSet = true; m_port = value; } /** *

The custom port to use when connecting to a workgroup. Valid port ranges are * 5431-5455 and 8191-8215. The default is 5439.

*/ inline CreateWorkgroupRequest& WithPort(int value) { SetPort(value); return *this;} /** *

A value that specifies whether the workgroup can be accessed from a public * network.

*/ inline bool GetPubliclyAccessible() const{ return m_publiclyAccessible; } /** *

A value that specifies whether the workgroup can be accessed from a public * network.

*/ inline bool PubliclyAccessibleHasBeenSet() const { return m_publiclyAccessibleHasBeenSet; } /** *

A value that specifies whether the workgroup can be accessed from a public * network.

*/ inline void SetPubliclyAccessible(bool value) { m_publiclyAccessibleHasBeenSet = true; m_publiclyAccessible = value; } /** *

A value that specifies whether the workgroup can be accessed from a public * network.

*/ inline CreateWorkgroupRequest& WithPubliclyAccessible(bool value) { SetPubliclyAccessible(value); return *this;} /** *

An array of security group IDs to associate with the workgroup.

*/ inline const Aws::Vector& GetSecurityGroupIds() const{ return m_securityGroupIds; } /** *

An array of security group IDs to associate with the workgroup.

*/ inline bool SecurityGroupIdsHasBeenSet() const { return m_securityGroupIdsHasBeenSet; } /** *

An array of security group IDs to associate with the workgroup.

*/ inline void SetSecurityGroupIds(const Aws::Vector& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds = value; } /** *

An array of security group IDs to associate with the workgroup.

*/ inline void SetSecurityGroupIds(Aws::Vector&& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds = std::move(value); } /** *

An array of security group IDs to associate with the workgroup.

*/ inline CreateWorkgroupRequest& WithSecurityGroupIds(const Aws::Vector& value) { SetSecurityGroupIds(value); return *this;} /** *

An array of security group IDs to associate with the workgroup.

*/ inline CreateWorkgroupRequest& WithSecurityGroupIds(Aws::Vector&& value) { SetSecurityGroupIds(std::move(value)); return *this;} /** *

An array of security group IDs to associate with the workgroup.

*/ inline CreateWorkgroupRequest& AddSecurityGroupIds(const Aws::String& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(value); return *this; } /** *

An array of security group IDs to associate with the workgroup.

*/ inline CreateWorkgroupRequest& AddSecurityGroupIds(Aws::String&& value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(std::move(value)); return *this; } /** *

An array of security group IDs to associate with the workgroup.

*/ inline CreateWorkgroupRequest& AddSecurityGroupIds(const char* value) { m_securityGroupIdsHasBeenSet = true; m_securityGroupIds.push_back(value); return *this; } /** *

An array of VPC subnet IDs to associate with the workgroup.

*/ inline const Aws::Vector& GetSubnetIds() const{ return m_subnetIds; } /** *

An array of VPC subnet IDs to associate with the workgroup.

*/ inline bool SubnetIdsHasBeenSet() const { return m_subnetIdsHasBeenSet; } /** *

An array of VPC subnet IDs to associate with the workgroup.

*/ inline void SetSubnetIds(const Aws::Vector& value) { m_subnetIdsHasBeenSet = true; m_subnetIds = value; } /** *

An array of VPC subnet IDs to associate with the workgroup.

*/ inline void SetSubnetIds(Aws::Vector&& value) { m_subnetIdsHasBeenSet = true; m_subnetIds = std::move(value); } /** *

An array of VPC subnet IDs to associate with the workgroup.

*/ inline CreateWorkgroupRequest& WithSubnetIds(const Aws::Vector& value) { SetSubnetIds(value); return *this;} /** *

An array of VPC subnet IDs to associate with the workgroup.

*/ inline CreateWorkgroupRequest& WithSubnetIds(Aws::Vector&& value) { SetSubnetIds(std::move(value)); return *this;} /** *

An array of VPC subnet IDs to associate with the workgroup.

*/ inline CreateWorkgroupRequest& AddSubnetIds(const Aws::String& value) { m_subnetIdsHasBeenSet = true; m_subnetIds.push_back(value); return *this; } /** *

An array of VPC subnet IDs to associate with the workgroup.

*/ inline CreateWorkgroupRequest& AddSubnetIds(Aws::String&& value) { m_subnetIdsHasBeenSet = true; m_subnetIds.push_back(std::move(value)); return *this; } /** *

An array of VPC subnet IDs to associate with the workgroup.

*/ inline CreateWorkgroupRequest& AddSubnetIds(const char* value) { m_subnetIdsHasBeenSet = true; m_subnetIds.push_back(value); return *this; } /** *

A array of tag instances.

*/ inline const Aws::Vector& GetTags() const{ return m_tags; } /** *

A array of tag instances.

*/ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *

A array of tag instances.

*/ inline void SetTags(const Aws::Vector& value) { m_tagsHasBeenSet = true; m_tags = value; } /** *

A array of tag instances.

*/ inline void SetTags(Aws::Vector&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); } /** *

A array of tag instances.

*/ inline CreateWorkgroupRequest& WithTags(const Aws::Vector& value) { SetTags(value); return *this;} /** *

A array of tag instances.

*/ inline CreateWorkgroupRequest& WithTags(Aws::Vector&& value) { SetTags(std::move(value)); return *this;} /** *

A array of tag instances.

*/ inline CreateWorkgroupRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; } /** *

A array of tag instances.

*/ inline CreateWorkgroupRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; } /** *

The name of the created workgroup.

*/ inline const Aws::String& GetWorkgroupName() const{ return m_workgroupName; } /** *

The name of the created workgroup.

*/ inline bool WorkgroupNameHasBeenSet() const { return m_workgroupNameHasBeenSet; } /** *

The name of the created workgroup.

*/ inline void SetWorkgroupName(const Aws::String& value) { m_workgroupNameHasBeenSet = true; m_workgroupName = value; } /** *

The name of the created workgroup.

*/ inline void SetWorkgroupName(Aws::String&& value) { m_workgroupNameHasBeenSet = true; m_workgroupName = std::move(value); } /** *

The name of the created workgroup.

*/ inline void SetWorkgroupName(const char* value) { m_workgroupNameHasBeenSet = true; m_workgroupName.assign(value); } /** *

The name of the created workgroup.

*/ inline CreateWorkgroupRequest& WithWorkgroupName(const Aws::String& value) { SetWorkgroupName(value); return *this;} /** *

The name of the created workgroup.

*/ inline CreateWorkgroupRequest& WithWorkgroupName(Aws::String&& value) { SetWorkgroupName(std::move(value)); return *this;} /** *

The name of the created workgroup.

*/ inline CreateWorkgroupRequest& WithWorkgroupName(const char* value) { SetWorkgroupName(value); return *this;} private: int m_baseCapacity; bool m_baseCapacityHasBeenSet = false; Aws::Vector m_configParameters; bool m_configParametersHasBeenSet = false; bool m_enhancedVpcRouting; bool m_enhancedVpcRoutingHasBeenSet = false; Aws::String m_namespaceName; bool m_namespaceNameHasBeenSet = false; int m_port; bool m_portHasBeenSet = false; bool m_publiclyAccessible; bool m_publiclyAccessibleHasBeenSet = false; Aws::Vector m_securityGroupIds; bool m_securityGroupIdsHasBeenSet = false; Aws::Vector m_subnetIds; bool m_subnetIdsHasBeenSet = false; Aws::Vector m_tags; bool m_tagsHasBeenSet = false; Aws::String m_workgroupName; bool m_workgroupNameHasBeenSet = false; }; } // namespace Model } // namespace RedshiftServerless } // namespace Aws