/
getPort.go
221 lines (192 loc) · 7.59 KB
/
getPort.go
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
package metal
import (
"context"
"reflect"
"github.com/equinix/pulumi-equinix/sdk/go/equinix/internal"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// Use this data source to read ports of existing devices. You can read port by either its UUID,
// or by a device UUID and port name.
//
// ## Example Usage
//
// Create a device and read it's eth0 port to the datasource.
//
// <!--Start PulumiCodeChooser -->
// ```go
// package main
//
// import (
//
// "github.com/equinix/pulumi-equinix/sdk/go/equinix/metal"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
//
// )
//
// func main() {
// pulumi.Run(func(ctx *pulumi.Context) error {
// projectId := "<UUID_of_your_project>"
// testDevice, err := metal.NewDevice(ctx, "testDevice", &metal.DeviceArgs{
// Hostname: pulumi.String("tfacc-test-device-port"),
// Plan: pulumi.String(metal.PlanC3MediumX86),
// Metro: pulumi.String("sv"),
// OperatingSystem: pulumi.String(metal.OperatingSystem_Ubuntu20_04),
// BillingCycle: pulumi.String(metal.BillingCycleHourly),
// ProjectId: pulumi.String(projectId),
// })
// if err != nil {
// return err
// }
// _ = metal.LookupPortOutput(ctx, metal.GetPortOutputArgs{
// DeviceId: testDevice.ID(),
// Name: pulumi.String("eth0"),
// }, nil)
// return nil
// })
// }
//
// ```
// <!--End PulumiCodeChooser -->
func LookupPort(ctx *pulumi.Context, args *LookupPortArgs, opts ...pulumi.InvokeOption) (*LookupPortResult, error) {
opts = internal.PkgInvokeDefaultOpts(opts)
var rv LookupPortResult
err := ctx.Invoke("equinix:metal/getPort:getPort", args, &rv, opts...)
if err != nil {
return nil, err
}
return &rv, nil
}
// A collection of arguments for invoking getPort.
type LookupPortArgs struct {
// Device UUID where to lookup the port.
DeviceId *string `pulumi:"deviceId"`
// Name of the port to look up, i.e. `bond0`, `eth1`.
Name *string `pulumi:"name"`
// ID of the port to read, conflicts with `deviceId`.
PortId *string `pulumi:"portId"`
}
// A collection of values returned by getPort.
type LookupPortResult struct {
// UUID of the bond port.
BondId string `pulumi:"bondId"`
// Name of the bond port.
BondName string `pulumi:"bondName"`
// Flag indicating whether the port is bonded.
Bonded bool `pulumi:"bonded"`
DeviceId *string `pulumi:"deviceId"`
// Flag indicating whether the port can be removed from a bond.
DisbondSupported bool `pulumi:"disbondSupported"`
// The provider-assigned unique ID for this managed resource.
Id string `pulumi:"id"`
Layer2 bool `pulumi:"layer2"`
// MAC address of the port.
Mac string `pulumi:"mac"`
Name string `pulumi:"name"`
// UUID of native VLAN of the port.
NativeVlanId string `pulumi:"nativeVlanId"`
// One of `layer2-bonded`, `layer2-individual`, `layer3`, `hybrid`, `hybrid-bonded`.
NetworkType string `pulumi:"networkType"`
PortId *string `pulumi:"portId"`
// Type is either `NetworkBondPort` for bond ports or `NetworkPort` for bondable ethernet ports.
Type string `pulumi:"type"`
// UUIDs of attached VLANs.
VlanIds []string `pulumi:"vlanIds"`
// VXLAN ids of attached VLANs.
VxlanIds []int `pulumi:"vxlanIds"`
}
func LookupPortOutput(ctx *pulumi.Context, args LookupPortOutputArgs, opts ...pulumi.InvokeOption) LookupPortResultOutput {
return pulumi.ToOutputWithContext(context.Background(), args).
ApplyT(func(v interface{}) (LookupPortResult, error) {
args := v.(LookupPortArgs)
r, err := LookupPort(ctx, &args, opts...)
var s LookupPortResult
if r != nil {
s = *r
}
return s, err
}).(LookupPortResultOutput)
}
// A collection of arguments for invoking getPort.
type LookupPortOutputArgs struct {
// Device UUID where to lookup the port.
DeviceId pulumi.StringPtrInput `pulumi:"deviceId"`
// Name of the port to look up, i.e. `bond0`, `eth1`.
Name pulumi.StringPtrInput `pulumi:"name"`
// ID of the port to read, conflicts with `deviceId`.
PortId pulumi.StringPtrInput `pulumi:"portId"`
}
func (LookupPortOutputArgs) ElementType() reflect.Type {
return reflect.TypeOf((*LookupPortArgs)(nil)).Elem()
}
// A collection of values returned by getPort.
type LookupPortResultOutput struct{ *pulumi.OutputState }
func (LookupPortResultOutput) ElementType() reflect.Type {
return reflect.TypeOf((*LookupPortResult)(nil)).Elem()
}
func (o LookupPortResultOutput) ToLookupPortResultOutput() LookupPortResultOutput {
return o
}
func (o LookupPortResultOutput) ToLookupPortResultOutputWithContext(ctx context.Context) LookupPortResultOutput {
return o
}
// UUID of the bond port.
func (o LookupPortResultOutput) BondId() pulumi.StringOutput {
return o.ApplyT(func(v LookupPortResult) string { return v.BondId }).(pulumi.StringOutput)
}
// Name of the bond port.
func (o LookupPortResultOutput) BondName() pulumi.StringOutput {
return o.ApplyT(func(v LookupPortResult) string { return v.BondName }).(pulumi.StringOutput)
}
// Flag indicating whether the port is bonded.
func (o LookupPortResultOutput) Bonded() pulumi.BoolOutput {
return o.ApplyT(func(v LookupPortResult) bool { return v.Bonded }).(pulumi.BoolOutput)
}
func (o LookupPortResultOutput) DeviceId() pulumi.StringPtrOutput {
return o.ApplyT(func(v LookupPortResult) *string { return v.DeviceId }).(pulumi.StringPtrOutput)
}
// Flag indicating whether the port can be removed from a bond.
func (o LookupPortResultOutput) DisbondSupported() pulumi.BoolOutput {
return o.ApplyT(func(v LookupPortResult) bool { return v.DisbondSupported }).(pulumi.BoolOutput)
}
// The provider-assigned unique ID for this managed resource.
func (o LookupPortResultOutput) Id() pulumi.StringOutput {
return o.ApplyT(func(v LookupPortResult) string { return v.Id }).(pulumi.StringOutput)
}
func (o LookupPortResultOutput) Layer2() pulumi.BoolOutput {
return o.ApplyT(func(v LookupPortResult) bool { return v.Layer2 }).(pulumi.BoolOutput)
}
// MAC address of the port.
func (o LookupPortResultOutput) Mac() pulumi.StringOutput {
return o.ApplyT(func(v LookupPortResult) string { return v.Mac }).(pulumi.StringOutput)
}
func (o LookupPortResultOutput) Name() pulumi.StringOutput {
return o.ApplyT(func(v LookupPortResult) string { return v.Name }).(pulumi.StringOutput)
}
// UUID of native VLAN of the port.
func (o LookupPortResultOutput) NativeVlanId() pulumi.StringOutput {
return o.ApplyT(func(v LookupPortResult) string { return v.NativeVlanId }).(pulumi.StringOutput)
}
// One of `layer2-bonded`, `layer2-individual`, `layer3`, `hybrid`, `hybrid-bonded`.
func (o LookupPortResultOutput) NetworkType() pulumi.StringOutput {
return o.ApplyT(func(v LookupPortResult) string { return v.NetworkType }).(pulumi.StringOutput)
}
func (o LookupPortResultOutput) PortId() pulumi.StringPtrOutput {
return o.ApplyT(func(v LookupPortResult) *string { return v.PortId }).(pulumi.StringPtrOutput)
}
// Type is either `NetworkBondPort` for bond ports or `NetworkPort` for bondable ethernet ports.
func (o LookupPortResultOutput) Type() pulumi.StringOutput {
return o.ApplyT(func(v LookupPortResult) string { return v.Type }).(pulumi.StringOutput)
}
// UUIDs of attached VLANs.
func (o LookupPortResultOutput) VlanIds() pulumi.StringArrayOutput {
return o.ApplyT(func(v LookupPortResult) []string { return v.VlanIds }).(pulumi.StringArrayOutput)
}
// VXLAN ids of attached VLANs.
func (o LookupPortResultOutput) VxlanIds() pulumi.IntArrayOutput {
return o.ApplyT(func(v LookupPortResult) []int { return v.VxlanIds }).(pulumi.IntArrayOutput)
}
func init() {
pulumi.RegisterOutputType(LookupPortResultOutput{})
}