mws

package
v1.55.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 24, 2024 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	WorkspaceStatusNotProvisioned = "NOT_PROVISIONED"
	WorkspaceStatusProvisioning   = "PROVISIONING"
	WorkspaceStatusRunning        = "RUNNING"
	WorkspaceStatusFailed         = "FAILED"
	WorkspaceStatusCanceled       = "CANCELLED"
)

List of workspace statuses for provisioning the workspace

View Source
const DefaultProvisionTimeout = 20 * time.Minute

DefaultProvisionTimeout is the amount of minutes terraform will wait for workspace to be provisioned and DNS entry to be available. Increasing this may help with local DNS cache issues.

Variables

View Source
var WorkspaceStatusesNonRunnable = []string{WorkspaceStatusCanceled, WorkspaceStatusFailed}

WorkspaceStatusesNonRunnable is a list of statuses in which the workspace is not runnable

Functions

func CreateTokenIfNeeded

func CreateTokenIfNeeded(workspacesAPI WorkspacesAPI,
	workspaceSchema map[string]*schema.Schema, d *schema.ResourceData) error

func DataSourceCurrentConfiguration added in v1.31.0

func DataSourceCurrentConfiguration() common.Resource

func DataSourceMwsCredentials added in v1.9.0

func DataSourceMwsCredentials() common.Resource

func DataSourceMwsWorkspaces added in v1.2.0

func DataSourceMwsWorkspaces() common.Resource

func EnsureTokenExistsIfNeeded

func EnsureTokenExistsIfNeeded(a WorkspacesAPI,
	workspaceSchema map[string]*schema.Schema, d *schema.ResourceData) error

func ResourceCustomerManagedKeyV0

func ResourceCustomerManagedKeyV0() cty.Type

func ResourceMwsCredentials

func ResourceMwsCredentials() common.Resource

func ResourceMwsCustomerManagedKeys

func ResourceMwsCustomerManagedKeys() common.Resource

func ResourceMwsLogDelivery

func ResourceMwsLogDelivery() common.Resource

func ResourceMwsNccBinding added in v1.41.0

func ResourceMwsNccBinding() common.Resource

func ResourceMwsNccPrivateEndpointRule added in v1.41.0

func ResourceMwsNccPrivateEndpointRule() common.Resource

func ResourceMwsNetworkConnectivityConfig added in v1.41.0

func ResourceMwsNetworkConnectivityConfig() common.Resource

func ResourceMwsNetworks

func ResourceMwsNetworks() common.Resource

func ResourceMwsPermissionAssignment added in v1.2.0

func ResourceMwsPermissionAssignment() common.Resource

func ResourceMwsPrivateAccessSettings

func ResourceMwsPrivateAccessSettings() common.Resource

func ResourceMwsStorageConfigurations

func ResourceMwsStorageConfigurations() common.Resource

func ResourceMwsVpcEndpoint

func ResourceMwsVpcEndpoint() common.Resource

func ResourceMwsWorkspaces

func ResourceMwsWorkspaces() common.Resource

ResourceMwsWorkspaces manages E2 workspaces

func UpdateTokenIfNeeded

func UpdateTokenIfNeeded(workspacesAPI WorkspacesAPI,
	workspaceSchema map[string]*schema.Schema, d *schema.ResourceData) error

Types

type AwsCredentials

type AwsCredentials struct {
	StsRole *StsRole `json:"sts_role,omitempty"`
}

AwsCredentials is the object that points to the cross account role

type AwsKeyInfo

type AwsKeyInfo struct {
	KeyArn    string `json:"key_arn"`
	KeyAlias  string `json:"key_alias,omitempty"`
	KeyRegion string `json:"key_region,omitempty" tf:"computed"`
}

AwsKeyInfo has information about the KMS key for BYOK

type CloudResourceContainer added in v1.8.0

type CloudResourceContainer struct {
	GCP *GCP `json:"gcp"`
}

type CredentialInfo added in v1.31.1

