/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the grafana-2020-08-18.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.ManagedGrafana.Model
{
///
/// Container for the parameters to the UpdateWorkspace operation.
/// Modifies an existing Amazon Managed Grafana workspace. If you use this operation and
/// omit any optional parameters, the existing values of those parameters are not changed.
///
///
///
/// To modify the user authentication methods that the workspace uses, such as SAML or
/// IAM Identity Center, use UpdateWorkspaceAuthentication.
///
///
///
/// To modify which users in the workspace have the Admin
and Editor
/// Grafana roles, use UpdatePermissions.
///
///
public partial class UpdateWorkspaceRequest : AmazonManagedGrafanaRequest
{
private AccountAccessType _accountAccessType;
private NetworkAccessConfiguration _networkAccessControl;
private string _organizationRoleName;
private PermissionType _permissionType;
private bool? _removeNetworkAccessConfiguration;
private bool? _removeVpcConfiguration;
private string _stackSetName;
private VpcConfiguration _vpcConfiguration;
private List _workspaceDataSources = new List();
private string _workspaceDescription;
private string _workspaceId;
private string _workspaceName;
private List _workspaceNotificationDestinations = new List();
private List _workspaceOrganizationalUnits = new List();
private string _workspaceRoleArn;
///
/// Gets and sets the property AccountAccessType.
///
/// Specifies whether the workspace can access Amazon Web Services resources in this Amazon
/// Web Services account only, or whether it can also access Amazon Web Services resources
/// in other accounts in the same organization. If you specify ORGANIZATION
,
/// you must specify which organizational units the workspace can access in the workspaceOrganizationalUnits
/// parameter.
///
///
public AccountAccessType AccountAccessType
{
get { return this._accountAccessType; }
set { this._accountAccessType = value; }
}
// Check to see if AccountAccessType property is set
internal bool IsSetAccountAccessType()
{
return this._accountAccessType != null;
}
///
/// Gets and sets the property NetworkAccessControl.
///
/// The configuration settings for network access to your workspace.
///
///
///
/// When this is configured, only listed IP addresses and VPC endpoints will be able to
/// access your workspace. Standard Grafana authentication and authorization will still
/// be required.
///
///
///
/// If this is not configured, or is removed, then all IP addresses and VPC endpoints
/// will be allowed. Standard Grafana authentication and authorization will still be required.
///
///
public NetworkAccessConfiguration NetworkAccessControl
{
get { return this._networkAccessControl; }
set { this._networkAccessControl = value; }
}
// Check to see if NetworkAccessControl property is set
internal bool IsSetNetworkAccessControl()
{
return this._networkAccessControl != null;
}
///
/// Gets and sets the property OrganizationRoleName.
///
/// The name of an IAM role that already exists to use to access resources through Organizations.
/// This can only be used with a workspace that has the permissionType
set
/// to CUSTOMER_MANAGED
.
///
///
[AWSProperty(Sensitive=true, Min=1, Max=2048)]
public string OrganizationRoleName
{
get { return this._organizationRoleName; }
set { this._organizationRoleName = value; }
}
// Check to see if OrganizationRoleName property is set
internal bool IsSetOrganizationRoleName()
{
return this._organizationRoleName != null;
}
///
/// Gets and sets the property PermissionType.
///
/// Use this parameter if you want to change a workspace from SERVICE_MANAGED
/// to CUSTOMER_MANAGED
. This allows you to manage the permissions that the
/// workspace uses to access datasources and notification channels. If the workspace is
/// in a member Amazon Web Services account of an organization, and that account is not
/// a delegated administrator account, and you want the workspace to access data sources
/// in other Amazon Web Services accounts in the organization, you must choose CUSTOMER_MANAGED
.
///
///
///
/// If you specify this as CUSTOMER_MANAGED
, you must also specify a workspaceRoleArn
/// that the workspace will use for accessing Amazon Web Services resources.
///
///
///
/// For more information on the role and permissions needed, see Amazon
/// Managed Grafana permissions and policies for Amazon Web Services data sources and
/// notification channels
///
///
///
/// Do not use this to convert a CUSTOMER_MANAGED
workspace to SERVICE_MANAGED
.
/// Do not include this parameter if you want to leave the workspace as SERVICE_MANAGED
.
///
///
///
/// You can convert a CUSTOMER_MANAGED
workspace to SERVICE_MANAGED
/// using the Amazon Managed Grafana console. For more information, see Managing
/// permissions for data sources and notification channels.
///
///
///
public PermissionType PermissionType
{
get { return this._permissionType; }
set { this._permissionType = value; }
}
// Check to see if PermissionType property is set
internal bool IsSetPermissionType()
{
return this._permissionType != null;
}
///
/// Gets and sets the property RemoveNetworkAccessConfiguration.
///
/// Whether to remove the network access configuration from the workspace.
///
///
///
/// Setting this to true
and providing a networkAccessControl
/// to set will return an error.
///
///
///
/// If you remove this configuration by setting this to true
, then all IP
/// addresses and VPC endpoints will be allowed. Standard Grafana authentication and authorization
/// will still be required.
///
///
public bool RemoveNetworkAccessConfiguration
{
get { return this._removeNetworkAccessConfiguration.GetValueOrDefault(); }
set { this._removeNetworkAccessConfiguration = value; }
}
// Check to see if RemoveNetworkAccessConfiguration property is set
internal bool IsSetRemoveNetworkAccessConfiguration()
{
return this._removeNetworkAccessConfiguration.HasValue;
}
///
/// Gets and sets the property RemoveVpcConfiguration.
///
/// Whether to remove the VPC configuration from the workspace.
///
///
///
/// Setting this to true
and providing a vpcConfiguration
to
/// set will return an error.
///
///
public bool RemoveVpcConfiguration
{
get { return this._removeVpcConfiguration.GetValueOrDefault(); }
set { this._removeVpcConfiguration = value; }
}
// Check to see if RemoveVpcConfiguration property is set
internal bool IsSetRemoveVpcConfiguration()
{
return this._removeVpcConfiguration.HasValue;
}
///
/// Gets and sets the property StackSetName.
///
/// The name of the CloudFormation stack set to use to generate IAM roles to be used for
/// this workspace.
///
///
public string StackSetName
{
get { return this._stackSetName; }
set { this._stackSetName = value; }
}
// Check to see if StackSetName property is set
internal bool IsSetStackSetName()
{
return this._stackSetName != null;
}
///
/// Gets and sets the property VpcConfiguration.
///
/// The configuration settings for an Amazon VPC that contains data sources for your Grafana
/// workspace to connect to.
///
///
public VpcConfiguration VpcConfiguration
{
get { return this._vpcConfiguration; }
set { this._vpcConfiguration = value; }
}
// Check to see if VpcConfiguration property is set
internal bool IsSetVpcConfiguration()
{
return this._vpcConfiguration != null;
}
///
/// Gets and sets the property WorkspaceDataSources.
///
/// This parameter is for internal use only, and should not be used.
///
///
public List WorkspaceDataSources
{
get { return this._workspaceDataSources; }
set { this._workspaceDataSources = value; }
}
// Check to see if WorkspaceDataSources property is set
internal bool IsSetWorkspaceDataSources()
{
return this._workspaceDataSources != null && this._workspaceDataSources.Count > 0;
}
///
/// Gets and sets the property WorkspaceDescription.
///
/// A description for the workspace. This is used only to help you identify this workspace.
///
///
[AWSProperty(Sensitive=true, Min=0, Max=2048)]
public string WorkspaceDescription
{
get { return this._workspaceDescription; }
set { this._workspaceDescription = value; }
}
// Check to see if WorkspaceDescription property is set
internal bool IsSetWorkspaceDescription()
{
return this._workspaceDescription != null;
}
///
/// Gets and sets the property WorkspaceId.
///
/// The ID of the workspace to update.
///
///
[AWSProperty(Required=true)]
public string WorkspaceId
{
get { return this._workspaceId; }
set { this._workspaceId = value; }
}
// Check to see if WorkspaceId property is set
internal bool IsSetWorkspaceId()
{
return this._workspaceId != null;
}
///
/// Gets and sets the property WorkspaceName.
///
/// A new name for the workspace to update.
///
///
[AWSProperty(Sensitive=true)]
public string WorkspaceName
{
get { return this._workspaceName; }
set { this._workspaceName = value; }
}
// Check to see if WorkspaceName property is set
internal bool IsSetWorkspaceName()
{
return this._workspaceName != null;
}
///
/// Gets and sets the property WorkspaceNotificationDestinations.
///
/// Specify the Amazon Web Services notification channels that you plan to use in this
/// workspace. Specifying these data sources here enables Amazon Managed Grafana to create
/// IAM roles and permissions that allow Amazon Managed Grafana to use these channels.
///
///
public List WorkspaceNotificationDestinations
{
get { return this._workspaceNotificationDestinations; }
set { this._workspaceNotificationDestinations = value; }
}
// Check to see if WorkspaceNotificationDestinations property is set
internal bool IsSetWorkspaceNotificationDestinations()
{
return this._workspaceNotificationDestinations != null && this._workspaceNotificationDestinations.Count > 0;
}
///
/// Gets and sets the property WorkspaceOrganizationalUnits.
///
/// Specifies the organizational units that this workspace is allowed to use data sources
/// from, if this workspace is in an account that is part of an organization.
///
///
[AWSProperty(Sensitive=true)]
public List WorkspaceOrganizationalUnits
{
get { return this._workspaceOrganizationalUnits; }
set { this._workspaceOrganizationalUnits = value; }
}
// Check to see if WorkspaceOrganizationalUnits property is set
internal bool IsSetWorkspaceOrganizationalUnits()
{
return this._workspaceOrganizationalUnits != null && this._workspaceOrganizationalUnits.Count > 0;
}
///
/// Gets and sets the property WorkspaceRoleArn.
///
/// Specifies an IAM role that grants permissions to Amazon Web Services resources that
/// the workspace accesses, such as data sources and notification channels. If this workspace
/// has permissionType
CUSTOMER_MANAGED
, then this role is required.
///
///
[AWSProperty(Sensitive=true, Min=1, Max=2048)]
public string WorkspaceRoleArn
{
get { return this._workspaceRoleArn; }
set { this._workspaceRoleArn = value; }
}
// Check to see if WorkspaceRoleArn property is set
internal bool IsSetWorkspaceRoleArn()
{
return this._workspaceRoleArn != null;
}
}
}