88 "fmt"
99 "log"
1010
11- "github.com/IBM/vpc-beta- go-sdk/vpcbetav1 "
11+ "github.com/IBM/vpc-go-sdk/vpcv1 "
1212 "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1313 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1414
@@ -26,6 +26,71 @@ func DataSourceIBMIsVirtualNetworkInterface() *schema.Resource {
2626 Required : true ,
2727 Description : "The network interface identifier." ,
2828 },
29+ // vni p2 changes
30+ "allow_ip_spoofing" : & schema.Schema {
31+ Type : schema .TypeBool ,
32+ Computed : true ,
33+ Description : "Indicates whether source IP spoofing is allowed on this interface. If `false`, source IP spoofing is prevented on this interface. If `true`, source IP spoofing is allowed on this interface." ,
34+ },
35+ "enable_infrastructure_nat" : & schema.Schema {
36+ Type : schema .TypeBool ,
37+ Computed : true ,
38+ Description : "If `true`:- The VPC infrastructure performs any needed NAT operations.- `floating_ips` must not have more than one floating IP.If `false`:- Packets are passed unchanged to/from the virtual network interface, allowing the workload to perform any needed NAT operations.- `allow_ip_spoofing` must be `false`.- If the virtual network interface is attached: - The target `resource_type` must be `bare_metal_server_network_attachment`. - The target `interface_type` must not be `hipersocket`." ,
39+ },
40+ "ips" : & schema.Schema {
41+ Type : schema .TypeList ,
42+ Computed : true ,
43+ Description : "The reserved IPs bound to this virtual network interface.May be empty when `lifecycle_state` is `pending`." ,
44+ Elem : & schema.Resource {
45+ Schema : map [string ]* schema.Schema {
46+ "address" : & schema.Schema {
47+ Type : schema .TypeString ,
48+ Computed : true ,
49+ Description : "The IP address.If the address has not yet been selected, the value will be `0.0.0.0`.This property may add support for IPv6 addresses in the future. When processing a value in this property, verify that the address is in an expected format. If it is not, log an error. Optionally halt processing and surface the error, or bypass the resource on which the unexpected IP address format was encountered." ,
50+ },
51+ "deleted" : & schema.Schema {
52+ Type : schema .TypeList ,
53+ Computed : true ,
54+ Description : "If present, this property indicates the referenced resource has been deleted, and providessome supplementary information." ,
55+ Elem : & schema.Resource {
56+ Schema : map [string ]* schema.Schema {
57+ "more_info" : & schema.Schema {
58+ Type : schema .TypeString ,
59+ Computed : true ,
60+ Description : "Link to documentation about deleted resources." ,
61+ },
62+ },
63+ },
64+ },
65+ "href" : & schema.Schema {
66+ Type : schema .TypeString ,
67+ Computed : true ,
68+ Description : "The URL for this reserved IP." ,
69+ },
70+ "id" : & schema.Schema {
71+ Type : schema .TypeString ,
72+ Computed : true ,
73+ Description : "The unique identifier for this reserved IP." ,
74+ },
75+ "name" : & schema.Schema {
76+ Type : schema .TypeString ,
77+ Computed : true ,
78+ Description : "The name for this reserved IP. The name is unique across all reserved IPs in a subnet." ,
79+ },
80+ "resource_type" : & schema.Schema {
81+ Type : schema .TypeString ,
82+ Computed : true ,
83+ Description : "The resource type." ,
84+ },
85+ },
86+ },
87+ },
88+ "mac_address" : & schema.Schema {
89+ Type : schema .TypeString ,
90+ Computed : true ,
91+ Description : "The MAC address of the virtual network interface. May be absent if `lifecycle_state` is `pending`." ,
92+ },
93+
2994 "auto_delete" : {
3095 Type : schema .TypeBool ,
3196 Computed : true ,
@@ -339,12 +404,12 @@ func DataSourceIBMIsVirtualNetworkInterface() *schema.Resource {
339404}
340405
341406func dataSourceIBMIsVirtualNetworkInterfaceRead (context context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
342- vpcbetaClient , err := meta .(conns.ClientSession ).VpcV1BetaAPI ()
407+ vpcbetaClient , err := meta .(conns.ClientSession ).VpcV1API ()
343408 if err != nil {
344409 return diag .FromErr (err )
345410 }
346411
347- getVirtualNetworkInterfaceOptions := & vpcbetav1 .GetVirtualNetworkInterfaceOptions {}
412+ getVirtualNetworkInterfaceOptions := & vpcv1 .GetVirtualNetworkInterfaceOptions {}
348413
349414 getVirtualNetworkInterfaceOptions .SetID (d .Get ("virtual_network_interface" ).(string ))
350415
@@ -470,10 +535,38 @@ func dataSourceIBMIsVirtualNetworkInterfaceRead(context context.Context, d *sche
470535 return diag .FromErr (fmt .Errorf ("Error setting zone %s" , err ))
471536 }
472537
538+ // vni p2 changes
539+
540+ if err = d .Set ("mac_address" , virtualNetworkInterface .MacAddress ); err != nil {
541+ return diag .FromErr (fmt .Errorf ("Error setting mac_address: %s" , err ))
542+ }
543+ if err = d .Set ("allow_ip_spoofing" , virtualNetworkInterface .AllowIPSpoofing ); err != nil {
544+ return diag .FromErr (fmt .Errorf ("Error setting allow_ip_spoofing: %s" , err ))
545+ }
546+ if err = d .Set ("enable_infrastructure_nat" , virtualNetworkInterface .EnableInfrastructureNat ); err != nil {
547+ return diag .FromErr (fmt .Errorf ("Error setting enable_infrastructure_nat: %s" , err ))
548+ }
549+
550+ ips := []map [string ]interface {}{}
551+ if virtualNetworkInterface .Ips != nil {
552+ for _ , modelItem := range virtualNetworkInterface .Ips {
553+ if * modelItem .ID != * virtualNetworkInterface .PrimaryIP .ID {
554+ modelMap , err := dataSourceIBMIsVirtualNetworkInterfaceReservedIPReferenceToMap (& modelItem )
555+ if err != nil {
556+ return diag .FromErr (err )
557+ }
558+ ips = append (ips , modelMap )
559+ }
560+ }
561+ }
562+ if err = d .Set ("ips" , ips ); err != nil {
563+ return diag .FromErr (fmt .Errorf ("Error setting ips %s" , err ))
564+ }
565+
473566 return nil
474567}
475568
476- func dataSourceIBMIsVirtualNetworkInterfaceReservedIPReferenceToMap (model * vpcbetav1 .ReservedIPReference ) (map [string ]interface {}, error ) {
569+ func dataSourceIBMIsVirtualNetworkInterfaceReservedIPReferenceToMap (model * vpcv1 .ReservedIPReference ) (map [string ]interface {}, error ) {
477570 modelMap := make (map [string ]interface {})
478571 if model .Address != nil {
479572 modelMap ["address" ] = * model .Address
@@ -500,15 +593,15 @@ func dataSourceIBMIsVirtualNetworkInterfaceReservedIPReferenceToMap(model *vpcbe
500593 return modelMap , nil
501594}
502595
503- func dataSourceIBMIsVirtualNetworkInterfaceReservedIPReferenceDeletedToMap (model * vpcbetav1 .ReservedIPReferenceDeleted ) (map [string ]interface {}, error ) {
596+ func dataSourceIBMIsVirtualNetworkInterfaceReservedIPReferenceDeletedToMap (model * vpcv1 .ReservedIPReferenceDeleted ) (map [string ]interface {}, error ) {
504597 modelMap := make (map [string ]interface {})
505598 if model .MoreInfo != nil {
506599 modelMap ["more_info" ] = * model .MoreInfo
507600 }
508601 return modelMap , nil
509602}
510603
511- func dataSourceIBMIsVirtualNetworkInterfaceResourceGroupReferenceToMap (model * vpcbetav1 .ResourceGroupReference ) (map [string ]interface {}, error ) {
604+ func dataSourceIBMIsVirtualNetworkInterfaceResourceGroupReferenceToMap (model * vpcv1 .ResourceGroupReference ) (map [string ]interface {}, error ) {
512605 modelMap := make (map [string ]interface {})
513606 if model .Href != nil {
514607 modelMap ["href" ] = * model .Href
@@ -522,7 +615,7 @@ func dataSourceIBMIsVirtualNetworkInterfaceResourceGroupReferenceToMap(model *vp
522615 return modelMap , nil
523616}
524617
525- func dataSourceIBMIsVirtualNetworkInterfaceSecurityGroupReferenceToMap (model * vpcbetav1 .SecurityGroupReference ) (map [string ]interface {}, error ) {
618+ func dataSourceIBMIsVirtualNetworkInterfaceSecurityGroupReferenceToMap (model * vpcv1 .SecurityGroupReference ) (map [string ]interface {}, error ) {
526619 modelMap := make (map [string ]interface {})
527620 if model .CRN != nil {
528621 modelMap ["crn" ] = * model .CRN
@@ -546,15 +639,15 @@ func dataSourceIBMIsVirtualNetworkInterfaceSecurityGroupReferenceToMap(model *vp
546639 return modelMap , nil
547640}
548641
549- func dataSourceIBMIsVirtualNetworkInterfaceSecurityGroupReferenceDeletedToMap (model * vpcbetav1 .SecurityGroupReferenceDeleted ) (map [string ]interface {}, error ) {
642+ func dataSourceIBMIsVirtualNetworkInterfaceSecurityGroupReferenceDeletedToMap (model * vpcv1 .SecurityGroupReferenceDeleted ) (map [string ]interface {}, error ) {
550643 modelMap := make (map [string ]interface {})
551644 if model .MoreInfo != nil {
552645 modelMap ["more_info" ] = * model .MoreInfo
553646 }
554647 return modelMap , nil
555648}
556649
557- func dataSourceIBMIsVirtualNetworkInterfaceSubnetReferenceToMap (model * vpcbetav1 .SubnetReference ) (map [string ]interface {}, error ) {
650+ func dataSourceIBMIsVirtualNetworkInterfaceSubnetReferenceToMap (model * vpcv1 .SubnetReference ) (map [string ]interface {}, error ) {
558651 modelMap := make (map [string ]interface {})
559652 if model .CRN != nil {
560653 modelMap ["crn" ] = * model .CRN
@@ -581,20 +674,20 @@ func dataSourceIBMIsVirtualNetworkInterfaceSubnetReferenceToMap(model *vpcbetav1
581674 return modelMap , nil
582675}
583676
584- func dataSourceIBMIsVirtualNetworkInterfaceSubnetReferenceDeletedToMap (model * vpcbetav1 .SubnetReferenceDeleted ) (map [string ]interface {}, error ) {
677+ func dataSourceIBMIsVirtualNetworkInterfaceSubnetReferenceDeletedToMap (model * vpcv1 .SubnetReferenceDeleted ) (map [string ]interface {}, error ) {
585678 modelMap := make (map [string ]interface {})
586679 if model .MoreInfo != nil {
587680 modelMap ["more_info" ] = * model .MoreInfo
588681 }
589682 return modelMap , nil
590683}
591684
592- func dataSourceIBMIsVirtualNetworkInterfaceVirtualNetworkInterfaceTargetToMap (model vpcbetav1 .VirtualNetworkInterfaceTargetIntf ) (map [string ]interface {}, error ) {
593- if _ , ok := model .(* vpcbetav1 .VirtualNetworkInterfaceTargetShareMountTargetReference ); ok {
594- return dataSourceIBMIsVirtualNetworkInterfaceVirtualNetworkInterfaceTargetShareMountTargetReferenceToMap (model .(* vpcbetav1 .VirtualNetworkInterfaceTargetShareMountTargetReference ))
595- } else if _ , ok := model .(* vpcbetav1 .VirtualNetworkInterfaceTarget ); ok {
685+ func dataSourceIBMIsVirtualNetworkInterfaceVirtualNetworkInterfaceTargetToMap (model vpcv1 .VirtualNetworkInterfaceTargetIntf ) (map [string ]interface {}, error ) {
686+ if _ , ok := model .(* vpcv1 .VirtualNetworkInterfaceTargetShareMountTargetReference ); ok {
687+ return dataSourceIBMIsVirtualNetworkInterfaceVirtualNetworkInterfaceTargetShareMountTargetReferenceToMap (model .(* vpcv1 .VirtualNetworkInterfaceTargetShareMountTargetReference ))
688+ } else if _ , ok := model .(* vpcv1 .VirtualNetworkInterfaceTarget ); ok {
596689 modelMap := make (map [string ]interface {})
597- model := model .(* vpcbetav1 .VirtualNetworkInterfaceTarget )
690+ model := model .(* vpcv1 .VirtualNetworkInterfaceTarget )
598691 if model .Deleted != nil {
599692 deletedMap , err := dataSourceIBMIsVirtualNetworkInterfaceShareMountTargetReferenceDeletedToMap (model .Deleted )
600693 if err != nil {
@@ -616,19 +709,19 @@ func dataSourceIBMIsVirtualNetworkInterfaceVirtualNetworkInterfaceTargetToMap(mo
616709 }
617710 return modelMap , nil
618711 } else {
619- return nil , fmt .Errorf ("Unrecognized vpcbetav1 .VirtualNetworkInterfaceTargetIntf subtype encountered" )
712+ return nil , fmt .Errorf ("Unrecognized vpcv1 .VirtualNetworkInterfaceTargetIntf subtype encountered" )
620713 }
621714}
622715
623- func dataSourceIBMIsVirtualNetworkInterfaceShareMountTargetReferenceDeletedToMap (model * vpcbetav1 .ShareMountTargetReferenceDeleted ) (map [string ]interface {}, error ) {
716+ func dataSourceIBMIsVirtualNetworkInterfaceShareMountTargetReferenceDeletedToMap (model * vpcv1 .ShareMountTargetReferenceDeleted ) (map [string ]interface {}, error ) {
624717 modelMap := make (map [string ]interface {})
625718 if model .MoreInfo != nil {
626719 modelMap ["more_info" ] = * model .MoreInfo
627720 }
628721 return modelMap , nil
629722}
630723
631- func dataSourceIBMIsVirtualNetworkInterfaceVirtualNetworkInterfaceTargetShareMountTargetReferenceToMap (model * vpcbetav1 .VirtualNetworkInterfaceTargetShareMountTargetReference ) (map [string ]interface {}, error ) {
724+ func dataSourceIBMIsVirtualNetworkInterfaceVirtualNetworkInterfaceTargetShareMountTargetReferenceToMap (model * vpcv1 .VirtualNetworkInterfaceTargetShareMountTargetReference ) (map [string ]interface {}, error ) {
632725 modelMap := make (map [string ]interface {})
633726 if model .Deleted != nil {
634727 deletedMap , err := dataSourceIBMIsVirtualNetworkInterfaceShareMountTargetReferenceDeletedToMap (model .Deleted )
@@ -652,7 +745,7 @@ func dataSourceIBMIsVirtualNetworkInterfaceVirtualNetworkInterfaceTargetShareMou
652745 return modelMap , nil
653746}
654747
655- func dataSourceIBMIsVirtualNetworkInterfaceVPCReferenceToMap (model * vpcbetav1 .VPCReference ) (map [string ]interface {}, error ) {
748+ func dataSourceIBMIsVirtualNetworkInterfaceVPCReferenceToMap (model * vpcv1 .VPCReference ) (map [string ]interface {}, error ) {
656749 modelMap := make (map [string ]interface {})
657750 if model .CRN != nil {
658751 modelMap ["crn" ] = * model .CRN
@@ -679,15 +772,15 @@ func dataSourceIBMIsVirtualNetworkInterfaceVPCReferenceToMap(model *vpcbetav1.VP
679772 return modelMap , nil
680773}
681774
682- func dataSourceIBMIsVirtualNetworkInterfaceVPCReferenceDeletedToMap (model * vpcbetav1 .VPCReferenceDeleted ) (map [string ]interface {}, error ) {
775+ func dataSourceIBMIsVirtualNetworkInterfaceVPCReferenceDeletedToMap (model * vpcv1 .VPCReferenceDeleted ) (map [string ]interface {}, error ) {
683776 modelMap := make (map [string ]interface {})
684777 if model .MoreInfo != nil {
685778 modelMap ["more_info" ] = * model .MoreInfo
686779 }
687780 return modelMap , nil
688781}
689782
690- func dataSourceIBMIsVirtualNetworkInterfaceZoneReferenceToMap (model * vpcbetav1 .ZoneReference ) (map [string ]interface {}, error ) {
783+ func dataSourceIBMIsVirtualNetworkInterfaceZoneReferenceToMap (model * vpcv1 .ZoneReference ) (map [string ]interface {}, error ) {
691784 modelMap := make (map [string ]interface {})
692785 if model .Href != nil {
693786 modelMap ["href" ] = * model .Href
0 commit comments