type CredentialInfo struct {
	// The account id - this is for backwards compatiblity
	AccountId string `json:"account_id,omitempty" tf:"force_new,suppress_diff"`
	// The human-readable name of the credential configuration object.
	CredentialsName string `json:"credentials_name" tf:"force_new"`
	// The Amazon Resource Name (ARN) of the cross account role.
	RoleArn string `json:"role_arn" tf:"force_new"`
	// Time in epoch milliseconds when the credential was created.
	CreationTime int64 `json:"creation_time,omitempty" tf:"computed"`
	// Databricks credential configuration ID.
	CredentialsId string `json:"credentials_id,omitempty" tf:"computed"`
	// The external ID that needs to be trusted by the cross-account role. This
	// is always your Databricks account ID.
	ExternalId string `json:"external_id,omitempty" tf:"computed"`
}

type Credentials

type Credentials struct {
	CredentialsID   string          `json:"credentials_id,omitempty"`
	CredentialsName string          `json:"credentials_name,omitempty"`
	AwsCredentials  *AwsCredentials `json:"aws_credentials,omitempty"`
	AccountID       string          `json:"account_id,omitempty"`
	CreationTime    int64           `json:"creation_time,omitempty"`
}

Credentials is the object that contains all the information for the credentials to create a workspace

type CredentialsAPI

type CredentialsAPI struct {
	// contains filtered or unexported fields
}

CredentialsAPI exposes the mws credentials API

func NewCredentialsAPI

func NewCredentialsAPI(ctx context.Context, m any) CredentialsAPI

NewCredentialsAPI creates MWSCredentialsAPI instance from provider meta

func (CredentialsAPI) List

func (a CredentialsAPI) List(mwsAcctID string) ([]Credentials, error)

List lists all the available credentials object in the mws account

type CustomerManagedKey

type CustomerManagedKey struct {
	CustomerManagedKeyID string      `json:"customer_managed_key_id,omitempty" tf:"computed"`
	AwsKeyInfo           *AwsKeyInfo `json:"aws_key_info,omitempty" tf:"force_new,conflicts:gcp_key_info"`
	GcpKeyInfo           *GcpKeyInfo `json:"gcp_key_info,omitempty" tf:"force_new,conflicts:aws_key_info"`
	AccountID            string      `json:"account_id" tf:"force_new"`
	CreationTime         int64       `json:"creation_time,omitempty" tf:"computed"`
	UseCases             []string    `json:"use_cases"`
}

CustomerManagedKey contains key information and metadata for BYOK for E2 You must specify either AwsKeyInfo for AWS or GcpKeyInfo for GCP, but not both

type CustomerManagedKeysAPI

type CustomerManagedKeysAPI struct {
	// contains filtered or unexported fields
}

CustomerManagedKeysAPI exposes the mws customerManagedKeys API

func NewCustomerManagedKeysAPI

func NewCustomerManagedKeysAPI(ctx context.Context, m any) CustomerManagedKeysAPI

NewCustomerManagedKeysAPI creates CustomerManagedKeysAPI instance from provider meta

func (CustomerManagedKeysAPI) Create

Create creates a set of MWS CustomerManagedKeys for the BYOVPC

func (CustomerManagedKeysAPI) Delete

func (a CustomerManagedKeysAPI) Delete(accountID, customerManagedKeyID string) error

Delete deletes the customer managed key object given a network id

func (CustomerManagedKeysAPI) List

func (a CustomerManagedKeysAPI) List(accountID string) (kl []CustomerManagedKey, err error)

List lists all the available customer managed key objects in the mws account

func (CustomerManagedKeysAPI) Read

func (a CustomerManagedKeysAPI) Read(
	accountID, customerManagedKeyID string) (k CustomerManagedKey, err error)

Read returns the customer managed key object along with metadata

type GCP

type GCP struct {
	ProjectID string `json:"project_id"`
}

type GCPManagedNetworkConfig

type GCPManagedNetworkConfig struct {
	SubnetCIDR               string `json:"subnet_cidr" tf:"force_new"`
	GKEClusterPodIPRange     string `json:"gke_cluster_pod_ip_range" tf:"force_new"`
	GKEClusterServiceIPRange string `json:"gke_cluster_service_ip_range" tf:"force_new"`
}

type GcpKeyInfo added in v1.10.1

type GcpKeyInfo struct {
	KmsKeyId string `json:"kms_key_id"`
}

GcpKeyInfo has information about the KMS key for BYOK

