github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/directoryservice/trust.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package directoryservice
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // Manages a trust relationship between two Active Directory Directories.
    16  //
    17  // The directories may either be both AWS Managed Microsoft AD domains or an AWS Managed Microsoft AD domain and a self-managed Active Directory Domain.
    18  //
    19  // The Trust relationship must be configured on both sides of the relationship.
    20  // If a Trust has only been created on one side, it will be in the state `VerifyFailed`.
    21  // Once the second Trust is created, the first will update to the correct state.
    22  //
    23  // ## Example Usage
    24  //
    25  // ### Two-Way Trust
    26  //
    27  // <!--Start PulumiCodeChooser -->
    28  // ```go
    29  // package main
    30  //
    31  // import (
    32  //
    33  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/directoryservice"
    34  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    35  //
    36  // )
    37  //
    38  //	func main() {
    39  //		pulumi.Run(func(ctx *pulumi.Context) error {
    40  //			oneDirectory, err := directoryservice.NewDirectory(ctx, "one", &directoryservice.DirectoryArgs{
    41  //				Name: pulumi.String("one.example.com"),
    42  //				Type: pulumi.String("MicrosoftAD"),
    43  //			})
    44  //			if err != nil {
    45  //				return err
    46  //			}
    47  //			twoDirectory, err := directoryservice.NewDirectory(ctx, "two", &directoryservice.DirectoryArgs{
    48  //				Name: pulumi.String("two.example.com"),
    49  //				Type: pulumi.String("MicrosoftAD"),
    50  //			})
    51  //			if err != nil {
    52  //				return err
    53  //			}
    54  //			_, err = directoryservice.NewTrust(ctx, "one", &directoryservice.TrustArgs{
    55  //				DirectoryId:                 oneDirectory.ID(),
    56  //				RemoteDomainName:            twoDirectory.Name,
    57  //				TrustDirection:              pulumi.String("Two-Way"),
    58  //				TrustPassword:               pulumi.String("Some0therPassword"),
    59  //				ConditionalForwarderIpAddrs: twoDirectory.DnsIpAddresses,
    60  //			})
    61  //			if err != nil {
    62  //				return err
    63  //			}
    64  //			_, err = directoryservice.NewTrust(ctx, "two", &directoryservice.TrustArgs{
    65  //				DirectoryId:                 twoDirectory.ID(),
    66  //				RemoteDomainName:            oneDirectory.Name,
    67  //				TrustDirection:              pulumi.String("Two-Way"),
    68  //				TrustPassword:               pulumi.String("Some0therPassword"),
    69  //				ConditionalForwarderIpAddrs: oneDirectory.DnsIpAddresses,
    70  //			})
    71  //			if err != nil {
    72  //				return err
    73  //			}
    74  //			return nil
    75  //		})
    76  //	}
    77  //
    78  // ```
    79  // <!--End PulumiCodeChooser -->
    80  //
    81  // ### One-Way Trust
    82  //
    83  // <!--Start PulumiCodeChooser -->
    84  // ```go
    85  // package main
    86  //
    87  // import (
    88  //
    89  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/directoryservice"
    90  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    91  //
    92  // )
    93  //
    94  //	func main() {
    95  //		pulumi.Run(func(ctx *pulumi.Context) error {
    96  //			oneDirectory, err := directoryservice.NewDirectory(ctx, "one", &directoryservice.DirectoryArgs{
    97  //				Name: pulumi.String("one.example.com"),
    98  //				Type: pulumi.String("MicrosoftAD"),
    99  //			})
   100  //			if err != nil {
   101  //				return err
   102  //			}
   103  //			twoDirectory, err := directoryservice.NewDirectory(ctx, "two", &directoryservice.DirectoryArgs{
   104  //				Name: pulumi.String("two.example.com"),
   105  //				Type: pulumi.String("MicrosoftAD"),
   106  //			})
   107  //			if err != nil {
   108  //				return err
   109  //			}
   110  //			_, err = directoryservice.NewTrust(ctx, "one", &directoryservice.TrustArgs{
   111  //				DirectoryId:                 oneDirectory.ID(),
   112  //				RemoteDomainName:            twoDirectory.Name,
   113  //				TrustDirection:              pulumi.String("One-Way: Incoming"),
   114  //				TrustPassword:               pulumi.String("Some0therPassword"),
   115  //				ConditionalForwarderIpAddrs: twoDirectory.DnsIpAddresses,
   116  //			})
   117  //			if err != nil {
   118  //				return err
   119  //			}
   120  //			_, err = directoryservice.NewTrust(ctx, "two", &directoryservice.TrustArgs{
   121  //				DirectoryId:                 twoDirectory.ID(),
   122  //				RemoteDomainName:            oneDirectory.Name,
   123  //				TrustDirection:              pulumi.String("One-Way: Outgoing"),
   124  //				TrustPassword:               pulumi.String("Some0therPassword"),
   125  //				ConditionalForwarderIpAddrs: oneDirectory.DnsIpAddresses,
   126  //			})
   127  //			if err != nil {
   128  //				return err
   129  //			}
   130  //			return nil
   131  //		})
   132  //	}
   133  //
   134  // ```
   135  // <!--End PulumiCodeChooser -->
   136  //
   137  // ## Import
   138  //
   139  // Using `pulumi import`, import the Trust relationship using the directory ID and remote domain name, separated by a `/`. For example:
   140  //
   141  // ```sh
   142  // $ pulumi import aws:directoryservice/trust:Trust example d-926724cf57/directory.example.com
   143  // ```
   144  type Trust struct {
   145  	pulumi.CustomResourceState
   146  
   147  	// Set of IPv4 addresses for the DNS server associated with the remote Directory.
   148  	// Can contain between 1 and 4 values.
   149  	ConditionalForwarderIpAddrs pulumi.StringArrayOutput `pulumi:"conditionalForwarderIpAddrs"`
   150  	// Date and time when the Trust was created.
   151  	CreatedDateTime pulumi.StringOutput `pulumi:"createdDateTime"`
   152  	// Whether to delete the conditional forwarder when deleting the Trust relationship.
   153  	DeleteAssociatedConditionalForwarder pulumi.BoolOutput `pulumi:"deleteAssociatedConditionalForwarder"`
   154  	// ID of the Directory.
   155  	DirectoryId pulumi.StringOutput `pulumi:"directoryId"`
   156  	// Date and time when the Trust was last updated.
   157  	LastUpdatedDateTime pulumi.StringOutput `pulumi:"lastUpdatedDateTime"`
   158  	// Fully qualified domain name of the remote Directory.
   159  	RemoteDomainName pulumi.StringOutput `pulumi:"remoteDomainName"`
   160  	// Whether to enable selective authentication.
   161  	// Valid values are `Enabled` and `Disabled`.
   162  	// Default value is `Disabled`.
   163  	SelectiveAuth pulumi.StringOutput `pulumi:"selectiveAuth"`
   164  	// Date and time when the Trust state in `trustState` was last updated.
   165  	StateLastUpdatedDateTime pulumi.StringOutput `pulumi:"stateLastUpdatedDateTime"`
   166  	// The direction of the Trust relationship.
   167  	// Valid values are `One-Way: Outgoing`, `One-Way: Incoming`, and `Two-Way`.
   168  	TrustDirection pulumi.StringOutput `pulumi:"trustDirection"`
   169  	// Password for the Trust.
   170  	// Does not need to match the passwords for either Directory.
   171  	// Can contain upper- and lower-case letters, numbers, and punctuation characters.
   172  	// May be up to 128 characters long.
   173  	TrustPassword pulumi.StringOutput `pulumi:"trustPassword"`
   174  	// State of the Trust relationship.
   175  	// One of `Created`, `VerifyFailed`,`Verified`, `UpdateFailed`,`Updated`,`Deleted`, or `Failed`.
   176  	TrustState pulumi.StringOutput `pulumi:"trustState"`
   177  	// Reason for the Trust state set in `trustState`.
   178  	TrustStateReason pulumi.StringOutput `pulumi:"trustStateReason"`
   179  	// Type of the Trust relationship.
   180  	// Valid values are `Forest` and `External`.
   181  	// Default value is `Forest`.
   182  	TrustType pulumi.StringOutput `pulumi:"trustType"`
   183  }
   184  
   185  // NewTrust registers a new resource with the given unique name, arguments, and options.
   186  func NewTrust(ctx *pulumi.Context,
   187  	name string, args *TrustArgs, opts ...pulumi.ResourceOption) (*Trust, error) {
   188  	if args == nil {
   189  		return nil, errors.New("missing one or more required arguments")
   190  	}
   191  
   192  	if args.DirectoryId == nil {
   193  		return nil, errors.New("invalid value for required argument 'DirectoryId'")
   194  	}
   195  	if args.RemoteDomainName == nil {
   196  		return nil, errors.New("invalid value for required argument 'RemoteDomainName'")
   197  	}
   198  	if args.TrustDirection == nil {
   199  		return nil, errors.New("invalid value for required argument 'TrustDirection'")
   200  	}
   201  	if args.TrustPassword == nil {
   202  		return nil, errors.New("invalid value for required argument 'TrustPassword'")
   203  	}
   204  	opts = internal.PkgResourceDefaultOpts(opts)
   205  	var resource Trust
   206  	err := ctx.RegisterResource("aws:directoryservice/trust:Trust", name, args, &resource, opts...)
   207  	if err != nil {
   208  		return nil, err
   209  	}
   210  	return &resource, nil
   211  }
   212  
   213  // GetTrust gets an existing Trust resource's state with the given name, ID, and optional
   214  // state properties that are used to uniquely qualify the lookup (nil if not required).
   215  func GetTrust(ctx *pulumi.Context,
   216  	name string, id pulumi.IDInput, state *TrustState, opts ...pulumi.ResourceOption) (*Trust, error) {
   217  	var resource Trust
   218  	err := ctx.ReadResource("aws:directoryservice/trust:Trust", name, id, state, &resource, opts...)
   219  	if err != nil {
   220  		return nil, err
   221  	}
   222  	return &resource, nil
   223  }
   224  
   225  // Input properties used for looking up and filtering Trust resources.
   226  type trustState struct {
   227  	// Set of IPv4 addresses for the DNS server associated with the remote Directory.
   228  	// Can contain between 1 and 4 values.
   229  	ConditionalForwarderIpAddrs []string `pulumi:"conditionalForwarderIpAddrs"`
   230  	// Date and time when the Trust was created.
   231  	CreatedDateTime *string `pulumi:"createdDateTime"`
   232  	// Whether to delete the conditional forwarder when deleting the Trust relationship.
   233  	DeleteAssociatedConditionalForwarder *bool `pulumi:"deleteAssociatedConditionalForwarder"`
   234  	// ID of the Directory.
   235  	DirectoryId *string `pulumi:"directoryId"`
   236  	// Date and time when the Trust was last updated.
   237  	LastUpdatedDateTime *string `pulumi:"lastUpdatedDateTime"`
   238  	// Fully qualified domain name of the remote Directory.
   239  	RemoteDomainName *string `pulumi:"remoteDomainName"`
   240  	// Whether to enable selective authentication.
   241  	// Valid values are `Enabled` and `Disabled`.
   242  	// Default value is `Disabled`.
   243  	SelectiveAuth *string `pulumi:"selectiveAuth"`
   244  	// Date and time when the Trust state in `trustState` was last updated.
   245  	StateLastUpdatedDateTime *string `pulumi:"stateLastUpdatedDateTime"`
   246  	// The direction of the Trust relationship.
   247  	// Valid values are `One-Way: Outgoing`, `One-Way: Incoming`, and `Two-Way`.
   248  	TrustDirection *string `pulumi:"trustDirection"`
   249  	// Password for the Trust.
   250  	// Does not need to match the passwords for either Directory.
   251  	// Can contain upper- and lower-case letters, numbers, and punctuation characters.
   252  	// May be up to 128 characters long.
   253  	TrustPassword *string `pulumi:"trustPassword"`
   254  	// State of the Trust relationship.
   255  	// One of `Created`, `VerifyFailed`,`Verified`, `UpdateFailed`,`Updated`,`Deleted`, or `Failed`.
   256  	TrustState *string `pulumi:"trustState"`
   257  	// Reason for the Trust state set in `trustState`.
   258  	TrustStateReason *string `pulumi:"trustStateReason"`
   259  	// Type of the Trust relationship.
   260  	// Valid values are `Forest` and `External`.
   261  	// Default value is `Forest`.
   262  	TrustType *string `pulumi:"trustType"`
   263  }
   264  
   265  type TrustState struct {
   266  	// Set of IPv4 addresses for the DNS server associated with the remote Directory.
   267  	// Can contain between 1 and 4 values.
   268  	ConditionalForwarderIpAddrs pulumi.StringArrayInput
   269  	// Date and time when the Trust was created.
   270  	CreatedDateTime pulumi.StringPtrInput
   271  	// Whether to delete the conditional forwarder when deleting the Trust relationship.
   272  	DeleteAssociatedConditionalForwarder pulumi.BoolPtrInput
   273  	// ID of the Directory.
   274  	DirectoryId pulumi.StringPtrInput
   275  	// Date and time when the Trust was last updated.
   276  	LastUpdatedDateTime pulumi.StringPtrInput
   277  	// Fully qualified domain name of the remote Directory.
   278  	RemoteDomainName pulumi.StringPtrInput
   279  	// Whether to enable selective authentication.
   280  	// Valid values are `Enabled` and `Disabled`.
   281  	// Default value is `Disabled`.
   282  	SelectiveAuth pulumi.StringPtrInput
   283  	// Date and time when the Trust state in `trustState` was last updated.
   284  	StateLastUpdatedDateTime pulumi.StringPtrInput
   285  	// The direction of the Trust relationship.
   286  	// Valid values are `One-Way: Outgoing`, `One-Way: Incoming`, and `Two-Way`.
   287  	TrustDirection pulumi.StringPtrInput
   288  	// Password for the Trust.
   289  	// Does not need to match the passwords for either Directory.
   290  	// Can contain upper- and lower-case letters, numbers, and punctuation characters.
   291  	// May be up to 128 characters long.
   292  	TrustPassword pulumi.StringPtrInput
   293  	// State of the Trust relationship.
   294  	// One of `Created`, `VerifyFailed`,`Verified`, `UpdateFailed`,`Updated`,`Deleted`, or `Failed`.
   295  	TrustState pulumi.StringPtrInput
   296  	// Reason for the Trust state set in `trustState`.
   297  	TrustStateReason pulumi.StringPtrInput
   298  	// Type of the Trust relationship.
   299  	// Valid values are `Forest` and `External`.
   300  	// Default value is `Forest`.
   301  	TrustType pulumi.StringPtrInput
   302  }
   303  
   304  func (TrustState) ElementType() reflect.Type {
   305  	return reflect.TypeOf((*trustState)(nil)).Elem()
   306  }
   307  
   308  type trustArgs struct {
   309  	// Set of IPv4 addresses for the DNS server associated with the remote Directory.
   310  	// Can contain between 1 and 4 values.
   311  	ConditionalForwarderIpAddrs []string `pulumi:"conditionalForwarderIpAddrs"`
   312  	// Whether to delete the conditional forwarder when deleting the Trust relationship.
   313  	DeleteAssociatedConditionalForwarder *bool `pulumi:"deleteAssociatedConditionalForwarder"`
   314  	// ID of the Directory.
   315  	DirectoryId string `pulumi:"directoryId"`
   316  	// Fully qualified domain name of the remote Directory.
   317  	RemoteDomainName string `pulumi:"remoteDomainName"`
   318  	// Whether to enable selective authentication.
   319  	// Valid values are `Enabled` and `Disabled`.
   320  	// Default value is `Disabled`.
   321  	SelectiveAuth *string `pulumi:"selectiveAuth"`
   322  	// The direction of the Trust relationship.
   323  	// Valid values are `One-Way: Outgoing`, `One-Way: Incoming`, and `Two-Way`.
   324  	TrustDirection string `pulumi:"trustDirection"`
   325  	// Password for the Trust.
   326  	// Does not need to match the passwords for either Directory.
   327  	// Can contain upper- and lower-case letters, numbers, and punctuation characters.
   328  	// May be up to 128 characters long.
   329  	TrustPassword string `pulumi:"trustPassword"`
   330  	// Type of the Trust relationship.
   331  	// Valid values are `Forest` and `External`.
   332  	// Default value is `Forest`.
   333  	TrustType *string `pulumi:"trustType"`
   334  }
   335  
   336  // The set of arguments for constructing a Trust resource.
   337  type TrustArgs struct {
   338  	// Set of IPv4 addresses for the DNS server associated with the remote Directory.
   339  	// Can contain between 1 and 4 values.
   340  	ConditionalForwarderIpAddrs pulumi.StringArrayInput
   341  	// Whether to delete the conditional forwarder when deleting the Trust relationship.
   342  	DeleteAssociatedConditionalForwarder pulumi.BoolPtrInput
   343  	// ID of the Directory.
   344  	DirectoryId pulumi.StringInput
   345  	// Fully qualified domain name of the remote Directory.
   346  	RemoteDomainName pulumi.StringInput
   347  	// Whether to enable selective authentication.
   348  	// Valid values are `Enabled` and `Disabled`.
   349  	// Default value is `Disabled`.
   350  	SelectiveAuth pulumi.StringPtrInput
   351  	// The direction of the Trust relationship.
   352  	// Valid values are `One-Way: Outgoing`, `One-Way: Incoming`, and `Two-Way`.
   353  	TrustDirection pulumi.StringInput
   354  	// Password for the Trust.
   355  	// Does not need to match the passwords for either Directory.
   356  	// Can contain upper- and lower-case letters, numbers, and punctuation characters.
   357  	// May be up to 128 characters long.
   358  	TrustPassword pulumi.StringInput
   359  	// Type of the Trust relationship.
   360  	// Valid values are `Forest` and `External`.
   361  	// Default value is `Forest`.
   362  	TrustType pulumi.StringPtrInput
   363  }
   364  
   365  func (TrustArgs) ElementType() reflect.Type {
   366  	return reflect.TypeOf((*trustArgs)(nil)).Elem()
   367  }
   368  
   369  type TrustInput interface {
   370  	pulumi.Input
   371  
   372  	ToTrustOutput() TrustOutput
   373  	ToTrustOutputWithContext(ctx context.Context) TrustOutput
   374  }
   375  
   376  func (*Trust) ElementType() reflect.Type {
   377  	return reflect.TypeOf((**Trust)(nil)).Elem()
   378  }
   379  
   380  func (i *Trust) ToTrustOutput() TrustOutput {
   381  	return i.ToTrustOutputWithContext(context.Background())
   382  }
   383  
   384  func (i *Trust) ToTrustOutputWithContext(ctx context.Context) TrustOutput {
   385  	return pulumi.ToOutputWithContext(ctx, i).(TrustOutput)
   386  }
   387  
   388  // TrustArrayInput is an input type that accepts TrustArray and TrustArrayOutput values.
   389  // You can construct a concrete instance of `TrustArrayInput` via:
   390  //
   391  //	TrustArray{ TrustArgs{...} }
   392  type TrustArrayInput interface {
   393  	pulumi.Input
   394  
   395  	ToTrustArrayOutput() TrustArrayOutput
   396  	ToTrustArrayOutputWithContext(context.Context) TrustArrayOutput
   397  }
   398  
   399  type TrustArray []TrustInput
   400  
   401  func (TrustArray) ElementType() reflect.Type {
   402  	return reflect.TypeOf((*[]*Trust)(nil)).Elem()
   403  }
   404  
   405  func (i TrustArray) ToTrustArrayOutput() TrustArrayOutput {
   406  	return i.ToTrustArrayOutputWithContext(context.Background())
   407  }
   408  
   409  func (i TrustArray) ToTrustArrayOutputWithContext(ctx context.Context) TrustArrayOutput {
   410  	return pulumi.ToOutputWithContext(ctx, i).(TrustArrayOutput)
   411  }
   412  
   413  // TrustMapInput is an input type that accepts TrustMap and TrustMapOutput values.
   414  // You can construct a concrete instance of `TrustMapInput` via:
   415  //
   416  //	TrustMap{ "key": TrustArgs{...} }
   417  type TrustMapInput interface {
   418  	pulumi.Input
   419  
   420  	ToTrustMapOutput() TrustMapOutput
   421  	ToTrustMapOutputWithContext(context.Context) TrustMapOutput
   422  }
   423  
   424  type TrustMap map[string]TrustInput
   425  
   426  func (TrustMap) ElementType() reflect.Type {
   427  	return reflect.TypeOf((*map[string]*Trust)(nil)).Elem()
   428  }
   429  
   430  func (i TrustMap) ToTrustMapOutput() TrustMapOutput {
   431  	return i.ToTrustMapOutputWithContext(context.Background())
   432  }
   433  
   434  func (i TrustMap) ToTrustMapOutputWithContext(ctx context.Context) TrustMapOutput {
   435  	return pulumi.ToOutputWithContext(ctx, i).(TrustMapOutput)
   436  }
   437  
   438  type TrustOutput struct{ *pulumi.OutputState }
   439  
   440  func (TrustOutput) ElementType() reflect.Type {
   441  	return reflect.TypeOf((**Trust)(nil)).Elem()
   442  }
   443  
   444  func (o TrustOutput) ToTrustOutput() TrustOutput {
   445  	return o
   446  }
   447  
   448  func (o TrustOutput) ToTrustOutputWithContext(ctx context.Context) TrustOutput {
   449  	return o
   450  }
   451  
   452  // Set of IPv4 addresses for the DNS server associated with the remote Directory.
   453  // Can contain between 1 and 4 values.
   454  func (o TrustOutput) ConditionalForwarderIpAddrs() pulumi.StringArrayOutput {
   455  	return o.ApplyT(func(v *Trust) pulumi.StringArrayOutput { return v.ConditionalForwarderIpAddrs }).(pulumi.StringArrayOutput)
   456  }
   457  
   458  // Date and time when the Trust was created.
   459  func (o TrustOutput) CreatedDateTime() pulumi.StringOutput {
   460  	return o.ApplyT(func(v *Trust) pulumi.StringOutput { return v.CreatedDateTime }).(pulumi.StringOutput)
   461  }
   462  
   463  // Whether to delete the conditional forwarder when deleting the Trust relationship.
   464  func (o TrustOutput) DeleteAssociatedConditionalForwarder() pulumi.BoolOutput {
   465  	return o.ApplyT(func(v *Trust) pulumi.BoolOutput { return v.DeleteAssociatedConditionalForwarder }).(pulumi.BoolOutput)
   466  }
   467  
   468  // ID of the Directory.
   469  func (o TrustOutput) DirectoryId() pulumi.StringOutput {
   470  	return o.ApplyT(func(v *Trust) pulumi.StringOutput { return v.DirectoryId }).(pulumi.StringOutput)
   471  }
   472  
   473  // Date and time when the Trust was last updated.
   474  func (o TrustOutput) LastUpdatedDateTime() pulumi.StringOutput {
   475  	return o.ApplyT(func(v *Trust) pulumi.StringOutput { return v.LastUpdatedDateTime }).(pulumi.StringOutput)
   476  }
   477  
   478  // Fully qualified domain name of the remote Directory.
   479  func (o TrustOutput) RemoteDomainName() pulumi.StringOutput {
   480  	return o.ApplyT(func(v *Trust) pulumi.StringOutput { return v.RemoteDomainName }).(pulumi.StringOutput)
   481  }
   482  
   483  // Whether to enable selective authentication.
   484  // Valid values are `Enabled` and `Disabled`.
   485  // Default value is `Disabled`.
   486  func (o TrustOutput) SelectiveAuth() pulumi.StringOutput {
   487  	return o.ApplyT(func(v *Trust) pulumi.StringOutput { return v.SelectiveAuth }).(pulumi.StringOutput)
   488  }
   489  
   490  // Date and time when the Trust state in `trustState` was last updated.
   491  func (o TrustOutput) StateLastUpdatedDateTime() pulumi.StringOutput {
   492  	return o.ApplyT(func(v *Trust) pulumi.StringOutput { return v.StateLastUpdatedDateTime }).(pulumi.StringOutput)
   493  }
   494  
   495  // The direction of the Trust relationship.
   496  // Valid values are `One-Way: Outgoing`, `One-Way: Incoming`, and `Two-Way`.
   497  func (o TrustOutput) TrustDirection() pulumi.StringOutput {
   498  	return o.ApplyT(func(v *Trust) pulumi.StringOutput { return v.TrustDirection }).(pulumi.StringOutput)
   499  }
   500  
   501  // Password for the Trust.
   502  // Does not need to match the passwords for either Directory.
   503  // Can contain upper- and lower-case letters, numbers, and punctuation characters.
   504  // May be up to 128 characters long.
   505  func (o TrustOutput) TrustPassword() pulumi.StringOutput {
   506  	return o.ApplyT(func(v *Trust) pulumi.StringOutput { return v.TrustPassword }).(pulumi.StringOutput)
   507  }
   508  
   509  // State of the Trust relationship.
   510  // One of `Created`, `VerifyFailed`,`Verified`, `UpdateFailed`,`Updated`,`Deleted`, or `Failed`.
   511  func (o TrustOutput) TrustState() pulumi.StringOutput {
   512  	return o.ApplyT(func(v *Trust) pulumi.StringOutput { return v.TrustState }).(pulumi.StringOutput)
   513  }
   514  
   515  // Reason for the Trust state set in `trustState`.
   516  func (o TrustOutput) TrustStateReason() pulumi.StringOutput {
   517  	return o.ApplyT(func(v *Trust) pulumi.StringOutput { return v.TrustStateReason }).(pulumi.StringOutput)
   518  }
   519  
   520  // Type of the Trust relationship.
   521  // Valid values are `Forest` and `External`.
   522  // Default value is `Forest`.
   523  func (o TrustOutput) TrustType() pulumi.StringOutput {
   524  	return o.ApplyT(func(v *Trust) pulumi.StringOutput { return v.TrustType }).(pulumi.StringOutput)
   525  }
   526  
   527  type TrustArrayOutput struct{ *pulumi.OutputState }
   528  
   529  func (TrustArrayOutput) ElementType() reflect.Type {
   530  	return reflect.TypeOf((*[]*Trust)(nil)).Elem()
   531  }
   532  
   533  func (o TrustArrayOutput) ToTrustArrayOutput() TrustArrayOutput {
   534  	return o
   535  }
   536  
   537  func (o TrustArrayOutput) ToTrustArrayOutputWithContext(ctx context.Context) TrustArrayOutput {
   538  	return o
   539  }
   540  
   541  func (o TrustArrayOutput) Index(i pulumi.IntInput) TrustOutput {
   542  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Trust {
   543  		return vs[0].([]*Trust)[vs[1].(int)]
   544  	}).(TrustOutput)
   545  }
   546  
   547  type TrustMapOutput struct{ *pulumi.OutputState }
   548  
   549  func (TrustMapOutput) ElementType() reflect.Type {
   550  	return reflect.TypeOf((*map[string]*Trust)(nil)).Elem()
   551  }
   552  
   553  func (o TrustMapOutput) ToTrustMapOutput() TrustMapOutput {
   554  	return o
   555  }
   556  
   557  func (o TrustMapOutput) ToTrustMapOutputWithContext(ctx context.Context) TrustMapOutput {
   558  	return o
   559  }
   560  
   561  func (o TrustMapOutput) MapIndex(k pulumi.StringInput) TrustOutput {
   562  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Trust {
   563  		return vs[0].(map[string]*Trust)[vs[1].(string)]
   564  	}).(TrustOutput)
   565  }
   566  
   567  func init() {
   568  	pulumi.RegisterInputType(reflect.TypeOf((*TrustInput)(nil)).Elem(), &Trust{})
   569  	pulumi.RegisterInputType(reflect.TypeOf((*TrustArrayInput)(nil)).Elem(), TrustArray{})
   570  	pulumi.RegisterInputType(reflect.TypeOf((*TrustMapInput)(nil)).Elem(), TrustMap{})
   571  	pulumi.RegisterOutputType(TrustOutput{})
   572  	pulumi.RegisterOutputType(TrustArrayOutput{})
   573  	pulumi.RegisterOutputType(TrustMapOutput{})
   574  }