...

Source file src/github.com/GoogleCloudPlatform/k8s-config-connector/pkg/test/servicemetadataloader/loader.go

Documentation: github.com/GoogleCloudPlatform/k8s-config-connector/pkg/test/servicemetadataloader

     1  // Copyright 2022 Google LLC
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package testservicemetadataloader
    16  
    17  import (
    18  	"github.com/GoogleCloudPlatform/k8s-config-connector/pkg/dcl/metadata"
    19  )
    20  
    21  func FakeServiceMetadata() []metadata.ServiceMetadata {
    22  	return []metadata.ServiceMetadata{
    23  		{
    24  			Name:       "Test1",
    25  			APIVersion: "v1alpha1",
    26  			DCLVersion: "beta",
    27  			Resources: []metadata.Resource{
    28  				{Kind: "Test1Foo", Releasable: true},
    29  				{Kind: "Test1Bar", Releasable: true},
    30  				{Kind: "Test1IDPConfig", DCLType: "IdpConfig", Releasable: true},
    31  				{Kind: "Test1NotYetSupportedKind", Releasable: false},
    32  				{Kind: "Test1NoLabelsExtension", Releasable: true},
    33  			},
    34  		},
    35  		{
    36  			Name:       "Test2",
    37  			APIVersion: "v1alpha1",
    38  			DCLVersion: "beta",
    39  			Resources: []metadata.Resource{
    40  				{Kind: "Test2Baz", Releasable: true},
    41  				{Kind: "Test2NoName", Releasable: true},
    42  			},
    43  		},
    44  		{
    45  			Name:                 "Test3",
    46  			APIVersion:           "v1alpha1",
    47  			DCLVersion:           "beta",
    48  			ServiceNameUsedByDCL: "DCLTest3",
    49  			Resources: []metadata.Resource{
    50  				{Kind: "Test3Qux", Releasable: true},
    51  			},
    52  		},
    53  		{
    54  			Name:       "Test4",
    55  			APIVersion: "v1alpha1",
    56  			DCLVersion: "beta",
    57  			Resources: []metadata.Resource{
    58  				{Kind: "Test4ProjectContainer", SupportsContainerAnnotations: true, Releasable: true},
    59  				{Kind: "Test4OrganizationContainer", SupportsContainerAnnotations: true, Releasable: true},
    60  				{Kind: "Test4NoContainer", Releasable: true},
    61  				// TODO(b/186159460): Remove the SupportsHierarchicalReferences
    62  				// flag below once all resources support hierarchical
    63  				// references
    64  				{Kind: "Test4NoContainerExtensionButSupportsContainers", SupportsContainerAnnotations: true, SupportsHierarchicalReferences: true, Releasable: true},
    65  				{Kind: "Test4NoContainerExtensionAndSupportsContainersButHasNoHierarchicalRefs", SupportsContainerAnnotations: true, Releasable: true},
    66  			},
    67  		},
    68  		{
    69  			Name:       "Test5",
    70  			APIVersion: "v1alpha1",
    71  			DCLVersion: "beta",
    72  			Resources: []metadata.Resource{
    73  				// TODO(b/186159460): Remove the SupportsHierarchicalReferences
    74  				// flags below once all resources support hierarchical
    75  				// references
    76  				{Kind: "Test5NoHierarchicalRef", Releasable: true},
    77  				{Kind: "Test5ProjectRef", Releasable: true, SupportsHierarchicalReferences: true},
    78  				{Kind: "Test5FolderRef", Releasable: true, SupportsHierarchicalReferences: true},
    79  				{Kind: "Test5OrganizationRef", Releasable: true, SupportsHierarchicalReferences: true},
    80  				{Kind: "Test5MultipleRefs", Releasable: true, SupportsHierarchicalReferences: true},
    81  				{Kind: "Test5TwoRefs", Releasable: true, SupportsHierarchicalReferences: true},
    82  			},
    83  		},
    84  		{
    85  			Name:       "Test6",
    86  			APIVersion: "v1alpha1",
    87  			DCLVersion: "beta",
    88  			Resources: []metadata.Resource{
    89  				// TODO(b/186159460): Remove the SupportsHierarchicalReferences
    90  				// flags below once all resources support hierarchical
    91  				// references
    92  				{Kind: "Test6NoContainerOrHierarchicalRef", Releasable: true},
    93  				{Kind: "Test6OnlyContainer", Releasable: true, SupportsContainerAnnotations: true},
    94  				{Kind: "Test6OnlyHierarchicalRef", Releasable: true, SupportsHierarchicalReferences: true},
    95  				{Kind: "Test6BothContainerAndHierarchicalRef", Releasable: true, SupportsContainerAnnotations: true, SupportsHierarchicalReferences: true},
    96  			},
    97  		},
    98  		{
    99  			Name:       "Test7",
   100  			APIVersion: "v1alpha1",
   101  			DCLVersion: "beta",
   102  			Resources: []metadata.Resource{
   103  				{Kind: "Test7AlphaResource", Releasable: true, DCLVersion: "alpha"},
   104  				{Kind: "Test7BetaResource", Releasable: true},
   105  				{Kind: "Test7GaResource", Releasable: true, DCLVersion: "ga"},
   106  			},
   107  		},
   108  	}
   109  }
   110  
   111  // FakeServiceMetadataWithHierarchicalResources returns a ServiceMetadata list
   112  // which includes hierarchical resources to allow for the testing of resources
   113  // that reference hierarchical resources (e.g. "Cloudresourcemanager/Project")
   114  func FakeServiceMetadataWithHierarchicalResources() []metadata.ServiceMetadata {
   115  	return append(FakeServiceMetadata(),
   116  		metadata.ServiceMetadata{
   117  			Name:                 "ResourceManager",
   118  			APIVersion:           "v1beta1",
   119  			DCLVersion:           "ga",
   120  			ServiceNameUsedByDCL: "cloudresourcemanager",
   121  			Resources: []metadata.Resource{
   122  				{Kind: "Project", Releasable: false},
   123  				{Kind: "Folder", Releasable: false},
   124  				{Kind: "Organization", Releasable: false},
   125  				{Kind: "BillingAccount", Releasable: false},
   126  			},
   127  		})
   128  }
   129  
   130  func NewForUnitTest() metadata.ServiceMetadataLoader {
   131  	return metadata.NewFromServiceList(FakeServiceMetadata())
   132  }
   133  

View as plain text