type GcpNetworkInfo added in v1.8.0

type GcpNetworkInfo struct {
	NetworkProjectId   string `json:"network_project_id"`
	VpcId              string `json:"vpc_id"`
	SubnetId           string `json:"subnet_id"`
	SubnetRegion       string `json:"subnet_region"`
	PodIpRangeName     string `json:"pod_ip_range_name"`
	ServiceIpRangeName string `json:"service_ip_range_name"`
}

GcpNetworkInfo is the object that configures byovpc settings for gcp

type GcpVpcEndpointInfo added in v1.13.0

type GcpVpcEndpointInfo struct {
	PscConnectionId     string `json:"psc_connection_id,omitempty" tf:"computed"`
	ProjectId           string `json:"project_id"`
	PscEndpointName     string `json:"psc_endpoint_name"`
	EndpointRegion      string `json:"endpoint_region"`
	ServiceAttachmentId string `json:"service_attachment_id,omitempty" tf:"computed"`
}

GcpVpcEndpointInfo is the objecy that configures GCP Private Service Connect endpoint.

type GkeConfig added in v1.8.0

type GkeConfig struct {
	ConnectivityType string `json:"connectivity_type" tf:"force_new"`
	MasterIPRange    string `json:"master_ip_range" tf:"force_new"`
}

type LogDelivery

type LogDelivery struct {
	LogDeliveryConfiguration LogDeliveryConfiguration `json:"log_delivery_configuration"`
}

LogDelivery wrapper

type LogDeliveryAPI

type LogDeliveryAPI struct {
	// contains filtered or unexported fields
}

LogDeliveryAPI ...

func NewLogDeliveryAPI

func NewLogDeliveryAPI(ctx context.Context, m any) LogDeliveryAPI

NewLogDeliveryAPI ...

func (LogDeliveryAPI) Create

Create new log delivery configuration

func (LogDeliveryAPI) Patch added in v1.0.2

func (a LogDeliveryAPI) Patch(accountID, configID string, status string) error

patch log delivery configuration - i.e. can only enable or disable it

func (LogDeliveryAPI) Read

func (a LogDeliveryAPI) Read(accountID, configID string) (LogDeliveryConfiguration, error)

Read reads log delivery configuration

type LogDeliveryConfiguration

type LogDeliveryConfiguration struct {
	AccountID              string  `json:"account_id" tf:"force_new"`
	ConfigID               string  `json:"config_id,omitempty" tf:"computed,force_new"`
	CredentialsID          string  `json:"credentials_id" tf:"force_new"`
	StorageConfigurationID string  `json:"storage_configuration_id" tf:"force_new"`
	WorkspaceIdsFilter     []int64 `json:"workspace_ids_filter,omitempty" tf:"force_new"`
	ConfigName             string  `json:"config_name,omitempty" tf:"force_new"`
	Status                 string  `json:"status,omitempty" tf:"computed"`
	LogType                string  `json:"log_type" tf:"force_new"`
	OutputFormat           string  `json:"output_format" tf:"force_new"`
	DeliveryPathPrefix     string  `json:"delivery_path_prefix,omitempty" tf:"force_new"`
	DeliveryStartTime      string  `json:"delivery_start_time,omitempty" tf:"computed,force_new"`
}

LogDeliveryConfiguration describes log delivery

type Network

type Network struct {
	AccountID        string               `json:"account_id"`
	NetworkID        string               `json:"network_id,omitempty" tf:"computed"`
	NetworkName      string               `json:"network_name"`
	VPCID            string               `json:"vpc_id,omitempty"`
	SubnetIds        []string             `json:"subnet_ids,omitempty" tf:"slice_set"`
	VPCEndpoints     *NetworkVPCEndpoints `json:"vpc_endpoints,omitempty" tf:"computed,force_new"`
	SecurityGroupIds []string             `json:"security_group_ids,omitempty" tf:"slice_set"`
	VPCStatus        string               `json:"vpc_status,omitempty" tf:"computed"`
	ErrorMessages    []NetworkHealth      `json:"error_messages,omitempty" tf:"computed"`
	WorkspaceID      int64                `json:"workspace_id,omitempty" tf:"computed"`
	CreationTime     int64                `json:"creation_time,omitempty" tf:"computed"`
	GcpNetworkInfo   *GcpNetworkInfo      `json:"gcp_network_info,omitempty"`
}

