@@ -25,6 +25,7 @@ import (
2525
2626 "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/portsbinding"
2727 "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/portsecurity"
28+ "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/portstrustedvif"
2829 "github.com/gophercloud/gophercloud/v2/openstack/networking/v2/ports"
2930 corev1 "k8s.io/api/core/v1"
3031 "k8s.io/utils/ptr"
@@ -318,7 +319,14 @@ func (actuator portActuator) CreateResource(ctx context.Context, obj *orcv1alpha
318319 orcerrors .Terminal (orcv1alpha1 .ConditionReasonInvalidConfiguration , fmt .Sprintf ("Invalid value %s" , resource .PortSecurity )))
319320 }
320321
321- osResource , err := actuator .osClient .CreatePort (ctx , & portSecurityOpts )
322+ portTrustedOpts := portstrustedvif.PortCreateOptsExt {
323+ CreateOptsBuilder : portSecurityOpts ,
324+ }
325+ if resource .TrustedVIF != nil {
326+ portTrustedOpts .PortTrustedVIF = resource .TrustedVIF
327+ }
328+
329+ osResource , err := actuator .osClient .CreatePort (ctx , & portTrustedOpts )
322330 if err != nil {
323331 // We should require the spec to be updated before retrying a create which returned a conflict
324332 if orcerrors .IsConflict (err ) {
@@ -416,6 +424,7 @@ func (actuator portActuator) updateResource(ctx context.Context, obj orcObjectPT
416424
417425 updateOpts = handlePortBindingUpdate (updateOpts , resource , osResource )
418426 updateOpts = handlePortSecurityUpdate (updateOpts , resource , osResource )
427+ updateOpts = handlePortTrustedVIFUpdate (updateOpts , resource , osResource )
419428
420429 needsUpdate , err := needsUpdate (updateOpts )
421430 if err != nil {
@@ -587,6 +596,20 @@ func handleAdminStateUpUpdate(updateOpts *ports.UpdateOpts, resource *resourceSp
587596 }
588597}
589598
599+ func handlePortTrustedVIFUpdate (updateOpts ports.UpdateOptsBuilder , resource * resourceSpecT , osResource * osResourceT ) ports.UpdateOptsBuilder {
600+ trusted := resource .TrustedVIF
601+ if trusted != nil {
602+ if osResource .PortTrustedVIF == nil || * trusted != * osResource .PortTrustedVIF {
603+ updateOpts = portstrustedvif.PortUpdateOptsExt {
604+ UpdateOptsBuilder : updateOpts ,
605+ PortTrustedVIF : trusted ,
606+ }
607+ }
608+ }
609+
610+ return updateOpts
611+ }
612+
590613type portHelperFactory struct {}
591614
592615var _ helperFactory = portHelperFactory {}
0 commit comments