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 }