Network is the object that contains all the information for BYOVPC

type NetworkHealth

type NetworkHealth struct {
	ErrorType    string `json:"error_type,omitempty"`
	ErrorMessage string `json:"error_message,omitempty"`
}

NetworkHealth is the object that contains all the error message when attaching a network to workspace

type NetworkVPCEndpoints

type NetworkVPCEndpoints struct {
	RestAPI           []string `json:"rest_api" tf:"slice_set"`
	DataplaneRelayAPI []string `json:"dataplane_relay" tf:"slice_set"`
}

NetworkVPCEndpoints is the object that contains VPC endpoints of a network

type NetworksAPI

type NetworksAPI struct {
	// contains filtered or unexported fields
}

NetworksAPI exposes the mws networks API

func NewNetworksAPI

func NewNetworksAPI(ctx context.Context, m any) NetworksAPI

NewNetworksAPI creates MWSNetworksAPI instance from provider meta

func (NetworksAPI) Create

func (a NetworksAPI) Create(network *Network) error

Create creates a set of MWS Networks for the BYOVPC

func (NetworksAPI) Delete

func (a NetworksAPI) Delete(mwsAcctID, networksID string) error

Delete deletes the network object given a network id

func (NetworksAPI) List

func (a NetworksAPI) List(mwsAcctID string) ([]Network, error)

List lists all the available network objects in the mws account

func (NetworksAPI) Read

func (a NetworksAPI) Read(mwsAcctID, networksID string) (Network, error)

Read returns the network object along with metadata and any additional errors when attaching to workspace

type PrivateAccessSettings

type PrivateAccessSettings struct {
	AccountID             string   `json:"account_id,omitempty"`
	PasID                 string   `json:"private_access_settings_id,omitempty" tf:"computed"`
	PasName               string   `json:"private_access_settings_name"`
	Region                string   `json:"region"`
	Status                string   `json:"status,omitempty" tf:"computed"`
	PublicAccessEnabled   bool     `json:"public_access_enabled,omitempty"`
	PrivateAccessLevel    string   `json:"private_access_level,omitempty" tf:"default:ACCOUNT"`
	AllowedVpcEndpointIDS []string `json:"allowed_vpc_endpoint_ids,omitempty"`

	ForceSendFields []string `json:"-"`
}

PrivateAccessSettings (PAS) is the object that contains all the information for creating an PrivateAccessSettings (PAS)

func (PrivateAccessSettings) MarshalJSON added in v1.35.0

func (s PrivateAccessSettings) MarshalJSON() ([]byte, error)

func (*PrivateAccessSettings) UnmarshalJSON added in v1.35.0

func (s *PrivateAccessSettings) UnmarshalJSON(b []byte) error

type RootBucketInfo

type RootBucketInfo struct {
	BucketName string `json:"bucket_name,omitempty"`
}

RootBucketInfo points to a bucket name

type SensitiveString added in v1.28.0

type SensitiveString string

func (SensitiveString) GoString added in v1.28.0

func (s SensitiveString) GoString() string

func (SensitiveString) String added in v1.28.0

func (s SensitiveString) String() string

type StorageConfiguration

type StorageConfiguration struct {
	StorageConfigurationID   string          `json:"storage_configuration_id,omitempty"`
	StorageConfigurationName string          `json:"storage_configuration_name,omitempty"`
	RootBucketInfo           *RootBucketInfo `json:"root_bucket_info,omitempty"`
	AccountID                string          `json:"account_id,omitempty"`
	CreationTime             int64           `json:"creation_time,omitempty"`
}

StorageConfiguration is the object that contains all the information for the root storage bucket

type StorageConfigurationsAPI

type StorageConfigurationsAPI struct {
	// contains filtered or unexported fields
}

StorageConfigurationsAPI exposes the mws storageConfiguration API

func NewStorageConfigurationsAPI

func NewStorageConfigurationsAPI(ctx context.Context, m any) StorageConfigurationsAPI

NewStorageConfigurationsAPI creates MWSStorageConfigurationsAPI instance from provider meta

