github.com/verrazzano/verrazzano@v1.7.1/tools/oam-converter/pkg/resources/workloads/resources.go (about)

     1  // Copyright (c) 2023, Oracle and/or its affiliates.
     2  // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
     3  
     4  package workloads
     5  
     6  import (
     7  	"fmt"
     8  	coallateHosts "github.com/verrazzano/verrazzano/pkg/ingresstrait"
     9  	azp "github.com/verrazzano/verrazzano/tools/oam-converter/pkg/resources/authorizationpolicy"
    10  	"github.com/verrazzano/verrazzano/tools/oam-converter/pkg/types"
    11  	istioclient "istio.io/client-go/pkg/apis/networking/v1alpha3"
    12  	vsapi "istio.io/client-go/pkg/apis/networking/v1beta1"
    13  	clisecurity "istio.io/client-go/pkg/apis/security/v1beta1"
    14  	"sigs.k8s.io/controller-runtime/pkg/client"
    15  )
    16  
    17  // CreateIngressChildResourcesFromWorkload create child resources from workload
    18  func CreateIngressChildResourcesFromWorkload(cli client.Client, conversionComponent *types.ConversionComponents, gateway *vsapi.Gateway, allHostsForTrait []string) ([]*vsapi.VirtualService, []*istioclient.DestinationRule, []*clisecurity.AuthorizationPolicy, error) {
    19  	var virtualServices []*vsapi.VirtualService
    20  	var destinationRules []*istioclient.DestinationRule
    21  	var authzPolicies []*clisecurity.AuthorizationPolicy
    22  	if conversionComponent.IngressTrait != nil {
    23  		rules := conversionComponent.IngressTrait.Spec.Rules
    24  		for index, rule := range rules {
    25  
    26  			vsHosts, err := coallateHosts.CreateHostsFromIngressTraitRule(cli, rule, conversionComponent.IngressTrait, conversionComponent.AppName, conversionComponent.AppNamespace)
    27  
    28  			if err != nil {
    29  				print(err)
    30  				return nil, nil, nil, err
    31  			}
    32  
    33  			vsName := fmt.Sprintf("%s-rule-%d-vs", conversionComponent.IngressTrait.Name, index)
    34  			drName := fmt.Sprintf("%s-rule-%d-dr", conversionComponent.ComponentName, index)
    35  			authzPolicyName := fmt.Sprintf("%s-rule-%d-authz", conversionComponent.ComponentName, index)
    36  			virtualService, err := createVirtualServiceFromWorkload(conversionComponent.AppNamespace, rule, vsHosts, vsName, gateway, conversionComponent.Helidonworkload, conversionComponent.Service)
    37  			if err != nil {
    38  				return nil, nil, nil, err
    39  			}
    40  			virtualServices = append(virtualServices, virtualService)
    41  			destinationRule, err := createDestinationRuleFromWorkload(conversionComponent.IngressTrait, rule, drName, conversionComponent.Helidonworkload, conversionComponent.Service)
    42  			if err != nil {
    43  				return nil, nil, nil, err
    44  			}
    45  			destinationRules = append(destinationRules, destinationRule)
    46  			authzPolicy, err := azp.CreateAuthorizationPolicies(conversionComponent.IngressTrait, rule, authzPolicyName, allHostsForTrait)
    47  			if err != nil {
    48  				return nil, nil, nil, err
    49  			}
    50  			authzPolicies = append(authzPolicies, authzPolicy)
    51  
    52  		}
    53  		return virtualServices, destinationRules, authzPolicies, nil
    54  	}
    55  	return nil, nil, nil, nil
    56  }