func (StorageConfigurationsAPI) Create

func (a StorageConfigurationsAPI) Create(mwsAcctID, storageConfigurationName string, bucketName string) (StorageConfiguration, error)

Create creates a configuration for the root s3 bucket

func (StorageConfigurationsAPI) Delete

func (a StorageConfigurationsAPI) Delete(mwsAcctID, storageConfigurationID string) error

Delete deletes the configuration for the root s3 bucket

func (StorageConfigurationsAPI) List

List lists all the storage configurations for the root s3 buckets in the account ID provided to the client config

func (StorageConfigurationsAPI) Read

func (a StorageConfigurationsAPI) Read(mwsAcctID, storageConfigurationID string) (StorageConfiguration, error)

Read returns the configuration for the root s3 bucket and metadata for the storage configuration

type StsRole

type StsRole struct {
	RoleArn    string `json:"role_arn,omitempty"`
	ExternalID string `json:"external_id,omitempty"`
}

StsRole is the object that contains cross account role arn and external app id

type Token

type Token struct {
	LifetimeSeconds int32           `json:"lifetime_seconds,omitempty" tf:"default:2592000"`
	Comment         string          `json:"comment,omitempty" tf:"default:Terraform PAT"`
	TokenID         string          `json:"token_id,omitempty" tf:"computed"`
	TokenValue      SensitiveString `json:"token_value,omitempty" tf:"computed,sensitive"`
}

type VPCEndpoint

type VPCEndpoint struct {
	VPCEndpointID           string              `json:"vpc_endpoint_id,omitempty" tf:"computed"`
	AwsVPCEndpointID        string              `json:"aws_vpc_endpoint_id,omitempty"`
	AccountID               string              `json:"account_id,omitempty"`
	VPCEndpointName         string              `json:"vpc_endpoint_name"`
	AwsVPCEndpointServiceID string              `json:"aws_endpoint_service_id,omitempty" tf:"computed"`
	AWSAccountID            string              `json:"aws_account_id,omitempty" tf:"computed"`
	UseCase                 string              `json:"use_case,omitempty" tf:"computed"`
	Region                  string              `json:"region,omitempty"`
	State                   string              `json:"state,omitempty" tf:"computed"`
	GcpVpcEndpointInfo      *GcpVpcEndpointInfo `json:"gcp_vpc_endpoint_info,omitempty"`
}

VPCEndpoint is the object that contains all the information for registering an VPC endpoint

type VPCEndpointAPI

type VPCEndpointAPI struct {
	// contains filtered or unexported fields
}

VPCEndpointAPI exposes the mws VPC endpoint API

func NewVPCEndpointAPI

func NewVPCEndpointAPI(ctx context.Context, m any) VPCEndpointAPI

NewVPCEndpointAPI creates VPCEndpointAPI instance from provider meta

func (VPCEndpointAPI) Create

func (a VPCEndpointAPI) Create(vpcEndpoint *VPCEndpoint) error

Create creates the VPC endpoint registeration process

func (VPCEndpointAPI) Delete

func (a VPCEndpointAPI) Delete(mwsAcctID, vpcEndpointID string) error

Delete deletes the VPCEndpoint object given a VPCEndpoint id

func (VPCEndpointAPI) List

func (a VPCEndpointAPI) List(mwsAcctID string) ([]VPCEndpoint, error)

List lists all the available network objects in the mws account

func (VPCEndpointAPI) Read

func (a VPCEndpointAPI) Read(mwsAcctID, vpcEndpointID string) (ve VPCEndpoint, err error)

Read returns the VPCEndpoint object along with metadata and any additional errors when attaching to workspace

type Workspace

type Workspace struct {
	AccountID                           string                   `json:"account_id"`
	WorkspaceName                       string                   `json:"workspace_name"`
	DeploymentName                      string                   `json:"deployment_name,omitempty"`
	AwsRegion                           string                   `json:"aws_region,omitempty"`               // required for AWS, not allowed for GCP
	CredentialsID                       string                   `json:"credentials_id,omitempty"`           // required for AWS, not allowed for GCP
	CustomerManagedKeyID                string                   `json:"customer_managed_key_id,omitempty"`  // just for compatibility, will be removed
	StorageConfigurationID              string                   `json:"storage_configuration_id,omitempty"` // required for AWS, not allowed for GCP
	ManagedServicesCustomerManagedKeyID string                   `json:"managed_services_customer_managed_key_id,omitempty"`
	StorageCustomerManagedKeyID         string                   `json:"storage_customer_managed_key_id,omitempty"`
	PricingTier                         string                   `json:"pricing_tier,omitempty" tf:"computed"`
	PrivateAccessSettingsID             string                   `json:"private_access_settings_id,omitempty"`
	NetworkID                           string                   `json:"network_id,omitempty" tf:"suppress_diff"`
	IsNoPublicIPEnabled                 bool                     `json:"is_no_public_ip_enabled" tf:"optional,default:true"`
	WorkspaceID                         int64                    `json:"workspace_id,omitempty" tf:"computed"`
	WorkspaceURL                        string                   `json:"workspace_url,omitempty" tf:"computed"`
	WorkspaceStatus                     string                   `json:"workspace_status,omitempty" tf:"computed"`
	WorkspaceStatusMessage              string                   `json:"workspace_status_message,omitempty" tf:"computed"`
	CreationTime                        int64                    `json:"creation_time,omitempty" tf:"computed"`
	ExternalCustomerInfo                *externalCustomerInfo    `json:"external_customer_info,omitempty"`
	CloudResourceBucket                 *CloudResourceContainer  `json:"cloud_resource_container,omitempty"`
	GCPManagedNetworkConfig             *GCPManagedNetworkConfig `json:"gcp_managed_network_config,omitempty" tf:"suppress_diff"`
	GkeConfig                           *GkeConfig               `json:"gke_config,omitempty" tf:"suppress_diff"`
	Cloud                               string                   `json:"cloud,omitempty" tf:"computed"`
	Location                            string                   `json:"location,omitempty"`
	CustomTags                          map[string]string        `json:"custom_tags,omitempty"` // Optional for AWS, not allowed for GCP
}

Workspace is the object that contains all the information for deploying a workspace

func (*Workspace) MarshalJSON

func (w *Workspace) MarshalJSON() ([]byte, error)

MarshalJSON is required to overcome the limitations of `omitempty` usage with reflect_resource.go for workspace creation in Accounts API for AWS and GCP. It exits early on AWS and picks only the relevant fields for GCP.

type WorkspaceToken

type WorkspaceToken struct {
	WorkspaceURL string `json:"workspace_url,omitempty"`
	Token        *Token `json:"token,omitempty"`
}

ephemeral entity to use with StructToData()

type WorkspacesAPI

type WorkspacesAPI struct {
	// contains filtered or unexported fields
}

WorkspacesAPI exposes the mws workspaces API

func NewWorkspacesAPI

func NewWorkspacesAPI(ctx context.Context, m any) WorkspacesAPI

NewWorkspacesAPI creates MWSWorkspacesAPI instance from provider meta

func (WorkspacesAPI) Create

func (a WorkspacesAPI) Create(ws *Workspace, timeout time.Duration) error

Create deploys the workspace and waits till it's properly running. In case of error, it removes the failed deployment and returns the message

func (WorkspacesAPI) Delete

func (a WorkspacesAPI) Delete(mwsAcctID, workspaceID string) error

Delete will delete the configuration for the workspace given a workspace id and wait till it's properly removed

func (WorkspacesAPI) List

func (a WorkspacesAPI) List(mwsAcctID string) ([]Workspace, error)

List will list all workspaces in a given mws account

func (WorkspacesAPI) Read

func (a WorkspacesAPI) Read(mwsAcctID, workspaceID string) (Workspace, error)

Read will return the mws workspace metadata and status of the workspace deployment

func (WorkspacesAPI) UpdateRunning

func (a WorkspacesAPI) UpdateRunning(ws Workspace, timeout time.Duration) error

UpdateRunning will update running workspace with couple of possible fields

func (WorkspacesAPI) WaitForRunning

func (a WorkspacesAPI) WaitForRunning(ws Workspace, timeout time.Duration) error

WaitForRunning will wait until workspace is running, otherwise will try to explain why it failed

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL